我很喜欢Vue的一个重要原因就是因为它的vue-cli,这个工具可以让一个简单的命令行工具来帮助我快速地构建一个足以支撑实际项目开发的Vue环境,并不像Angular和React那样要在Yoman上找适合自己的第三方脚手架。vue-cli的存在将项目环境的初始化工作与复杂度降到了最低。

1.安装vue-cli

vue-cli是一个npm的安装包,我们希望它能在本机的任意目录下创建项目,那么就得将它安装到node.js的全局运行目录下

 $ npm i vue-cli -g

安装成功后,我们就可以使用vue-cli来初始化Vue项目了。

2.使用vue-cli初始化项目

vue-cli是一个很简单的指令,先打开它的帮助文件看看它的具体用法:

  用法: vue <命令> [选项]

      命令:

         init         从指定模板中生成一个新的项目
list 列出所有的可用的官方模板
help [cmd] 显示所有[cmd](命令)的帮助 选项: -h, --help 输出用法信息
-V, --version 输出版本号

先用list指令来看看有哪些官方模板可用:

$ vue list

这些官方模板存在的意义在于提供强大的项目构建能力,用户可以尽可能快地进行开发。然而能否真正地发挥作用还在于用户如何组织代码和使用的其他库。

将list指令的输出结果翻译一下,就可以清楚地了解这些官方模板应用于哪些使用场景:

● browserify——拥有高级功能的Browserify + vueify用于正式开发;

● browserify-simple——拥有基础功能的Browserify + vueify用于快速原型开发;

●   pwa ——基于webpack模板的VUE CLI 渐进式网页应用模板

● simple——适用于单页应用开发的最小化配置;

● webpack——拥有高级功能的webpack + vue-loader用于正式开发;

● webpack-simple——拥有基础功能的webpack + vue-loader用于快速原型开发。

browserify的模板做得比较简陋,就算是用于正式开发还是会有些不足,配置的是Karma+Jasmine的单元测试框架,而browserify属于比较老旧的构建工具,估计官方提供这两个模板页是出于对经常使用browserify的开发人员提供一个熟悉环境的考虑。到了正式的项目开发时,我们还是会走上webpack的道路。

所以我建议初学者可以跳过browserify的两个模板,直接使用webpack的两个模板。首先webpack-simple正如其名,配置了最简单的可直接支持ES6的Vue.js编译环境,可以应对那些要求时间短,结构相对简单的小型应用。如果对所有环境工具都非常熟悉,开发者也可以由这个模板入手,为项目底板定制更适应自身开发要求的环境。

其次,webpack模板是一个非常赞的脚手架,将其分析透彻之后,就会知道Vue的官方开发团队在其中花了很大的功夫,将上文所叙述的开发、测试与生产环境做了非常完善的配置,从最大程度上简化了由于工具而引入项目的复杂度,也降低了开发人员对工具的学习成本,这个模板也将是本书中讲述的重点。

3.创建项目

接下来先看看这个vue-cli如何为我们创建项目。创建项目使用的是init命令,它会为我们自动创建一个新的文件夹,并将所需的文件、目录、配置和依赖都准备好,具体做法如下:

$ vue init webpack my-project

init命令执行后会出一系列的交互式问题让我们选择,运行结果如下所示。

完成以后直接按提示进入项目,安装npm的依赖包后就可以开始开发。

4.深入vue-cli的工程模板

vue-cli提供的脚手架只是一个最基础的,也可以说是Vue团队认为的工程结构的一种最佳实践。对于初学者或者以前曾从事AngularJS/React开发的用户来说,可能对开发环境有自已习惯性用法和熟悉的工具,但我建议用Vue来开发的话还是先按照官方推荐的来做,待我们掌握了Vue官方推荐的环境配置后再按照实际情况进行相应的调整,这样会少走一些弯路,节省不少时间。

我们下面要讨论的工程结构都是围绕webpack-simple与webpack展开的,browserify也只是在这两个模板的基础上移植的一个版本,所以就不过多地赘述。

