六. Vue CLI详解

1. Vue CLI理解

1.1 什么是Vue CLI

若是你只是简单写几个Vue的Demo程序, 那么你不须要Vue CLI,若是你在开发大型项目那么你须要它, 而且必然须要使用Vue CLIjavascript

使用Vue.js开发大型应用时咱们须要考虑代码目录结构、项目结构和部署、热加载、代码单元测试等事情。若是每一个项目都要手动完成这些工做那无以效率比较低效,因此一般咱们会使用一些脚手架工具来帮助完成这些事情。html

CLI是什么意思?Command-Line Interface,翻译为命令行界面,可是俗称脚手架。Vue CLI是一个官方发布 Vue.js 项目脚手架,使用它能够快速搭建Vue开发环境以及对应的webpack配置。vue

1.2 Vue CLI使用前提 - Node & Webpack

安装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
1.3 安装Vue脚手架
//Vue CLI2
npm install -g vue-cli
//Vue ClI3
npm install -g @vue/cli
1.4 初始化项目
//Vue CLI2
vue init webpack my-project
//Vue CLI3
vue create my-project

注:当咱们安装了Vue CLI3的版本,若是须要想按照Vue CLI2的方式初始化项目时不能够的。可使用以下方式在安装Vue CLI3的基础上拉取2.x的模板。

image-20201201105849864

2. Vue CLI2详解

2.1 初始化设置
image-20201201112601023
2.2 Runtime-Compiler和Runtime-only的区别

简单总结

若是在以后的开发中你依然使用template,就须要选择Runtime-Compiler。若是你以后的开发中使用的是.vue文件夹开发,那么能够选择Runtime-only

image-20201201114220515

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。咱们来看下面的一幅图。

img01

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详解)

2.3 目录结构
image-20201201114034547
2.4 npm run build流程
img02
2.5 npm run dev流程
img03
2.6 修改配置:webpack.base.conf.js起别名
resolve: {
	extensions: ['.js','.vue','.json'],
	alias: {
		'@': resolve('src'),
		'pages': resolve('src/pages'),
		'common': resolve('src/common'),
		'components': resolve('src/components'),
		'network': resolve('src/network'),
	}
}

3. Vue CLI3详解

vue-cli 3 与 2 版本有很大区别

  • vue-cli 3 是基于 webpack 4 打造,vue-cli 2 仍是 webapck 3
  • vue-cli 3 的设计原则是“ 0配置”,移除了配置文件根目录下的build和config等目录
  • vue-cli 3 提供了 vue ui 命令,提供了可视化配置,更加人性化
  • 移除了static文件夹,新增了public文件夹,而且index.html移动到public中

初始化

image-20201202012545807

目录结构

image-20201201215909247

vue-cli 3的配置文件放哪里去了?

image-20201201220251780

注:在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')
相关文章
相关标签/搜索