这篇文章上次修改于 311 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

做好这 16 个方向,逐步搭建出团队的 vue3 前端架构
前端进阶之旅
2025年01月23日 08:59 中国香港
前言
由于 vue3.2 版本的发布,


复制代码
4.4 封装 SVG 的图标组件
svg 图标比较小,而且都是可读的 xml 文本,所以我们把它直接放在项目中即可,通过 vite-plugin-svg-icons 插件,实现自动引入 svg 图标。

配置 vite.config.ts:

plugins: [
viteSvgIcons({

iconDirs: [resolve(process.cwd(), 'src/assets/icons')],
symbolId: 'icon-[dir]-[name]',

}),
]
复制代码
封装一个 vue 组件:


复制代码
首先将下载的 .svg 图标放入 @/assets/icons 文件夹下


复制代码
name 放置在 @/assets/icons 文件夹下的文件名。
color 颜色填充,使用此项会默认覆盖图标颜色。
5.按需自动引入组件
unplugin-vue-components[77] 是一款非常强大的插件(极力推荐),核心功能就是帮助你自动按需引入组件,Tree-shakable,只注册你使用的组件。这里说一下他的两个核心使用方式和配置方式。

此插件不仅支持 vue3,同时也支持 vue2,并且支持 Vite、Webpack、Vue CLI、Rollup。

5.1 安装与配置
安装:

npm i unplugin-vue-components -D
复制代码
配置:

// vite.config.ts
import Components from 'unplugin-vue-components/vite'

export default defineConfig({
plugins: [

Components({ /* options */ }),

],
})
复制代码
这里的 options 可以配置一些选项,后面提到的组件库注册会使用到。

5.2 改变全局组件注册方式
我们通常将全局的组件封装在 @/src/components 中,然后通过 app.component() 注册全局组件。使用此插件后,无需手写注册,直接在模板中使用组件即可:

这里引入官方的示例:

复制代码
自动编译为:

复制代码
5.3 自动引入组件库
在使用组件库时,常规组件我们也会注册到全局,如果使用局部注册由于页面中会使用到多个组件,会非常麻烦,所以这个功能绝佳,例如我们使用 ant-design-vue 组件库。

直接在模板中使用即可,无需手动注册或局部引用:


复制代码
当然,你还需要在 vite 中引入它的解析器:

import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
plugins: [

Components({
  resolvers: [
    AntDesignVueResolver(),
  ]
})

],
})
复制代码
目前支持的解析器,根据你的喜好去选择:

Ant Design Vue[78]
Element Plus[79]
Element UI[80]
Headless UI[81]
IDux[82]
Naive UI[83]
Prime Vue[84]
Vant[85]
VEUI[86]
Varlet UI[87]
View UI[88]
Vuetify[89]
VueUse Components[90]
Quasar[91]
6.样式
项目中最好使用通用样式,可以创建 src/styles 目录存放,这里推荐一些分类:

styles
├── antd # 组件库样式覆盖,命名自取,这里以 ant design 为例
├── color.less # 颜色
├── index.less # 入口
├── global.less # 公共类
├── transition.less # 动画相关
└── variable.less # 变量
复制代码
6.1 预设基础样式
相信用过 normalize[92] 的同学不在少数,它可以重置 css 样式,使各浏览器效果保持一致。后面的章节会提到 tailwind.css,它内置了预设样式重置的功能,与 normalize 还是有一定的区别,有兴趣的同学可以了解一下[93]。

6.2 CSS 预处理器
虽然 vite 原生支持 less/sass/scss/stylus,但是你必须手动安装他们的预处理器依赖,例如:

npm install -D less
复制代码
如何选择预处理器?

推荐使用你是所使用的组件库的样式语言,因为 css 预处理器学会一种后,入手其他几乎没有学习成本。

6.3 开启 scoped
没有加 scoped 属性,会编译成全局样式,造成全局污染。


复制代码
6.4 深度选择器
有时我们可能想明确地制定一个针对子组件的规则。

如果你希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 >>> 操作符。有些像 Sass 之类的预处理器无法正确解析 >>>。这种情况下你可以使用 /deep/ 或 ::v-deep 操作符取而代之——两者都是 >>> 的别名,同样可以正常工作。

7.布局
页面整体布局是一个产品最外层的框架结构,往往会包含导航、页脚、侧边栏等。在页面之中,也有很多区块的布局结构。在真实项目中,页面布局通