@@ -8,13 +8,17 @@ vue + vuex + vue router + TypeScript(支持 JavaScript) 模板
88 - [ 建议开发环境] ( #建议开发环境 )
99- [ 浏览器支持] ( #浏览器支持 )
1010- [ 安装] ( #安装 )
11- - [ 命令参考(Terminal)] ( #命令参考(Terminal) )
12- - [ 开发环境] ( #开发环境开发调试时使用 )
13- - [ 构建] ( #生成部署包 )
11+ - [ 命令参考(Terminal)] ( #命令参考Terminal )
12+ - [ 启动开发环境] ( #启动开发环境 )
1413 - [ 代码风格检查和修正] ( #代码风格检查和修正提交-git-时会自动执行 )
15- - [ e2e测试] ( #e2eend-to-end-测试 )
1614 - [ 单元测试] ( #单元测试 )
17- - [ 命令帮助] ( #命令帮助 )
15+ - [ e2e测试] ( #e2eend-to-end-测试 )
16+ - [ 生成] ( #生成部署包 )
17+ - [ 其他命令] ( #其他命令 )
18+ - [ 指定入口] ( #指定入口SPA-逗号分隔 )
19+ - [ 指定路由配置] ( #指定路由配置通过别名 )
20+ - [ 命令帮助] ( #命令帮助 )
21+ - [ 联调] ( #联调 )
1822- [ 说明及注意事项] ( #说明及注意事项 )
1923 - [ 目录结构] ( #目录结构 )
2024 - [ 风格建议] ( #风格建议 )
@@ -53,7 +57,7 @@ VSCode 插件
5357
5458> 推荐工具: [ ` @vue/cli ` ] ( https://cli.vuejs.org/zh/guide ) (最新), 全局安装时可使用 ` vue ui ` 命令启动图形化界面管理工程
5559
56- > 推荐字体 : [ FiraCode] ( https://github.com/tonsky/FiraCode )
60+ > 推荐开发字体 : [ FiraCode] ( https://github.com/tonsky/FiraCode )
5761
5862## 浏览器支持
5963
@@ -67,7 +71,7 @@ VSCode 插件
6771
6872``` bash
6973git config core.ignorecase false # 使git对文件名大小写敏感
70- # 或者修改 .git/config [core] ignorecase = false
74+ # 或者修改 .git/config [core] ignorecase= false
7175```
7276
7377有 ` .lock ` 文件时** 只需** 执行 ` yarn ` (或` npm i ` ) 安装即可, 否则如下:
@@ -109,18 +113,16 @@ git config core.ignorecase false # 使git对文件名大小写敏感
109113yarn dev # --port 9876 : 本次启动使用9876端口 (可以在 .env.development.local 文件中设置)
110114```
111115
112- ### 构建(生成部署包 )
116+ ### 代码风格检查和修正(提交 Git 时会自动执行 )
113117
114118``` bash
115- yarn build # --watch: 跟踪文件变化 --report: 生成打包分析
119+ yarn lint
116120```
117121
118- 同时会生成文件名/chunk名[ 映射文件] ( build/~fileName ) (公共代码抽到` _ ` 开头的文件里了)
119-
120- ### 代码风格检查和修正(提交 Git 时会自动执行)
122+ ### 单元测试
121123
122124``` bash
123- yarn lint
125+ yarn test:unit # --watch : 跟踪文件变化
124126```
125127
126128### e2e(end-to-end) 测试
@@ -129,36 +131,81 @@ yarn lint
129131yarn test:e2e
130132```
131133
132- ### 单元测试
134+ ### 生成(部署包)
133135
134136``` bash
135- yarn test:unit # --watch : 跟踪文件变化
137+ yarn build # --watch: 跟踪文件变化 --report: 生成打包分析
136138```
137139
138- ### 命令帮助
140+ 同时会生成文件名/chunk名[ 映射文件] ( build/~fileName ) (公共代码抽到` _ ` 开头的文件里了)
141+
142+ ### 其他命令
139143
140- ``` bash
141- yarn vue-cli-service help # [命令] : 比如 yarn vue-cli-service help test:e2e
142- ```
144+ #### 指定入口(SPA 逗号分隔)
143145
144- 可配置和使用指定路由配置(请使用别名引用路由配置)进行开发/构建:
145- - 配置 [ .env ] ( .env ) ` _ROUTES ` , 示例 :
146+ 1 . 使用 [ .env ] ( .env ) ` _ENTRIES ` 配置, 示例: ` _ENTRIES=foo,bar `
147+ 2 . 通过cli命令: ` entries ` (覆盖1) :
146148
147149 ``` bash
148- _ROUTES=[[" @iRoute" , " src/pages/index/config/route" , [" iFoo" , " iBar" ]], [" @oRoute" , " src/pages/other/config/route" , [" oFoo" , " oBar" ]]]
150+ yarn dev --entries=foo
151+ yarn build --entries=foo,bar
149152 ```
150153
151- - ` route` 目录结构
154+ #### 指定路由配置(通过别名):
155+
156+ 1 . ` route ` 目录结构
152157
153158 ``` bash
154- ├── route # 全部路由配置文件夹(未指定时默认 )
155- ├── route.foo # 路由配置文件夹 : foo
156- ├── route.bar # 路由配置文件夹 : bar
159+ ├── route # 全部路由配置文件夹(缺省指令 )
160+ ├── route.foo # foo配置 指令 : foo
161+ ├── route.bar # bar配置 指令 : bar
157162 # ...
163+ ```
164+
165+ 2 . 配置 [ .env] ( .env ) ` _ROUTES ` , 示例:
166+
167+ ``` bash
168+ # 配置路由别名, json: [
169+ # [别名, 路径(相对根目录或入口), 默认指令(可省略)] 或者
170+ # [别名, 路径, [允许的指令, ...], 默认指令(可省略)]
171+ # ... ], 可使用cli命令指定指令(优先 --routes=foo.bar,bar.foo )
172+ _ROUTES=[[" @fRoute" , " foo/route" , " foo" ], [" @bRoute" , " src/pages/bar/route" , [" foo" , " bar" ], " bar" ]]
173+ ```
174+
175+ 3 . 通过cli命令: ` routes ` : ` 入口.指令,... `
176+
177+ ``` bash
178+ yarn dev --routes=foo.bar
179+ yarn build --routes=bar # 省略形式: 指令唯一时
180+ yarn build --routes=foo.bar,bar.foo
181+ ```
182+
183+ #### 命令帮助
158184
159- yarn dev --iFoo # 只加载foo配置
160- yarn build --oBar # 只加载foo配置
161- yarn dev --iBar --oFoo # 若多个html入口, 每个入口支持指定一个配置
185+ ``` bash
186+ yarn vue-cli-service help # [命令] : 比如 yarn vue-cli-service help test:e2e
187+ ```
188+
189+ ### 联调
190+
191+ 支持通过浏览器地址栏动态传递调试参数
192+
193+ - 环境变量` SEARCH_FIELD ` : ** 所有** ajax请求将会把满足该正则的参数传递给服务端(开发环境代理服务器)
194+
195+ - 动态代理字段, 通过` PROXY_FIELD ` 指定, 数字与静态代理(` BASE_PATH ` + ` PROXY_TARGET ` )一致, 可以指定为环境变量名(比如 PROXY_TARGET)/ip/域名/完整url. 匹配的代理字段将** 不会** 传递给服务器
196+
197+ ``` bash
198+ # 若文件 .env.development 配置如下:
199+ # 相对路径(hash router)
200+ # BASE_PATH=foo
201+ # PROXY_TARGET=http://foo.com:666/foo
202+ # BASE_PATH1=bar
203+ # PROXY_TARGET1=https://bar.com:999/bar
204+ # PROXY_FIELD=proxy
205+ # SEARCH_FIELD=$PROXY_FIELD\d*
206+ http://{ip}:{port}/{path}? proxy=http://127.0.0.1/foo& proxy1=0.0.0.0
207+ # 结果: BASE_PATH 为 foo 的接口代理到 http://127.0.0.1/foo
208+ # BASE_PATH 为 bar 的接口代理到 https://0.0.0.0:999/bar
162209 ```
163210
164211## 说明及注意事项
@@ -214,7 +261,8 @@ yarn vue-cli-service help # [命令] : 比如 yarn vue-cli-service help test:e2e
214261 - ` @ ` -> ` src `
215262 - ` @com ` -> ` src/components `
216263 - ` @{entry} ` -> 页面入口文件所在目录, 如: ` @index `
217- - ` @{entry}Com` -> 页面入口文件所在目录下的 ` components` 目录, 如: ` @indexCom`
264+ - ` @{entry}Com ` -> 页面入口文件所在目录下的 ` components ` 目录(若存在), 如: ` @indexCom `
265+ - [ 路由配置别名] ( #指定路由配置通过别名 )
218266
219267 ** Tips** : 在 ` scss ` 中使用 ` ~ ` 解析 ` 别名 ` /` 依赖包 ` 对应目录. 示例:
220268
@@ -310,7 +358,7 @@ yarn vue-cli-service help # [命令] : 比如 yarn vue-cli-service help test:e2e
310358
311359- ` enum/type/interface ` 需要导出的直接 ` export ` (否则可能会得到 undefined ), 其他的除了字典(硬编码)和只有默认导出的外, 先定义再` export ` (IDE 提示更友好), 并且` export ` 语句放到最后
312360- 不要使用 ` $ ` 作为组件事件名, 该名字已被[异步组件刷新](src / components / hoc )占用
313- - Vue实例 ** 私有属性** 命名规则(避免 [属性名](https://cn.vuejs.org/v2/style-guide/# 私有属性名-必要) 冲突):
361+ - ** 私有属性** 命名规则(避免 [属性名](https :// cn.vuejs.org/v2/style-guide/#私有属性名-必要) 冲突):
314362 - ` $_ ` 实例命名空间(在保证易维护的前提下可以使用单字母, 但应尽量避免)
315363 - ` _$ ` ** 全局/ 跨组件/ hack ** 命名空间, 命名前应** 先全局搜索** 是否有重复
316364 - ` /^[$_]+_$/ ` 注入** vue data 选项** 命名空间应满足该正则, 即以` _ ` 结尾(因为以` $_ ` 其中一个字符开头的Vue 不会劫持), 命名前应** 先全局搜索** 是否有重复
@@ -607,7 +655,7 @@ yarn vue-cli-service help # [命令] : 比如 yarn vue-cli-service help test:e2e
607655 ` ` `
608656
609657- 所有视图组件可接收props: ` route ` 代替 ` this .$route ` , 区别是: **只在首次进入当前视图或当前视图url发生变化时改变**
610- - 路由视图不需要被缓存的, 可以在 `deactivated`钩子销毁实例(`this.$destroy ()` )或者 ` activated` 钩子进行更新
658+ - 路由视图不需要被缓存的, 可以在meta申明/ ` deactivated ` 钩子销毁实例( ` this .$destroy ()` )或 ` activated ` 钩子进行更新
611659- 为避免渲染错误, 请务必为<b style="color: red;">循环创建的组件</b>**加上 ` key ` **, 特别是 ` tsx / ts / jsx / js ` 中
612660
613661### 配置和优化
@@ -817,6 +865,8 @@ http {
817865 2. 先执行 ` yarn lint ` 等相关命令, 待消除所有错误后, 再提交
818866 3. 确保开发时无相关报错(浏览器中页面遮罩显示错误, 控制台打印警告), 特别注意 ` console .log ` , ` debugger ` 和 ` 定义但未使用变量` , 只在开发环境是警告, 其他都是错误
819867
868+ - 图标概率乱码: ` scss ` 压缩模式下 (compressed mode) 使用 UTF-8 byte order mark (UTF-8 with BOM) 代替 @charset 声明语句导致, 暂时先使用css ` import ' element-ui/lib/theme-chalk/base.css' `
869+
820870### 问题及思考
821871
822872- Vue 异步组件加载失败重试: 最好还是 Vue 对异步组件提供支持[#9788](https://github.com/vuejs/vue/issues/9788)
@@ -829,6 +879,6 @@ http {
829879
830880### 其他
831881
832- - 期待 [vue3.0](https://github.com/vuejs/vue/projects/6) & [webpack 5.0](https://github.com/webpack/webpack/projects/5) [正式版](https://github.com/webpack/changelog-v5/blob/master/README.md)
882+ - 期待 [vue3.0](https://github.com/vuejs/vue/projects/6)及其生态正式版 & [webpack 5.0](https://github.com/webpack/webpack/projects/5) [正式版](https://github.com/webpack/changelog-v5/blob/master/README.md)
833883- ` crypto - js ` v4 **不支持 IE10**
834884- ` TypeScript ` (3.8.2) ` const enum ` 编译为内联代码( ` inline code ` )的支持有限, 尽量使用常量成员, 然后等[更新](https://github.com/microsoft/TypeScript)吧
0 commit comments