webpack和webpack-simple这两个模板从文件结构上看几乎是一致的,只是一个是简化版,另一个是完全版。其实不然,webpack-simple是基于Webpack@2.1.0-beta.25进行配置的版本,而webpack模板则是基于Webpack ^1.3.2配置的。这两个版本暂时是互相不兼容的,而且使用的依赖包的版本也不一样,所以不要将webpack模板创建的项目文件结构复制到webpack-simple中进行直接的取代升级,而是需要将node_modules内安装的所有的依赖包删除,然后重新安装才有可能迁移成功,这一点是需要注意的。

5.webpack-simple模板

以下为webpack-simple模板构建的项目的工程目录结构:

    ├── README.md
├── index.html
├── package.json
├── src
│ ├── App.vue
│ ├── assets
│ │ └── logo.png
│ └── main.js
└── webpack.config.js

 6.规范

webpack-simple只配置了Babel和Vue的编译器,其他的一无所有。这个模板值得一提的就是src目录,所有的Vue代码源程序都放置在这个目录中,五个模板构建出来的这个src目录都是一样的,只是在webpack模板中多了components目录用于存放公用组件。这个目录的结构与文件的组织应在开发前就进行约定,对于多人协作式项目,目录的使用与文件的命名都显得尤为重要。

具体约定如下:

(1)公共组件、指令、过滤器(多于三个文件以上的引用)将分别存放于src目录下的

● components;

● directives;

● filters。

(2)以使用场景命名Vue的页面文件。

(3)当页面文件具有私有组件、指令和过滤器时,则建立一个与页面同名的目录,页面文件更名为index.vue,将页面与相关的依赖文件放在一起。

(4)目录由全小写的名词、动名词或分词命名,由两个以上的词组成,以“-”进行分隔。

(5)Vue文件统一以大驼峰命名法命名,仅入口文件index.vue采用小写。

(6)测试文件一律以测试目标文件名.spec.js命名。

(7)资源文件一律以小写字符命名,由两个以上的词组成,以“-”进行分隔。

例如:

    src
├── README.md
├── assets // 全局资源目录
│ ├── images // 图片
│ ├── less // less 样式表
│ ├── css // CSS 样式表
│ └── fonts // 自定义字体文件
├── components // 公共组件目录
│ ├── ImageInput.vue
│ ├── Slider.vue
│ └── ...
├── directives.js // 公共指令
├── filters.js // 公共过滤器
├── login // 场景:登录
│ ├── index.vue // 入口文件
│ ├── LoginForm.vue // 登录场景私有表单组件
│ └── SocialLogin.vue
├── cart
│ ├── index.vue
│ ├── ItemList.vue
│ └── CheckoutForm.vue
├── Discover.vue // 场景入口文件
├── App.vue // 默认程序入口
└── main.js

