什么是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

    • NPM安装 (推荐)
    • 官网安装
  • 检测安装的NodeJS版本
    • 使用脚手架需要Node环境8.9以上的版本
  • 什么是NPM
    • NPM 全称是 Node Package Manager
    • 就是一个NodeJS包管理和分发工具, 已经成为了非官方的发布Node模块的标准
    • 后续会经常使用NPM安装一些开发过程的依赖包

使用Vue CLI的前提 --Webpack

  • Vue.js官方脚手架工具就是使用webpack模板的

    • webpack可以对所有资源进行压缩等优化操作
    • 在开发过程中提供了一套完整的功能, 是开发变得更加高效
  • webpack的全局安装
    • npm install webpack -g

Vue CLI的使用

  • 安装Vue脚手架

    • npm install @vue/cli -g
    • 注意默认安装的是Vue CLI4的版本, 如果需要安装Vue CLI2的方式初始化项目语法是不可以的
  • 如果需要用Vue CLI2的方式搭建脚手架

    • Vue CLI >= 3 和旧版使用了相同的 vue 命令,所以 Vue CLI 2 (vue-cli) 被覆盖了。如果你仍然需要使用旧版本的 vue init 功能,你可以全局安装一个桥接工具:
    • npm install -g @vue/cli-init
  • Vue CLI2初始化项目

    • vue init webpack my-project (my-project指的是项目名字)
  • Vue CLI>=3 初始化项目

    • vue create my-project (my-project指的是项目名字)

为了深入地学习脚手架, 本文会交替编写Vue CLI2 和 Vue CLI3

  • Vue CLI2 初始化项目详解
// 命令行输入
vue init webpack vuecli2test  // 意思是在该文件目录下 创建一个vuecli2test的项目
Project name // 项目名字, 默认是跟上面创建的项目名字相同
Project description // 项目描述
Auther // 项目作者
Vue build // 项目运行的vue版本, 选择是运行时版本还是完整版本
Install vue-router? // 是否安装vue-router 即是vue路由
Use ESLint to list your code? // 是否使用严格模式下的js代码
Set up unit test // 是否使用代码单元测试(国内少做)
Setup e2e tests with Nightwatch // 是否使用e2e测试
Should we run `npm install` for you after the project has been created? (recommended)  // 选择npm安装或者yarn安装

Vue CLI2 初始化项目的目录结构详解

  • build文件夹和config文件夹: 里面存放的是webpack的相关配置
  • node_modules文件夹: 里面存放的是node的模块包
  • src文件夹: 里面存放的是源码, 是以后写代码的地方
  • static文件夹: 里面存放的是静态文件, 即是打包后会原封不动地加入到dist的文件
  • .babelrc文件: 这个是与配置ES代码相关的文件
  • .editorconfig文件: 这个是规定项目代码规范格式相关的文件, 比如项目代码的缩进等等
  • .gitignore文件: 这个是与上传项目到服务器有关的文件, 里面编写的内容是, 规定上传git仓库的时候要忽略的文件
  • .postcssrc.js文件: 这个文件是与样式打包有关的文件
  • index.html文件: 这个文件是入口html文件
  • package.json文件: 这个文件记录了这个项目所需要的各种模块,以及项目的配置信息
  • package-lock.json文件: 这个文件是记录当前状态下实际(注意是实际)安装的各个npm package的具体来源和版本号。
  • README.md文件: 这个文件是用于描述这个项目的

关于 ESLint 严格模式

  • 如果在初始化Vue CLI的过程中

    • 询问Use ESLint to list your code?的时候, 选择使用了其中一个规范
    • 那么在编写js代码的时候, 就要严格地遵循该规范, 如果有不遵循规范的地方, 运行本地服务器模块, 或者打包的时候, 会报错. 但是这个规范很不灵活, 不人性化, 所以一般都不会开启, 但是有些公司会要求开启, 那就要慢慢适应了
  • 如何关闭 ESLint 严格模式
    • 在当前项目中找到 config 文件夹下的 index.js 文件
    • 将里面的useEslint: true 改为 useEslint: false 即可

Runtime-Compiler 和 Runtime-only的区别

  • 这两者最大的区别其实就是Runtime-Compiler具有解析template的功能, 而Runtime-only没有这个功能

    • Runtime-Compiler解析代码的过程为

      • template -> ast -> render -> vDOM(虚拟DOM) -> UI(真实渲染在页面中的DOM)
    • Runtime-only解析代码的过程为
      • render -> vDOM(虚拟DOM) -> UI(真实渲染在页面中的DOM)
  • 很明显runtime-only解析代码的时候是跳过了template -> ast 的过程的
    • 所以runtime-only比runtime-compiler更轻量(大小小了6KB), 而且代码执行效率更高, 因为解析的时候没有 template -> ast 的过程
  • 但是我们的.vue文件中是带有template模板的, 在runtime-only中是什么来解析template模板的呢?
    • 是由 vue-template-compiler 模块来解析的, 可以在package.json文件中找到该模块
    • .vue文件中的template模块, 在传入main.js文件中的时候, 已经被vue-template-compiler模块解析为一个 render对象了
    • 所以我们在实际开发中, 都是选用 runtime-only , 因为它更小更效率

