什么是VUE CLI
如果你只是简单写几个Vue的Demo程序,那么你不需要Vue CLI.
如果你在开发大型项目,那么你需要,并且必然需要使用Vue CLI
使用Vue.js开发大型应用时,我们需要考虑代码目录结构、项目结构和部署、热加载、代码单元测试等事情。
如果每个项目都需要手动完成这些工作,那无疑效率比较低效,所以通常我们会使用一些脚手架工具来帮助完成这些事情。
CLI是什么意思?
CLI是Command-Line Interface,翻译为命令行界面,但是俗称脚手架。
Vue CLI是一个官方发布vue.js项目脚手架
使用vue-cli可以快速搭建Vue开发环境以及的webpack配置。
VUE CLI使用前提 - Node
安装nodejs
直接在官网中下载安装:https://nodejs.org/zh-cn/
检测安装的版本
默认情况下自动安装Node和NPM
Node环境要求8.9以上或者更高版本
node -v
什么是NPM?
npm的全称是Node Package Manager
是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准
后续我们会经常使用NPM来安装一些开发过程中的依赖包
拓展:cnpm安装
由于国内直接使用npm的官方镜像是非常慢的,这里推荐使用淘宝NPM镜像
你可以使用淘宝定制的cnpm(gzip压缩支持)命令行工具代替 默认的npm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
这样就可以使用cnpm命令来安装模块了。
cnpm install [name]
VUE CLI使用前提 - webpack
Vue.js官方脚手架工具就使用了webpack模板
对所有的资源会压缩等优化操作
它在开发过程中提供了一套完整的功能,能够使我们开发过程中变的高效。
webpack的全局安装
npm install webpack -g
Vue CLI的使用
安装Vue脚手架
npm install -g @vue/cli
查看Vue CLI版本
vue -V
拉取 2.x 模板 (旧版本)
Vue CLI >= 3 和旧版使用了相同的 vue
命令,所以 Vue CLI 2 (vue-cli
) 被覆盖了。如果你仍然需要使用旧版本的 vue init
功能,你可以全局安装一个桥接工具:
npm install -g @vue/cli-init
# `vue init` 的运行效果将会跟 `vue-cli@2.x` 相同
vue init webpack my-project
Vue CLI2初始化项目
vue init webpack my-project
project name (项目的名称)
project description(A Vue.js project)项目描述信息
Author 作者
Vue build
1.Runtime * Compiler
2.Runtime-only
Install vue-router 是否安装路由
use ESLint to lint your code? 是否使用ESLint 语法规范
Pick an ESLint preset 选择规范
Set up unit tests 是否在项目中集成单元测试
Vue CLI3初始化项目
vue create my-project
vue-cli 3 与 2 版本的区别
vue-cli 3 是基于 webpack 4 打造,vue-cli 2 还是 webpack 3
vue-cli 3 的设计原则是 “ 0 配置”,移除的配置文件根目录下的,build和config等目录
vue-cli 3 提供了vue ui命令,提供了可视化配置,更加人性化
移除了static文件夹,新增了public文件夹,并且index.html移动到public中
Vue创建项目中的 runtime-compiler 和 runtime-only 两种模式
一、问题
在使用 vue-cli 脚手架构建项目时,会遇到一个构建选项 Vue build,有两个选项,Runtime + Compiler和Runtime-only:
· Runtime + Compiler: recommended for most users
(运行程序+编译器:推荐给大多数用户)
· Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specificHTML) are ONLY allowed in .vue files - render functions are required elsewhere
(仅运行程序: 比上面那种模式轻大约 6KB min+gzip,但是 template (或任何特定于vue的html)只允许在.vue文件中使用——其他地方用需要 render 函数)
其实构建时的英文解释已经很简洁清晰了,但是第一次看的话或者不了解英文可能还是会比较 懵逼
下面是对两种模式详细的比较与解释
二、区别
1、runtime-only 比 runtime-compiler 轻 6kb
2、runtime-only 运行更快
3、runtime-only 其实只能识别render函数,不能识别template,.vue文件中的也是被 vue-template-compiler 翻译成了render函数 ,所以runtime-only只能在.vue里写 template
三、解释
1、两种模式生成的 脚手架 即(代码模板)其实区别只有在 main.js 中,其他都是一样的:
可以发现一个 是用 template + component 而另一个 则是 用 render 函数
2、render函数: h => h(App) :
简单地说就是 h 函数就是 createElement 函数,用于创建 虚拟DOM
3、runtime + compiler 中 Vue 的运行过程:
(1)首先将vue中的template模板进行解析解析成abstract syntax tree (ast)抽象语法树
(2)将抽象语法树在编译成render函数
(3)将render函数再翻译成virtual dom 虚拟dom
(4)将虚拟dom显示在浏览器上
4、runtime-only 更快的原因:
runtime-only比runtime-compiler更快,因为它省略了vue内部过程中的第一个过程,如果是runtime-compiler
那么main.js中就会出现template从而需要过程一导致增加了一个过程,同时增加了大小
而 runtime-only 模式中不是没有写 template ,只是把 template 放在了.vue 的文件中了
并有一个叫 vue-template-compiler的在开发依赖时将.vue文件中的 template 解析成 render 函数了
因为是开发依赖,不在最后生产中,所以最后生产出来的运行的代码没有template