脚手架vue-cli系列一:安装与规范的更多相关文章

  1. 【Vue CLI】从安装到构建项目再到目录结构的说明

    目录 1. 构建我们的项目 2. 目录结构说明 2.1 build目录 2.2 config目录 2.3 src目录 2.4 static目录 "Vue CLI是一个基于Vue.js进行快速 ...

  2. 运行vue项目--安装vue脚手架vue cli

    第一步. 安装node: 官网下载node的.pkg,下载地址,选择相应版本进行下载 mac终端下输入npm -v 和 node -v, 出现相应版本号即安装成功. 若均提示 command not ...

  3. vue工具 - vue/cli@3.xx 安装使用流程

    mac安装记得npm前边加sudo 安装脚手架,用于生成目录 npm install -g @vue/cli 安装用于编译单个的.vue文件 npm install -g @vue/cli-servi ...

  4. VUE CLI 3.0 安装及创建项目

    一.安装 VUE CLI 3.0 官网: https://cli.vuejs.org/   详细资料可以自己先把官网过一遍. 1. 安装(默认你的电脑上已安装node及npm) npm install ...

  5. windows系统下 VUE cli手脚架环境安装

    1.安装 node.js环境  (cmd命令工具里输入 node -v 检测是否安装成功) 2.安装VUE 全局环境 npm install --global vue-cli (cmd命令工具里面安装 ...

  6. 利用脚手架vue cli搭建vue项目

    vue.js https://vuejs.org/ 基础: http://cn.vuejs.org/v2/guide/installation.html 1.安装需要利用npm包管理器,所以首先安装n ...

  7. scss是什么?在vue.cli中的安装使用步骤是?有哪几大特性?

    css的预编译: 使用步骤: 第一步:用npm下三个loader(sass-loader.css-loader.node-sass): 第二步:在build目录找到webpack.base.confi ...

  8. vue cli创建脚手架

    1.用vscode打开一个文件夹.在菜单栏 点击 查看-集成终端.这里可以用其他的方法比如cmd命令符调开这个界面,但是要用cd 切到要放文件的文件夹下. 2.安装好node.js  和淘宝镜像 3. ...

  9. Vue技术点整理-Vue CLI

    Vue CLI 是一个基于 Vue.js 进行项目快速开发的脚手架 注:具体安装步骤可参考Vue CLI,默认安装的脚手架,是没有service.util等工具类的,以下主要描述如何在脚手架的基础上进 ...

  10. 更新到@vue/cli 4.1.1版本的前端开发前的准备

    一.概念简述 1.node.js目的是提供一个JS的运行环境. 2.npm(node package manager)是一个JS包管理器. 二.检查自己的电脑是否已安装相关配置 1.查看node.js ...

随机推荐

  1. Java JDK 在Windows 10中配置环境变量

    首先,去Oracle官方网站下载Java JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...

  2. DOM 节点node

    DOM可以将任何HTML或XML文档描绘成一个有多层节点构成的结构,即在HTML中所有内容都是节点.文档节点是每个文档的根节点,文档节点有一个子节点,称为文档元素.每个文档只能有一个文档元素.在HTM ...

  3. Windows Server 2016离线安装.NET Framework 3.5

    windows server 2016默认是不安装.netframework3.5的,可以在添加删除程序中单独添加.但是有时候系统安装文件不在的时候,找不到安装程序就不能安装成功. 这时候单独下载do ...

  4. python中type、class、object之间的关系

    先看一段代码 # -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/13 18:40' a = 1 b = 'abc' pri ...

  5. node.js中使用yargs来处理命令行参数

    yargs库能够方便的处理命令行参数. 一.安装 yargs npm install yargs --save 二.读取命令行参数 const yargs = require('yargs'); le ...

  6. 基于ASP.NET的高校辅导员工作管理系统的设计与实现--论文随笔(四)

    一.基本信息 标题:基于ASP.NET的高校辅导员工作管理系统的设计与实现 时间:2017 出版源:南通理工学院 关键词:ASP.NET; SQL Server; 高校; 管理系统; 辅导员; 二.研 ...

  7. boost asio 学习(三)post与dispatch

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio?pg=4 本章节为io_ ...

  8. windows内核对象管理学习笔记

    目前正在阅读毛老师的<windows内核情景分析>一书对象管理章节,作此笔记. Win内核中是使用对象概念来描述管理内核中使用到的数据结构.此对象(Object)均是由对象头(Object ...

  9. RxSwift学习笔记7:buffer/window/map/flatMap/flatMapLatest/flatMapFirst/concatMap/scan/groupBy

    1.buffer的基本使用 let publishSubject = PublishSubject<String>() //buffer 方法作用是缓冲组合,第一个参数是缓冲时间,第二个参 ...

  10. python实战提升--1

    #python实战提升 1. 如何在列表.字典.集合中根据条件筛选数据? python中for _ in range(10)与for i in range(10)有何区别 下划线表示 临时变量, 仅用 ...