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 相关文章推荐
用javascript父窗口控制只弹出一个子窗口
Apr 10 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
浅谈Javascript鼠标和滚轮事件
Jun 27 Javascript
JQuery中$.each 和$(selector).each()的区别详解
Mar 13 Javascript
javascript下拉列表菜单的实现方法
Nov 18 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
May 03 Javascript
浅谈js的url解析函数封装
Jun 28 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
JS实现的简单轮播图运动效果示例
Dec 22 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
Oct 24 Javascript
Angular5给组件本身的标签添加样式class的方法
Apr 07 Javascript
js实现浏览器打印功能的示例代码
Jul 15 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
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
python 日志增量抓取实现方法
2018/04/28 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
Python3.4解释器用法简单示例
2019/03/22 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
Django框架视图函数设计示例
2019/07/29 Python
Django限制API访问频率常用方法解析
2020/10/12 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
医科学校毕业生自荐信
2013/11/09 职场文书
应用心理学个人求职信范文
2013/12/11 职场文书
预备党员思想汇报范文
2014/01/11 职场文书
护士工作失误检讨书
2014/09/14 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
详解Flask开发技巧之异常处理
2021/06/15 Python
Java spring单点登录系统
2021/09/04 Java/Android
Go 语言中 20 个占位符的整理
2021/10/16 Golang