Skip to content

Commit 1b4b59c

Browse files
author
蓝狐
committed
2.0.1优化
1 parent 125bee7 commit 1b4b59c

39 files changed

+228
-173
lines changed

Diff for: .gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ test/unit/coverage
66
test/e2e/reports
77
selenium-debug.log
88
备份/
9-
~tpl/
9+
~tpl/
10+
.project
11+
.gitignore

Diff for: README.md

+147-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,148 @@
1+
## 前言
2+
`vue2.0`上线已经有一段时间了,现在`vue2.1`也都已经发布了,是时候来更新基本vue的多页面架手架了。
3+
相信用vue的童鞋,很多一部分在用于spa(单页面)项目,也不排除传统的多页面项目,我们就用vue开发了多页面的webapp,相对于spa开发效率更高,使用单页面或者多页面,最终还是看项目的需求啦。
4+
这一次我们基于`vuejs2+webpack2+vuxui2`(好222的项目)重新发布了全新的vue架手脚,同时还支持二级目录,以解决页面比较多时,便于归类查找的问题。基于webpack2,构建速度高。ajax获取数据,使用`axios`,当然还有其他的优化,咱们先看看demo呗。
5+
demo地址:
6+
http://v.lanchenglv.com/demo/vue2-cli-vux2-multe-page/views/home/list.html
7+
github地址:
8+
https://github.com/bluefox1688/vue-cli-multi-page
19