render函数的使用

  • 1.使用方法一 (基本不会用这种方法)

    • 1.1 基本使用

      • return createElement(“标签名”, {属性对象(可以不传)}, [“内容数组”])
    • 1.2 render函数嵌套
      • return createElement(“标签名”,
        {属性对象(可以不传)},
        [“内容”,createElement(“标签名”,{属性对象(可以不传)},[“内容数组”])])
  • 2.使用方法二
    • 传入一个组件对象

      • return createElement(App);
// 组件对象
const cpn = {template : `<h2>{{message}}</h2>`,data() {return {message : "你好你好"}}
}/* eslint-disable no-new */
new Vue({el: '#app',render : function(createElement) {// 1. 使用方法一: // 1.1 基本使用 return createElement("标签名", {属性对象(可以不传)}, ["内容数组"])// return createElement("h2", {class : "box"}, ["你好你好我是render的内容"])// 1.2 嵌套render函数/* return createElement("h2",{class : "box"}, ["你好你好", createElement("button",["我是按钮"])]) */// 2. 使用方法二: 传入一个组件对象return createElement(cpn);}
})

认识Vue CLI3

  • vue-cli>=3 和 vue-cli2 版本的区别

    • vue-cli>=3 是基于webpack4 打造的, vue-cli2 是基于webpack3 打造的
    • vue-cli>=3 的设计原则是"0配置", 移除了根目录下的配置文件, build和config等目录
    • vue-cli>=3 提供了vue ui 命令, 也就是提供了可视化设置, 更加人性化, 更加方便修改设置了
    • 移除了static静态文件夹, 新增了public文件夹(这个文件夹里面的东西打包的时候也会原封不动地打包进dist中), 并且将index.html移动到了public文件夹中
  • 使用vue-cli>=3 初始化项目

      1. 选择配置方式
      1. 选择自己需要的配置(按空格选中或者反选), 选择完毕后直接敲回车进入下一步
      1. 选择对应的配置, 是单独生成文件还是放在package.json文件中, 建议单独生成文件
      1. 是否将刚才的选择配置保存下来
      • 如果选择是, 那么就会让你填入配置的名称, 在下次初始化项目的时候, 在第1步, 选择配置方式的步骤中, 就会出现保存下来的配置
      1. 选择npm安装还是yran安装

vue-cli3 初始化项目的目录结构详解

  • node_modules文件夹: 储存node模块包
  • public文件夹: 相当于vue-cli2中的static静态文件夹, 在打包项目的时候, 会将里面的文件原封不动地添加到dist中, vue-cli3将index.html也放入了这个文件夹中
  • src文件夹: 存放源码的文件夹
  • .browserslistrc文件: 这个文件存放关于浏览器兼容的信息, 比如哪些浏览器需要兼容, 哪些浏览器不去兼容
  • .gitignore文件: 这个文件是存放关于上传项目的信息的
  • babel.config.js文件: 关于ES语法转换的
  • postcss.config.js文件: 关于样式转换的
  • package.json文件: 记录node模块版本信息
  • package-lock.json文件: 记录实际的node模块版本信息
  • README.md文件: 项目说明文件

vue-cli3 与vue-cli2 中的main.js 的区别

  • vue-cli3中将 el: “#app” 去除了, 添加上了 .$mount(’#app’)
  • 实际上这两个东西是一样的作用
  • el: “#app” 在代码的解析的时候也会转换成 .$mount(’#app’)
new Vue({render: h => h(App),
}).$mount('#app')
// 在这里用链式操作, 添加上 .$mount('#app') 与在Vue实例中的 el : "#app" 是一样的作用

vue-cli>=3的配置文件去哪里了? 要如何修改我们项目的配置呢?

  • 方法一: 要修改项目的配置, 可以在终端的命令行输入 vue ui 进入项目配置的可视化界面

    • 我们在什么时候安装了 vue ui 呢?

      • 在我们全局安装vue/cli 的同时安装了vue 和安装了vue ui这个模块
      • 所以我们在任何目录下都可以执行 vue ui 这个命令行
    • 在vue ui 可视化界面中导入我们的项目, 就可以对项目的插件, 依赖和配置进行修改了
  • 方法二: 在项目的根目录中按照路径 node_modules/@vue/cli-service 就可以找到项目的配置文件 webpack.config.js

    • 在webpack.config.js 文件中, 可以看到我们引用的配置在 当前文件夹中的 lib/Service中
  • 方法三: 在项目的根目录中新建一个名为 vue.config.js(名字是固定的不可以修改) 的文件

    • 在该文件中编写想要修改的配置
    • 在vue编译的时候, 就会在根目录中寻找这个文件, 如果找到了就会将文件中的配置与原本的配置进行合并

Vue学习笔记之14-Vue-CLI脚手架相关推荐

  1. 「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析

    「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析 前言 一.我的开发环境 二.使用 Vue CLI (Vue 脚手架)快速搭建项目 三.初始项目的目录结构 ...

  2. vue学习笔记十:Vue中引入jquery

    文章目录 前言 一.引入方式 1.使用Vue CLI 创建的项目 2.直接引入vue方式的项目 二.使用方法 1.使用Vue CLI 创建的项目 2.直接引入vue方式的项目 总结 前言 本篇实现vu ...

  3. Vue学习笔记1---初识vue

    1.vue的前世今生 在vue之前,有angular.react前端框架,vue算是后起之秀. 2013年  [中]尤雨溪 大佬的GitHub主页 ^_^ gigyyx990803 (Evan You ...

  4. Vue学习笔记一 创建vue项目

    1:安装Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.可以搜索Node.js的官网下载,安装完成后,打开命令提示符cmd.exe,输入node ...

  5. vue学习笔记一:vue项目中设置背景图片

    这几天在用vue开发一个项目,真的是到处都是坑啊,就连设置图片背景,也和前面用的不一样了,编译打包后,配置到服务器上时,由于路径解析的问题,图片并不能够正确的显示出来, background:url( ...

  6. 狂神说 vue学习笔记

    vue学习笔记 文章目录 vue学习笔记 一.第一个vue程序 1. 什么是MVVM 2. 为什么要使用MVVM 3.直接新建项目 4.导入vue.js 5.简单绑定元素 6 vue的声明周期 二.V ...

  7. Vue学习笔记:使用CLI构建Vue项目

    Vue学习笔记:使用CLI构建Vue项目 一.安装Vue CLI 要用到集成在node.js里的npm来安装Vue CLI. 1.下载并安装node.js 2.配置node.js的环境变量 3.启动命 ...

  8. Vue学习笔记(三)Vue2三种slot插槽的概念与运用 | ES6 对象的解构赋值 | 基于Vue2使用axios发送请求实现GitHub案例 | 浏览器跨域问题与解决

    文章目录 一.参考资料 二.运行环境 三.Vue2插槽 3.1 默认插槽 3.2 具名插槽 3.3 作用域插槽 ES6解构赋值概念 & 作用域插槽的解构赋值 3.4 动态插槽名 四.GitHu ...

  9. Vue学习笔记(2) 在html文件中创建Vue实例,并使用http-vue-loader注册单文件组件

    本篇博客基于Vue2.x 官方文档:https://cn.vuejs.org/v2/guide/instance.html 最近和同学合作一个设备信息管理的小项目,而同学找的模板不是前后端分离的 因此 ...

  10. Vue学习笔记---------Vue2

    Vue学习笔记---------Vue2 1. Hello,world! 插值语法: 用 {{ xxx }} 插入一个值 ,该值在data中自定义内容. <body><div id= ...

最新文章

  1. Spring事务管理介绍
  2. 手机User-Agent大全(Android爬虫)
  3. 使用PowerShell和Windows任务计划程序备份Linux SQL Server数据库
  4. 字符串的碎片整理。。。
  5. libstdc和glibc的一些共享库问题
  6. 计算机一级考试广告,2013年计算机一级考试MsOffice备考题及答案(21)
  7. C盘快满了,处理一下pagefile.sys文件和hiberfil.sys文件
  8. 非门芯片 74AHC1G08 74AHC1G04 74AHC1G02的区别
  9. win10硬盘锁怎么解除_win10系统下bitlocker给硬盘加密后怎么解锁
  10. ajax中返回sucess里使用this.$message()
  11. zookeeper介绍及使用
  12. 汇编(二)——ARM数据处理指令——算术运算、数据传送
  13. java毕业设计KTV点歌系统mybatis+源码+调试部署+系统+数据库+lw
  14. Zigbee入网流程
  15. matlab计算幂律分布,Matlab拟合曲线之幂律分布
  16. html语言简介 ppt,网页制作与HTML语言基本结构简介.ppt
  17. MAT无法打开较大的hprof的解决办法
  18. wegame系统推荐头像_除了wegame,还有没有别的英雄联盟的插件推荐?
  19. 西南大学计算机应用基础试题及答案2019,2019年12月网络教育统考《计算机应用基础》单选题61...
  20. 【原创】flex控制flash元件

热门文章

  1. 大数据开发笔记(九):Flink基础
  2. 递归典型——汉诺塔问题
  3. 大数据带来的安全隐患有哪些
  4. 大数据营销平台该如何选择
  5. python字符串常用函数-Python字符串常用函数详解
  6. mysql 字符串某个位置_mysql 定位字符串的位置
  7. oracle 包和包体禁用,Oracle包和包体以及与非包体定义函数、过程的区别
  8. 集群服务器分析系统,集群服务器系统可扩展性的研究与实现
  9. Java构建工具:Maven与Gradle的对比
  10. 加入HA后的完全分布式集群搭建