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.pswp.cn/news/251378.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251378.shtml
英文地址,請注明出處:http://en.pswp.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) 標識該字段為該…

LOL

[分享] 從《LOL》談游戲中的隨機動作優化 http://bbs.gameres.com/thread_472292.html 光子工作室陳宇復盤《全民突擊》研發歷程&#xff08;完整版&#xff09; https://mp.weixin.qq.com/s?__bizMjM5OTc2ODUxMw&mid400110877&idx2&sn372fd6492a9d8dd1791d87eb2c…

超級簡易法上傳本地文件到github上

之前文章寫過廖雪峰老師關于git教程的帖子&#xff0c;現在終于有時間實踐了&#xff01;我這段時間在學微信小程序版的貪吃蛇&#xff0c; 想著先把寫好的文件上傳試試&#xff0c;于是乎&#xff0c;便有了如下…… 大家要是不想聽廢話可以拉到最后去…… 1、我先在github…

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…

composer(作曲家)安裝php-ml

剛開始我用的是up5.6版本php命令安裝composer 后來使用composer時發現命令行會提示php版本太低 于是我下載了wamp&#xff0c;使用7.1版本的php重新安裝了composer&#xff0c;因為php-ml要求必須是7.1版本 在安裝的時候有一些問題&#xff0c;那就是安裝不成功&#xff0c;并沒…

前端解析返回的對象時json顯示$ref問題的解決

在mapper中寫的語句&#xff0c;結果集中association&#xff0c;采用的一個對象&#xff0c;整個list列表中每個元素有一個對象元素&#xff0c;如果第二個元素中有一個與第一個元素中對象同名的&#xff0c;就會去引用上一個元素的地址&#xff0c;在json前臺解析的時候就不會…

Uncaught TypeError: Cannot redefine property: $router

原因&#xff1a;就如報錯提示所描述的&#xff0c;不能重新定義router&#xff0c;說明是重復定了router&#xff0c;說明是重復定了router&#xff0c;說明是重復定了router。通常是因為在項目中安裝了vue-router的依賴并且用Vue.use()使用了vue-router&#xff0c;還在index…

微信小程序模仿開眼視頻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…

commit之后,想撤銷commit

git reset --soft HEAD^轉載于:https://www.cnblogs.com/gjack/p/9271556.html

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…

es6 --- Thunk函數的作用

首先了解一下javascript里面的Thunk函數的含義:將多參數函數,替換成一個只接受回調函數作為參數的單參數函數 // 一個具體的例子// 正常版本的readFile(多參數函數) fs.readFile(filename, callback);// Thunk版本的readFile(單參數版本) var Thunk function (fileName) {ret…

設計模式(六)------設計模式六大原則(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;關于…