2-
## vue 2.0多页面已发布,有问题请lssues。
3-
demo地址:http://v.lanchenglv.com/demo/vue2-cli-vux2-multe-page/views/home/list.html
4-
使用教程稍后发布。
10+
## 2.0的主要功能
11+
12+
1. 全局统一使用的模块`Lib.js`
13+
2. 支持字体图标
14+
3. 构建时,增加对css打包的支持
15+
4. 提取公共模块
16+
5. 多页面可使用vue-router2路由
17+
6. 可自定义页面模块名,例如 http:// localhost:8091/`views`/home/list.html,`views`就是我们线上的模块名,1.0版只能固定的
18+
7. 支持二级目录,便于归类,1.0版本时仅支持一级目录
19+
8. 模块下静态文件可直接调用
20+
9. 发送ajax请求,使用`axios`库,简单封装了一个库,为了减少学习成本,封装参数基本与`JQ ajax`一致,如果不需要可直接删除
21+
10. 整合了vue最流行的UI框架,`vuxui2.x``github star` 已接近`8K`了,组件非常全面,并且作者一直有维护,从`0.x`版本我就开始有使用了,具体了解更多,请访问官网 https://vux.li
22+
11. 基于`webpack2`,更高的构建速度,包体积更小,全面支持`ES6 Modules`
23+
12. 热更新,效率提升神器呀
24+
13. 支持`Less`css预处理
25+
14. 获取多页面的url参数的方法
26+
15. 全局注册vue全局过滤器的方法
27+
28+
## Build Setup
29+
clone到本地仓之后,自行`npm **`,都是老司机了,这里也不重复了。
30+
31+
32+
``` bash
33+
# 安装依赖
34+
npm install
35+
36+
# 调试环境 serve with hot reload at localhost:8091
37+
npm run dev
38+
39+
# 生产环境 build for production with minification
40+
npm run build
41+
42+
```
43+
本地默认访问端口为8091,需要更改的童鞋请到项目目录文件`config/index.js`修改。
44+
45+
46+
## 目录结构
47+
```
48+
webpack
49+
|---build
50+
|---src
51+
|---assets #资源
52+
|---css/common.css #css
53+
|---font/ #字体图标
54+
|---js/common.js #自己定义的全局通用事件
55+
|---js/conf.js #项目的配置
56+
|---js/Lib.js #暴露接口给组件调用
57+
|---js/vueFilter.js #注册vue的全局过滤器
58+
|---components 组件
59+
|---Button.vue 按钮组件
60+
|---hb-head.vue head组件
61+
|---views #各个页面模块,模块名可以自定义哦!
62+
|---home #一级目录
63+
|---list #二级目录
64+
|---list.html
65+
|---list.js
66+
|---listApp.vue
67+
|---vuxDemo #一级目录
68+
|---button #二级目录
69+
|---button.html
70+
|---button.js
71+
|---buttonApp.vue
72+
|---calendar #二级目录
73+
|---calendar.html
74+
|---calendar.js
75+
|---calendarApp.vue
76+
......
77+
78+
```
79+
此次2.0版本也优化也可以自定义模块的名称,1.0版时,无法自定义模块名。
80+
例如 http:// localhost:8091/`views`/home/list.html,`views`就是我们线上的模块名,如需修改请到项目目录文件config/index.js修改`moduleName`参数,修改这里的配置的同时,也要同时重命名`/src/views`的这个文件夹名称,是否会报错的。
81+
82+
从目录结构上,各种组件、页面模块、资源等都按类新建了文件夹,方便我们储存文件。其实我们所有的文件,最主要都是放在`views`文件夹里,以文件夹名为html的名称。
83+
例如
84+
85+
``` stylus
86+
|---vuxDemo 一级目录
87+
|---button 二级目录
88+
|---button.html
89+
|---button.js
90+
|---buttonApp.vue
91+
```
92+
就是我们访问时的地址:
93+
94+
``` stylus
95+
http://localhost:8091/views/vuxDemo/button.html
96+
```
97+
98+
`view`里二级文件夹,一个文件夹就是一个html,`js``vue``html` 都统一放在当前文件夹里,当然你也可以继续放其他的资源,例如css、图片等,webpack会打包到当前模块里。
99+
还有一点要注意的,所有的目录都要求为二级,不能一个目录下为一级,另一个目录下有二级。
100+
101+
## Lib.js库使用
102+
103+
我们做多页面开发,那肯定会涉及到全局都能调用的公共库,或者是把别人封装的库也一起打包在全局公共模块里。
104+
105+
如果看过源码的童鞋,在`*.vue`页面里,都统一import了一个文件
106+
107+
```
108+
import Lib from 'assets/js/Lib';
109+
```
110+
这就是全局统一公共模块,我们先看看`Lib.js`里的代码
111+
112+
``` bash
113+
# 导入全局的css
114+
require('assets/css/common.css');
115+
# 导入全局的站点配置文件
116+
import C from './conf';
117+
# 导入全局的共用事件
118+
import M from './common';
119+
120+
export default{
121+
M,C
122+
}
123+
124+
```
125+
`Lib.js``M``C`都是事件调用简写。
126+
例如我们现在想调用APP的名称,在`.vue`里可以这么写
127+
128+
``` bash
129+
import Lib from 'assets/js/Lib';
130+
Lib.C.appname; #蓝橙绿
131+
```
132+
只需要在`*.vue`里导入`import Lib from 'assets/js/Lib';'`,就可以使用全局模块了。
133+
当然你还可以在Lib做一些程序判断,例如权限判断等。
134+
135+
## 公共模块
136+
我们通常会把常用的库都打包公共的模块,`CommonsChunkPlugin` 插件,是一个可选的用于建立一个独立文件(又称作 chunk)的功能,这个文件包括多个入口 chunk 的公共模块。最终合成的文件能够在最开始的时候加载一次,便存起来到缓存中供后续使用。这个带来速度上的提升,因为浏览器会迅速将公共的代码从缓存中取出来,而不是每次访问一个新页面时,再去加载一个更大的文件。
137+
不同的项目,使用到的插件库数量有所不同,我们可以调整`minChunks`以达到公共模块的大小,文件路径为`/build/webpack.prod.conf.js`,cart+F查找`minChunks`参数,`minChunks: 4` 意思代表为至少被4个页面引用了,就打包进入公共模块,具体的使用方法,可以再详细了解`webpack`中文文档。http://www.css88.com/doc/webpack2/plugins/commons-chunk-plugin/
138+
139+
## 存在的问题
140+
1、多页面可以使用vue-router路由,但是无法使用按需加载,即懒加载,研究过在多页面的路由里按需加载,但从未成功,如果有童鞋研究成功了,可以发lssues一起交流哈。
141+
2、暂时还没有做css自动补前缀
142+
3、......
143+
144+
## 结束言
145+
有问题随时lessues哈!
146+
147+
## 文章首发地址:
148+
http://lanchenglv.com/article/2017/0409/vue2-webpack2-cli-vux2-multe-page.html

Diff for: build/webpack.base.conf.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ let webpackConfig = {
6565
limit: 10000,
6666
name: utils.assetsPath('fonts/[name].[ext]')
6767
}
68-
}
68+
},
69+
6970
]
7071
},
7172
plugins: [

Diff for: build/webpack.prod.conf.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ var webpackConfig = merge(baseWebpackConfig, {
8686
new webpack.optimize.CommonsChunkPlugin({
8787
name: 'vendor',
8888
chunks: chunks,
89-
minChunks: 3 || chunks.length
89+
minChunks: 4 || chunks.length
9090
}),
9191
/*
9292
// copy custom static assets

Diff for: config/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var path = require('path')
44
module.exports = {
55

66
//网站模块名,例如 http://192.168.0.216:8089/module/app/initlayer.html 中的
7-
//【views】,默认为views,修改这里的配置的同时,也要同时重命名/src/module的这个文件夹名称
7+
//【views】,默认为views,修改这里的配置的同时,也要同时重命名/src/views的这个文件夹名称
88
moduleName:'views',
99

1010
build: {

Diff for: dist/static/css/vendor.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: dist/static/css/views/home/list.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)