**<font size=6>Web前端開發之構建Vue-cli3.0工程</font>**
# 參考資料
Standard Tooling for Vue.js Development
https://cli.vuejs.org/guide/
Vue-cli3.0
https://github.com/vuejs/vue-cli/tree/fb97646ee51d4fb9c95a01913377cdadf819b6cf(config start)?
以vue-cli為基礎,結合vue-router、vuex、axios、iview組件庫搭建一個工程化前端demo?
https://github.com/Abiel1024/vue-project? ( 內含配置環境變量和模式配置的例子)?
Environment Variables and Modes?
https://github.com/vuejs/vue-cli/blob/fb97646ee51d4fb9c95a01913377cdadf819b6cf/docs/guide/mode-and-env.md? (重點Environment Variables and Modes)
Vue-cli configulation reference?
https://github.com/vuejs/vue-cli/tree/fb97646ee51d4fb9c95a01913377cdadf819b6cf/docs/config#baseurl? (vue.config.js配置明細)
Vue-cli3靜態資源和項目結構?
https://segmentfault.com/a/1190000014456796?utm_source=index-hottest (vue-cli3.0默認項目目錄與2.0的相比)
Webpack中文文檔?
https://www.webpackjs.com/concepts/ (科普Webpack)
@vue/cli-plugin-eslint?
https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint (@vue/cli-plugin-eslint 感覺eslint一直是個盲區)
# 架構
**基本架構**?
vue-router?
vuex?
axios?
elementUI
**開發輔助**?
mock?
# 工程
## 一、構建工程?
### 創建工程
在您的workspace目錄中,執行如下命令,則創建一個Vue-cli3.0工程:?
npm create my-project?
####工程目錄結構
新創建的工程目錄結構如下:?
<Image>
### 啟動工程
執行如下命令啟動Web服務:?
cd my-project?
npm run serve?
```
DONE? Compiled successfully in 5167ms? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 09:26:17
? App running at:
? - Local:? http://localhost:8080/
? - Network: http://192.168.43.111:8080/
? Note that the development build is not optimized.
? To create a production build, run npm run build.
```
## 二、配置工程
通過npm create命令創建的工程只包含了最簡單的代碼結構,接下來要對整個開發周期所需要的配置文件進行添加和配置。
### 1、配置環境變量?
在系統根目錄下增加以下配置文件:?
vue.config.js?
.env.development?
.env.production?
.env.stage?
#### vue.config.js文件?
說明:vue.config.js是一個可選的配置文件,您可以在這個文件里配置系統環境變量及其基本變量,如果它出現在項目根目錄中,就會被@vue/cli-service自動加載。如果不用vue.config.js文件,則可以使用package.json的vue字段來配置,區別在package.json里需要使用josn格式的值。
vue.config.js的常用配置項:?
baseUrl?
outputDir?
assetsDir?
pages?
devServer?
#### .env 環境變量文件?
.env*文件用來指定環境變量,分一般的環境變量文件和指定模式的環境變量文件;?
* 一般的環境變量文件?
.env文件是一般的環境變量文件,所有模式下都會被@vue/cli-service加載。
* 指定模式的環境變量文件?
帶有后綴的.env文件是指定模式的環境變量文件,其后綴名即模式名稱,比如:?
.env.production? 生產模式環境變量文件?
.env.development? 開發模式環境變量文件?
.env.stage? 演示模式環境變量文件?
.env 所有模式都會加載的環境變量文件?
* 環境文件只包含環境變量的“鍵=值”對
* .env.*優先度更高,.env.*會覆蓋.env中的同名變量
* @vue/cli-service會根據命令加載相應的.env文件?
vue-cli-service build命令會加載.env, .env.production的環境變量;?
vue-cli-service run命令會加載.env, .env.development的環境變量;?
vue-cli-service build --mode stage命令會加載.env, .env.stage的環境變量。
* 被載入的變量將會對 vue-cli-service 的所有命令、插件和依賴可用。
### 2、在客戶端代碼中使用環境變量
在客戶端代碼中可以使用的環境變量有兩種:
* 兩個特殊變量:?
? - NODE_ENV?
會是 "development"、"production" 或 "stage" 中的一個。具體的值取決于應用運行的模式。?
? - BASE_URL?
? ? 會和 vue.config.js 中的 baseUrl 選項相符,即你的應用會部署到的基礎路徑。
* VUE_APP_* 變量?
只有以 VUE_APP_ 開頭的變量會被 webpack.DefinePlugin 靜態嵌入到客戶端的包中。可以在應用的代碼中這樣訪問它們:?
```
console.log> > (process.env.VUE_APP_TITILE)
```
* Html文件訪問環境變量?
所有解析出來的環境變量都可以在 public/index.html 中以 HTML 插值中介紹的方式使用;?
插值訪問方式:?
<%= VALUE %> 用來做不轉義插值;?
<%- VALUE %> 用來做 HTML 轉義插值;?
<% expression %> 用來描述 JavaScript 流程控制。?
例如:?
配置環境變量VUE_APP_TITILE做為系統頁面的title,index.html中可以這樣訪問它:?
方式一:?
```
<!DOCTYPE html>
<html lang="en">
? <head>
? ? <meta charset="utf-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width,initial-scale=1.0">
? ? <link rel="icon" href="<%= BASE_URL %>favicon.ico">
? ? <title><%= VUE_APP_TITILE%></title>
? </head>
? <body>
? .......
? </body>
</html>?
? ```
方式二:?
```
<!DOCTYPE html>
<html lang="en">
? <head>
? ? <meta charset="utf-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width,initial-scale=1.0">
? ? <link rel="icon" href="<%= BASE_URL %>favicon.ico">
? ? <title><%- VUE_APP_TITILE%></title>
? </head>
? <body>
? .......
? </body>
</html>
```
### 3、處理靜態資源?
### 4、使用mock數據?
https://www.css88.com/archives/10066?
https://www.jb51.net/article/141066.htm?
https://blog.csdn.net/github_39457740/article/details/81878121?
https://www.jb51.net/article/151305.htm (這種方式還是不起作用)?
## 三、開發測試
## 四、打包
## 五、部署
和后臺分離部署?