使用 Vue 3 和 TypeScript 创建的单文件组件(SFC),使用了 TypeScript 和 Composition API 的 setup
语法糖。模板部分渲染了一个名为 LookForward
的子组件,样式部分目前为空但被标记为作用域限定。
以下是代码的详细解读:
1. <script setup lang="ts">
-
**
<script>
**:定义组件的逻辑部分。 -
**
setup
**:这是 Vue 3 Composition API 的语法糖,表示组件将使用setup
函数来处理逻辑。 -
**
lang="ts"
**:指定脚本部分使用 TypeScript 编写。
2. <template>
-
**
<template>
**:定义组件的模板部分,即 HTML 结构。 -
**
<LookForward />
**:这是一个自定义组件,通过其标签名<LookForward>
渲染到页面上。这个组件可能在项目的其他文件中定义并导出。
3. <style scoped>
-
**
<style>
**:定义组件的样式部分。 -
**
scoped
**:表示这些样式仅作用于当前组件,不会污染全局或其他组件的样式。
<LookForward />
显示一个带有图标的界面,文字内容可以通过国际化插件动态切换语言。它使用了 Flexbox 布局来实现居中和间距控制,同时通过插槽提供了灵活性,允许父组件自定义内容。
脚本部分(<script setup lang="ts">
)
import { $t } from '@/locales';
defineOptions({
name: 'LookForward'
});
-
**
<script setup lang="ts">
**:使用了 Vue 3 的组合式 API(Composition API)的语法糖,setup
表示这是一个组合式 API 的组件,lang="ts"
表示使用 TypeScript 编写。 -
**
import { $t } from '@/locales';
**:从项目的国际化(i18n)配置文件中导入$t
函数,用于获取不同语言的文本。 -
**
defineOptions
**:定义组件的选项,这里设置了组件的名称为'LookForward'
,这在调试和路由中可能会用到。
模板部分(<template>
)
<template>
<div class="size-full min-h-520px flex-col-center gap-24px overflow-hidden">
<div class="flex text-400px text-primary">
<SvgIcon local-icon="expectation" />
</div>
<slot>
<h3 class="text-28px text-primary font-500">{{ $t('common.lookForward') }}</h3>
</slot>
</div>
</template>
- 外层
div
:class="size-full min-h-520px flex-col-center gap-24px overflow-hidden"
:-
size-full
:可能是一个自定义样式类,用于设置元素的宽度和高度为 100%。 -
min-h-520px
:设置最小高度为 520 像素。 -
flex-col-center
:使用 Flexbox 布局,子元素垂直居中排列。 -
gap-24px
:子元素之间的间距为 24 像素。 -
overflow-hidden
:超出部分隐藏。
-
- 图标部分:
<div class="flex text-400px text-primary">
:-
flex
:使用 Flexbox 布局。 -
text-400px
:字体大小为 400 像素。 -
text-primary
:使用主色调。
-
-
<SvgIcon local-icon="expectation" />
:渲染一个 SVG 图标组件,local-icon="expectation"
指定了图标的名称。
- 内容部分:
-
<slot>
:定义一个插槽,允许父组件传入自定义内容。 - 默认内容是一个
h3
标签:-
class="text-28px text-primary font-500"
:字体大小为 28 像素,主色调,字体粗细为 500。 -
{{ $t('common.lookForward') }}
:使用国际化插件获取对应的文本。
-
-
样式部分(<style scoped>
)
<style scoped></style>
-
这里没有具体的样式规则,
scoped
表示这些样式只作用于当前组件,避免样式污染其他组件。