Web前端开发之构建Vue-cli3.0工程

**<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 (这种方式还是不起作用) 

## 三、开发测试

## 四、打包

## 五、部署

和后台分离部署 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容