若是你只是简单写几个Vue的Demo程序, 那么你不须要Vue CLI
,若是你在开发大型项目那么你须要它, 而且必然须要使用Vue CLI
。javascript
使用Vue.js开发大型应用时咱们须要考虑代码目录结构、项目结构和部署、热加载、代码单元测试等事情。若是每一个项目都要手动完成这些工做那无以效率比较低效,因此一般咱们会使用一些脚手架工具来帮助完成这些事情。html
CLI是什么意思?Command-Line Interface
,翻译为命令行界面,可是俗称脚手架。Vue CLI
是一个官方发布 Vue.js 项目脚手架,使用它能够快速搭建Vue开发环境以及对应的webpack配置。vue
安装Node.jsjava
能够直接在官方网站中下载安装node
Node环境要求8.9以上或者更高版本webpack
NPMweb
NPM的全称是Node Package Manager
,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。后续咱们会常常使用NPM来安装一些开发过程当中依赖包。vue-cli
CNPM安装npm
因为国内直接使用 npm 的官方镜像是很是慢的,这里推荐使用淘宝 NPM 镜像。你可使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:json
npm install cnpm -g --registry=https://registry.npm.taobao.org
这样就可使用 cnpm 命令来安装模块了
cnpm install [name]
Webpack
Vue.js官方脚手架工具就使用了webpack模板。webpack对全部的资源会压缩等优化操做,它在开发过程当中提供了一套完整的功能,可以使得咱们开发过程当中变得高效。
Webpack的全局安装
npm install webpack -g
//Vue CLI2 npm install -g vue-cli //Vue ClI3 npm install -g @vue/cli
//Vue CLI2 vue init webpack my-project //Vue CLI3 vue create my-project
注:当咱们安装了
Vue CLI3
的版本,若是须要想按照Vue CLI2
的方式初始化项目时不能够的。可使用以下方式在安装Vue CLI3
的基础上拉取2.x的模板。
简单总结
若是在以后的开发中你依然使用template,就须要选择Runtime-Compiler
。若是你以后的开发中使用的是.vue文件夹开发,那么能够选择Runtime-only
render和template
使用Runtime-Compiler
模式时
new Vue({ el: '#app', components: { App }, template: '<App/>' })
使用Runtime-only
模式时
new Vue({ el: '#app', render: h => h(App) })
为何会出现这样的差别呢?咱们须要先理解Vue应用程序是如何运行起来的,Vue中的模板如何最终渲染成真实DOM。咱们来看下面的一幅图。
render函数的使用
//组件对象 const cpn = { template: '<div>{{message}},我是cpn组件</div>', data() { return { message:'hello' } } } //这里传来的实参名字叫createElement,而模板生成使用形参h去接收,为何要取名h? new Vue({ el: '#app', render: (createElement) => { //1.使用方式一:咱们这里建立出来的element就会替换#app元素 // return createElement('标签','相关数据对象(能够不传),即标签的属性',['内容数组']); //1.1 render函数基本使用 // return createElement('div',{class: 'box'},['polaris']); //1.2 嵌套render函数 // return createElement('div',{class: 'box'},[ // 'polaris',createElement('h2',['我是标题啊']) // ]); //1.3 传入一个组件对象,注意这里的cpn组件须要template编译器 return createElement(cpn); } })
注意:
vue-template-compiler
会把.vue文件中的template转化成render函数,不须要使用template编译器了。(vue-template-compiler
是什么请回看 Webpack详解)
resolve: { extensions: ['.js','.vue','.json'], alias: { '@': resolve('src'), 'pages': resolve('src/pages'), 'common': resolve('src/common'), 'components': resolve('src/components'), 'network': resolve('src/network'), } }
vue-cli 3 与 2 版本有很大区别
初始化
目录结构
vue-cli 3的配置文件放哪里去了?
注:在vue-cli3若是咱们要修改配置,有三种方式
① 启动配置服务器: vue ui命令
② 在项目根目录下建立一个
vue.config.js
文件,写的配置会和默认配置合并做为webpack配置。③ 隐藏起来的配置:
node_nodules/@vue/cli-service/lib/webpack.config.js
main.js理解
import Vue from 'vue' import App from './App.vue' //生产阶段打印的一些提示信息,在开发阶段通常不须要即设为false Vue.config.productionTip = false //两种不一样的写法异同 ↓ new Vue({ //el与下面的.$mount('#app')没有区别 //vue底层只是多了一行代码,即若是配置了el则获取el的值去执行.$mount('获得的值') //即无论有没有el,最终都会执行.$mount('xx') el: '#app' render: function(h) { return h(App) } }) new Vue({ render: h => h(App), }).$mount('#app')