vue脚手架vue-cli的学习使用教程


Posted in Javascript onJune 06, 2017

vue-cli的模板

  1. vue-cli的脚手架项目模板有webpack-simple 和 webpack
  2. 两种的区别在于webpack-simple 没有包括Eslint 检查等功能

vue-cli的项目结构

.
|-- build              // 项目构建(webpack)相关代码
|  |-- build.js           // 生产环境构建代码
|  |-- check-version.js       // 检查node、npm等版本
|  |-- dev-client.js        // 热重载相关
|  |-- dev-server.js        // 构建本地服务器
|  |-- utils.js           // 构建工具相关
|  |-- webpack.base.conf.js     // webpack基础配置
|  |-- webpack.dev.conf.js     // webpack开发环境配置
|  |-- webpack.prod.conf.js     // webpack生产环境配置
|-- config              // 项目开发环境配置
|  |-- dev.env.js          // 开发环境变量
|  |-- index.js           // 项目一些配置变量
|  |-- prod.env.js         // 生产环境变量
|  |-- test.env.js         // 测试环境变量
|-- src               // 源码目录
|  |-- components           // vue公共组件
|  |-- store             // vuex的状态管理
|  |-- App.vue            // 页面入口文件
|  |-- main.js            // 程序入口文件,加载各种公共组件
|-- static              // 静态文件,比如一些图片,json数据等
|  |-- data              // 群聊分析得到的数据用于数据可视化
|-- .babelrc             // ES6语法编译配置
|-- .editorconfig          // 定义代码格式
|-- .gitignore            // git上传需要忽略的文件格式
|-- README.md            // 项目说明
|-- favicon.ico 
|-- index.html            // 入口页面
|-- package.json           // 项目基本信息

package.json文件

package.json文件是项目根目录下的一个文件,定义该项目开发所需要的各种模块以及一些项目配置信息(如项目名称、版本、描述、作者等)。

自定义npm相关命令

在package.json文件里有一个scripts字段。

"scripts": {
 "dev": "node build/dev-server.js",
 "build": "node build/build.js"
}

在开发环境下,在命令行中运行npm run dev就相当于在执行node build/dev-server.js。所以script字段是用来指定npm相关命令的缩写的。

dependencies字段和devDependencies字段

  1. dependencies字段指定了项目运行时所依赖的模块
  2. devDependencies字段指定了项目开发时所依赖的模块(项目环境依赖)
  3. 在命令行中运行npm install命令,会自动安装dependencies和devDependencies字段中的模块。

webpack配置相关

详情在webpack相关博客

dev-server.js

...
...
// http-proxy可以实现转发所有请求代理到后端真实API地址,以实现前后端开发完全分离
// 在config/index.js中可以对proxyTable想进行配置
var proxyMiddleware = require('http-proxy-middleware')
...
...
// 热加载要使用webpack-dev-middleware在没有webpack-dev-server的时候进行热加载
var hotMiddleware = require('webpack-hot-middleware')(compiler)
// 当html-webpack-plugin模板改变是强制进行页面重新加载
compiler.plugin('compilation', function (compilation) {
compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
 hotMiddleware.publish({ action: 'reload' })
 cb()
})
})

webpack.base.conf.js

...
...
module.export = {
 // 编译入口文件
 entry: {},
 // 编译输出路径
 output: {},
 // 一些解决方案配置
 resolve: {},
 resolveLoader: {},
 module: {
   // 各种不同类型文件加载器配置
   loaders: {
   ...
   ...
   // js文件用babel转码
   {
     test: /\.js$/,
     loader: 'babel',
     include: projectRoot,
     // 哪些文件不需要转码
     exclude: /node_modules/
   },
   ...
   ...
   }
 },
 // vue文件一些相关配置
 vue: {}
}

check-version.js

这个文件主要是用来检测当前环境中的node和npm版本和我们需要的是否一致的。

// 加载语义化版本测试库
var semver = require('semver')
// 定制控制台日志的输入样式
var chalk = require('chalk')
// 引入package.json文件
var packageConfig = require('../package.json')
var exec = function (cmd) {
return require('child_process')
 .execSync(cmd).toString().trim()
}
// 定义node和npm版本需求所组成的数组
var versionRequirements = [
{
 name: 'node',
 currentVersion: semver.clean(process.version),
 versionRequirement: packageConfig.engines.node
},
{
 name: 'npm',
 currentVersion: exec('npm --version'),
 versionRequirement: packageConfig.engines.npm
}
]
module.exports = function () {
var warnings = []
// 依次判断版本是否符合要求
for (var i = 0; i < versionRequirements.length; i++) {
 var mod = versionRequirements[i]
 if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
  warnings.push(mod.name + ': ' +
   chalk.red(mod.currentVersion) + ' should be ' +
   chalk.green(mod.versionRequirement)
  )
 }
}
...
}

.babelrc

Babel解释器的配置文件,存放在根目录下。Babel是一个转码器,项目里需要用它将ES6代码转为ES5代码

// 设定转码规则
"presets": ["es2015", "stage-2"],
// 转码的一些插件
"plugins": ["transform-runtime"],
"comments": false

.editorconfig

该文件定义项目的编码规范,编辑器的行为会与.editorconfig 文件中定义的一致,并且其优先级比编辑器自身的设置要高,这在多人合作开发项目时十分有用而且必要。

root = true
[*] // 对所有文件应用下面的规则
charset = utf-8          // 编码规则用utf-8
indent_style = space        // 缩进用空格
indent_size = 2          // 缩进数量为2个空格
end_of_line = lf          // 换行符格式
insert_final_newline = true    // 是否在文件的最后插入一个空行
trim_trailing_whitespace = true  // 是否删除行尾的空格

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
学习YUI.Ext 第七天--关于View&amp;JSONView
Mar 10 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
Jan 17 Javascript
JS 实现点击a标签的时候让其背景更换
Oct 15 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
jQuery插件开发详细教程
Jun 06 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
html5+javascript实现简单上传的注意细节
Apr 18 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
Mar 23 Javascript
详解webpack babel的配置
Jan 09 Javascript
JS实现为动态创建的元素添加事件操作示例
Mar 17 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
Aug 04 Javascript
JavaScript如何实现防止重复的网络请求的示例
Jan 28 Javascript
D3.js进阶系列之CSV表格文件的读取详解
Jun 06 #Javascript
JavaScript实现移动端轮播效果
Jun 06 #Javascript
js评分组件使用详解
Jun 06 #Javascript
javascript中mouseenter与mouseover的异同
Jun 06 #Javascript
jquery仿京东商品放大浏览页面
Jun 06 #jQuery
Node.js连接mongodb实例代码
Jun 06 #Javascript
jquery实现图片放大点击切换
Jun 06 #jQuery
You might like
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
php 中的4种标记风格介绍
2012/05/10 PHP
php curl基本操作详解
2013/07/23 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
php扩展开发入门demo示例
2019/09/23 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
实用的Vue开发技巧
2019/05/30 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
公司法定代表人授权委托书
2014/09/29 职场文书
服务整改报告
2014/11/06 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
同学会感言
2015/07/30 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS