小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前面的学习中我们使用 Vue
的过程都是在 html
文件中,通过 template
编写自己的模板、脚本逻辑、样式等,这是为了方便讲解那些知识点;
但是随着项目越来越复杂,我们会采用组件化的方式进行开发:
- 这就意味着每个组件都会有自己的模板、脚本逻辑、样式等,这时如果我们还是把代码放在一个
HTML
文件中,就显得有点复杂了; - 所以真实开发中,我们必然是会对代码进行抽离的;
- 当然,我们依然可以把它们抽离到单独的
JavaScript
、CSS
文件中,但这样做意味着一个组件的内容可能要抽离成多个文件,这就显得不太优雅了; - 此外,前面我们代码中的
script
是在一个全局的作用域下,很容易出现命名冲突的问题; - 而且,前面我们写的都是些
ES6
的代码,但为了适配一些浏览器,我们又必须使用ES5
的语法去编写代码; - 最后,在我们编写完代码之后,还需要通过工具对代码进行构建、压缩、打包;
所以在真实开发中,我们可以通过一个后缀名为
.vue
的Single File Components
(单文件组件)文件把属于一个组件的内容抽离出去,之后可以使用Webpack
或者Vite
或者rollup
等构建工具来对其进行处理,这样一来,上述问题就能得到解决了。
🙌🌰(举个栗子):
如果要对前面代码中的 ComponentA
组件的有关内容进行抽离,使用 SFC
的方式来做时,我们可能就会抽出来一个 component-a.vue
文件(关于如何命名的问题我们后面讲项目时再说),在这个文件中,我们会编写属于这个组件自己的 template
、script
以及 style
:
1. 单文件组件的特点
在这个单文件组件中,我们可以获得非常多的特性:
- 代码的高亮;
ES6
、CommonJS
的模块化能力;- 组件作用域的
CSS
; - 可以使用预处理器来构建更加丰富的组件,比如
TypeScript
、Babel
、Less
、Sass
等;
2. 如何支持 SFC
通过这个 .vue
文件(SFC
),我们把一个组件的有关内容编写在了一起,但又有了一个新的问题:怎么把这个 .vue
文件中的内容转变成我们最终的代码,或者说怎么转成浏览器认识的代码呢(浏览器不认识后缀名为 .vue
的文件,也不认识 .vue
文件中的代码编写格式)?要想以 .vue
文件的模式去编写代码同时让浏览器最终能认识这些代码,我们就需要借助一些工具来实现。
我们可以使用 Webpack
/Vite
/rollup
等工具对 .vue
文件中的代码进行构建,最终打包成浏览器能直接识别的 JavaScript
代码文件,然后可以把打包后的代码文件部署到服务器中,之后用户在进行浏览时,就应该是从服务器中请求下来代码,而这时请求下来的代码就已经是浏览器能够识别的代码了。最后在用户的浏览器中就能看到我们真正想要的效果了。
所以,下面我们就需要学习如何使用这些构建工具了。这里我们主要学习 Webpack
和 Vite
这两个构建工具的有关知识。
如果我们想要使用这一 SFC
(.vue
文件),比较常见的是两种方式:
- 方式一:使用
Vue CLI
(本质上还是依赖Webpack
的)来创建项目,项目会默认帮助我们配置好所有的配置选项,可以在其中直接使用.vue
文件; - 方式二:自己使用
Webpack
或Vite
或rollup
这类打包工具,对代码文件进行打包处理;
在学习阶段,为了更好地理解 Vue CLI
的原理及其打包项目的过程,接下来会先讲解如何使用 Webpack
搭建一个简单的 Vue
的开发环境(之后我们再去使用脚手架(Vue CLI
)时,里面的很多东西就能理解了,包括掌握一些脚手架的配置)。
但最终,无论是后期我们做项目,还是在公司进行开发,通常都会采用 Vue CLI 的方式来完成。