vue-cli生成项目时你应当知道的

一、安装

npm install -g vue-cli

二、创建项目

vue init  模板名 项目名
vue init webpack mymall

模板名:

1 . webpack 最常用
2 . webpack-simple // 一个简单webpack+vue-loader的模板,不包含其他功能。
3 . browserify // 一个全面的Browserify+vueify 的模板,功能包括热加载,linting,单元检测。
4 . browserify-simple // 一个简单Browserify+vueify的模板,不包含其他功能。
5 . pwa // 基于webpack模板的vue-cli的PWA模板
6 . simple // 一个最简单的单页应用模板

执行指令后,会让用户输入几个基本的选项(vue-router在这里就安装了

Project name :项目名称 ,如果不需要更改直接回车就可以了。注意:这里不能使用大写。
Project description:项目描述,默认为A Vue.js project,直接回车,不用编写。
Author:作者,如果你有配置git,他会读取.ssh文件中的user。
Install vue-router? 是否安装vue的路由插件,Y代表安装,N无需安装,下面的命令也是一样的。
Use ESLint to lint your code? 是否用ESLint来限制你的代码错误和风格
setup unit tests with Karma + Mocha? 是否需要安装单元测试工具Karma+Mocha。
Setup e2e tests with Nightwatch?是否安装e2e来进行用户行为模拟测试。
Should we run npm install for you after the project has been created?(recommended)npm

三、build文件夹注意点

3.1 package.json – npm run dev时做了什么?

3.1.1 文件目录

|-- build // 项目构建(webpack)相关代码
| |-- build.js // 生产环境构建代码
| |-- check-version.js // 检查node、npm等版本
| |-- utils.js // 构建工具相关
| |-- vue-loader.conf.js // webpack loader配置
| |-- 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所有组件
| |-- router // vue的路由管理
| |-- App.vue // 页面入口文件
| |-- main.js // 程序入口文件,加载各种公共组件
|-- static // 静态文件,比如一些图片,json数据等
|-- test // 测试文件
| |-- e2e // e2e 测试
| |-- unit // 单元测试
|-- .babelrc // ES6语法编译配置
|-- .editorconfig // 定义代码格式
|-- .eslintignore // eslint检测代码忽略的文件(夹)
|-- .eslintrc.js // 定义eslint的plugins,extends,rules
|-- .gitignore // git上传需要忽略的文件格式
|-- .postcsssrc // postcss配置文件
|-- README.md // 项目说明,markdown文档
|-- index.html // 访问的页面
|-- package.json // 项目基本信息,包依赖信息等

package.json其中这段代码:
在这里插入图片描述
当npm run dev时,执行了:

webpack-dev-server --inline --progress --config build/webpack.dev.conf.js

这句话的意思是利用 webpack-dev-server 读取 webpack.dev.conf.js 信息并启动一个本地服务器。

3.2 dependencies 与 devDependencies

dependencies 是运行时依赖(生产环境) npm install --save (package name)
devDependencies 是开发时的依赖(开发环境) npm install –save-dev (package name)

3.3 基础配置文件 webpack.base.conf.js – 告诉webpack加载后缀为(.js .vue .json)的文件

  1. resolve的extensions告诉wepack要加载后缀为(.js .vue .json)的文件
  2. alias创建别名,将@解析为src
  3. 使用不同loader解析(vue/js/图片/多媒体/字体)
    其中:对src和test文件夹下的.js文件使用babel-loader将es6+的代码转成es5
    能够使用户在引入模块时不带扩展
 38   /**39    * 当webpack试图去加载模块的时候,它默认是查找以 .js 结尾的文件的,40    * 它并不知道 .vue 结尾的文件是什么,41    * 所以我们要在配置文件中告诉webpack,42    * 遇到 .vue 结尾的也要去加载,43    * 添加 resolve 配置项,如下:44    */45   resolve: {46     extensions: ['.js', '.vue', '.json'],47     alias: {  // 创建别名48       'vue$': 'vue/dist/vue.esm.js',49       '@': resolve('src'),  50     }51   },52   // 不同类型模块的处理规则 就是用不同的loader处理不同的文件53   module: {54     rules: [55       ...(config.dev.useEslint ? [createLintingRule()] : []),56       {// 对所有.vue文件使用vue-loader进行编译57         test: /\.vue$/,58         loader: 'vue-loader',59         options: vueLoaderConfig60       },61       {// 对src和test文件夹下的.js文件使用babel-loader将es6+的代码转成es562         test: /\.js$/,63         loader: 'babel-loader',64         include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]65       },66       {// 对图片资源文件使用url-loader67         test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,68         loader: 'url-loader',69         options: {70           // 小于10K的图片转成base64编码的dataURL字符串写到代码中71           limit: 10000,72           // 其他的图片转移到静态资源文件夹73           name: utils.assetsPath('img/[name].[hash:7].[ext]')74         }75       },76       {// 对多媒体资源文件使用url-loader77         test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,78         loader: 'url-loader',79         options: {80           // 小于10K的资源转成base64编码的dataURL字符串写到代码中81           limit: 10000,82           // 其他的资源转移到静态资源文件夹83           name: utils.assetsPath('media/[name].[hash:7].[ext]')84         }85       },86       {// 对字体资源文件使用url-loader87         test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,88         loader: 'url-loader',89         options: {90           limit: 10000,91           name: utils.assetsPath('fonts/[name].[hash:7].[ext]') // hash:7 代表 7 位数的 hash92         }93       }94     ]95   },

3.4 开发环境配置文件 webpack.dev.conf.js

 //  webpack-dev-server服务器配置
devServer: { hot: true, // 开启热模块加载}
plugins: [new HtmlWebpackPlugin({// 指定编译后生成的html文件名filename: 'index.html',// 需要处理的模板template: 'index.html',// 打包过程中输出的js、css的路径添加到html文件中// css文件插入到head中// js文件插入到body中,可能的选项有 true, 'head', 'body', falseinject: true}),

3.5 生产模式配置文件 webpack.prod.conf.js

打包时做了什么

// copy-webpack-plugin,用于将static中的静态文件复制到文件夹dist
const CopyWebpackPlugin = require('copy-webpack-plugin')new HtmlWebpackPlugin({minify: {// 删除index.html中的注释removeComments: true,// 删除index.html中的空格collapseWhitespace: true,// 删除各种html标签属性值的双引号removeAttributeQuotes: true}})

四、 .编码规范.editorconfig (自定义)

这也就是eslint在检查代码的依据

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

五、组件驼峰命名

5.1组件中 (html短横线,模板字符串驼峰)

js中(模板字符串 {{ }} ):vue的组件的props属性支持驼峰命名camelCased ,不支持连接线命名,使用是用连接线进行赋值或者数据绑定!
html中:HTML 特性是不区分大小写的,要使用连接线 kebab-case (短横线隔开式)

在这里插入图片描述

var myname={'first-name':'9','last-name':'l o n g'
}
console.log(myname.first-name);
console.log(myname['first-name']);打印出来是  NaN  9

js中:之所以没有前面没有打印出来9,是因为程序走的时候,把英文连接符当做减号看待,myname.first和name是undefined,所以会 undefined-undefined=NaN
具体应该看vue文档:Prop-的大小写-camelCase-vs-kebab-case
在这里插入图片描述

5.2 组件名大小写

组件注册

定义组件名的方式有两种:使用 kebab-case  (全小写)
Vue.component('my-component-name', { /* ... */ })
当使用 kebab-case (短横线分隔命名) 定义一个组件时,你也必须在引用这个自定义元素时使用 kebab-case,例如 <my-component-name>。使用 PascalCase
Vue.component('MyComponentName', { /* ... */ })
当使用 PascalCase (首字母大写命名) 定义一个组件时,你在引用这个自定义元素时两种命名法都可以使用。也就是说 <my-component-name> 和 <MyComponentName> 都是可接受的。注意,尽管如此,直接在 DOM (即非字符串的模板) 中使用时只有 kebab-case 是有效的。

再来看看vue官方的风格指南: 组件名为多个单词

组件名应该始终是多个单词的,根组件 App 以及 、 之类的 Vue 内置组件除外。
这样做可以避免跟现有的以及未来的 HTML 元素相冲突,因为所有的 HTML 元素名称都是单个单词的。

反例
Vue.component('todo', {// ...
})
export default {name: 'Todo',// ...
}
好例子
Vue.component('todo-item', {// ...
})
export default {name: 'TodoItem',// ...
}

wow 风格指南应当好好看看 😃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

es6 --- 正确获取Generator函数内部的this对象使其可以使用new

首先看2个例子 function * g() {this.a 11; }let o g(); console.log(o.a);可以看见Generator函数里面的this指向的对象取不出来. 再看下一个例子: function* F() {yield this.x 2;yield this.y 3; } new F();可以看出Generator函数无法使用new操作符, 下面一共一个解决…

mysql三-3:完整性约束

阅读目录 一 介绍二 not null与default三 unique四 primary key五 auto_increment六 foreign key七 作业一 介绍 约束条件与数据类型的宽度一样&#xff0c;都是可选参数 作用&#xff1a;用于保证数据的完整性和一致性主要分为&#xff1a; PRIMARY KEY (PK) 标识该字段为该…

es6 --- 对任意对象部署可遍历接口

有时候需要对对象进行遍历,下面提供一个比较方便的接口, 其基本思路是,首先得到对象的所有键(key), 然后将其放在yield* 后面. yield* 可以通过 for … of … 循环遍历 具体实现如下: function* iterEntries (obj) {let keys Object.keys(obj);for ( let i 0; i < keys.…

element-ui表单验证:用户名、密码、电话、邮箱

之前设计login组件时增加了简单的表单验证&#xff0c;因此对应的users组件&#xff0c;添加用户功能也必须设置相应的验证规则。 文档form表单验证只提供了用户名/密码&#xff0c;是否必须/长度限制的验证。对于电话、邮箱和地址的验证如下&#xff1a; html部分&#xff0c…

前端解析返回的对象时json显示$ref问题的解决

在mapper中写的语句&#xff0c;结果集中association&#xff0c;采用的一个对象&#xff0c;整个list列表中每个元素有一个对象元素&#xff0c;如果第二个元素中有一个与第一个元素中对象同名的&#xff0c;就会去引用上一个元素的地址&#xff0c;在json前台解析的时候就不会…

微信小程序模仿开眼视频app(一)——视频首页、视频详情、分类

可到我的github账号上去copy文件 先展示一下我实现了的功能吧 提示&#xff0c;如果有出现无法加载域名之类问题的的&#xff0c;可以在“设置”-“项目设置”-打钩“不校验合法域名……”&#xff1b; 或者直接登录自己的微信小程序后台设置域名信息 首页部分&#xff1a; 1…

es6 --- Thunkify源码分析

首先看一个例子:读取package.json下的文件,并将读取的数据(若读取失败)打印出来 // 导入fs和thunkify模块 var thunkify require(thunkify); var fs require(fs);// 定义读取文件的函数read var read thunkify(fs.readFile);// 调用read函数读取package.json下的文件.并对数…

(转)C# WebApi 身份认证解决方案:Basic基础认证

原文地址&#xff1a;http://www.cnblogs.com/landeanfen/p/5287064.html 阅读目录 一、为什么需要身份认证二、Basic基础认证的原理解析 1、常见的认证方式2、Basic基础认证原理三、Basic基础认证的代码示例 1、登录过程2、/Home/Index主界面3、WebApiCORS验证部分&#xff08…

ZNZD平台vue项目

一、安装配置node.js 1.1 配置企业级软件仓库 1&#xff09;首先用的是Nexus Repository Manager搭建npm私服&#xff1b;&#xff08;待补充&#xff09; 2&#xff09;项目使用修改.npmrc文件来修改源 现在需要做的就是修改源&#xff01;采取配置npmrc文件的方式&#x…

微信小程序模仿开眼视频app(二)——搜索功能

微信小程序模仿开眼视频app&#xff08;一&#xff09;有介绍首页、视频详情和分类部分 可到我的github账号上去copy文件 搜索部分 一开始没想要设置历史记录啊、热门搜索啊这些的&#xff0c;只是想把搜索框弄好看一点&#xff0c;无意中发现了微信官方ui库&#xff1a;weu…

设计模式(六)------设计模式六大原则(5):迪米特法则

转载自&#xff1a;http://www.jianshu.com/p/14589fb6978e &#xff08;作者简书&#xff1a;涅槃1992&#xff09; 揭秘迪米特法则 迪米特法则&#xff08;Law of demeter,缩写是LOD&#xff09;要求&#xff1a;一个对象应该对其他对象保持最少了解&#xff0c; 通缩的讲就是…

http://www.cda.cn/view/25735.html

通过实例浅析Python对比C语言的编程思想差异 我一直使用 Python&#xff0c;用它处理各种数据科学项目。 Python 以易用闻名。有编码经验者学习数天就能上手&#xff08;或有效使用它&#xff09;。 听起来很不错&#xff0c;不过&#xff0c;如果你既用 Python&#xff0c;同时…

前端知识点梳理(一)

一、HTML 1. meta标签 记住2个属性&#xff1a;name和http-equiv name&#xff1a;描述网页 <meta name"参数" content"具体的描述">http-equiv&#xff1a;文件头 HTML中的meta标签及其使用方法 二、CSS 1. css实现水平居中的几种方式 css实…

Babel 7 基础入门学习(详细版)

可以在我的GitHub上下载示例代码。 前言 之前一直想要系统的学习一下Babel的使用规则&#xff0c;看过阮一峰老师的《Babel基础入门》&#xff0c;无奈此教程是2016年出的&#xff0c;而Babel 7都已经出来啦&#xff0c;于是&#xff0c;在搜集了各种资料后&#xff0c;关于…

Kubernetes学习之路(四)之Node节点二进制部署

K8S Node节点部署 1、部署kubelet &#xff08;1&#xff09;二进制包准备 [rootlinux-node1 ~]# cd /usr/local/src/kubernetes/server/bin/ [rootlinux-node1 bin]# cp kubelet kube-proxy /opt/kubernetes/bin/ [rootlinux-node1 bin]# scp kubelet kube-proxy 192.168.56.1…

前端知识点梳理(二)

1.内核 浏览器内核&#xff08;Rendering Engine&#xff09;最初分为&#xff1a;渲染引擎&#xff08;layout engineer&#xff09;或&#xff08;Rendering Engine&#xff09;和js引擎&#xff1b;后来 JS 引擎越来越独立&#xff0c;内核就倾向于单指渲染引擎。浏览器she…

微信小程序模仿开眼视频app(三)——信息卡片瀑布流和分类

《微信小程序模仿开眼视频app&#xff08;一&#xff09;——视频首页、视频详情、分类》 《微信小程序模仿开眼视频app&#xff08;二&#xff09;——搜索功能》 可到我的github账号上去copy文件 瀑布流部分 文件代码提示的挺详细的&#xff0c;这里主要点一下 社区与分类…

javascript --- typeof方法和instanceof方法

ES5中: 原始类型包括:Number、String、Boolean、Null、Undefined 原始封装类型包括:Number、String、Boolean 引用类型包括:Array、Function、RegExp、Error、Date、Error 变量对象 原始类型的实例成为原始值,它直接保存在变量对象中. 引用类型的实例成为引用值,它作为一个指针…

《JavaScript 高级程序设计》笔记 第1~5章

第1章 js是专为网页交互而设计的脚本语言&#xff0c;由3部分组成&#xff1a; ECMAScript&#xff0c;提供核心语言功能DOM文档对象模型&#xff0c;提供访问和操作网页内容的方法和接口BOM浏览器对象模型&#xff0c;提供与浏览器交互的方法和接口 js是一种脚本语言、解释…

javascript --- js中prototype、__proto__、[[Propto]]、constructor的关系

首先看下面一行代码: function Person(name){this.name name; } var person1 new Person; console.log(person1.__proto__ Person.prototype); console.log(person1.constructor Person);控制台打印如下: 可以看见,当使用构造函数(Person)构造一个实例(person1)时, 在后…