a. reset.less // 重置样式
b. rewrite.less // 根据UI整个修改UI框架(vux)
c. common.less // 自定义全局公用样式
d. mixin.less // 样式函数(色彩规范、字体规范、@2x@3x、伪类扩展点击区域、css3右箭头、点击触发颜色改变等等)
e. index.less // 整个全局样式
a. ajax.js // 封装了axios,拦截请求和响应,请求成功失败统一处理
b. api.js // 整个项目的请求
c. dbClick.js // 为按钮添加指令防止快速连续多次点击
d. fastclick.js // 解决移动端点击延迟
e. filter.js // vue过滤器
f. msg.js // 结合vux消息提示做了全局封装
g. regList.js // 正则集合
h. routerIntercept.js // 全局路由拦截处理
better-scroll // 结合better-scroll 封装了上拉加载下拉刷新的统一操作
Loading.vue // 自定义loading组件
index.js // 路由懒加载
homeSkeleton.vue // 骨架屏模板
a. state.js // 定义全局状态
b. mutations-types.js // 修改全局状态所用常量
c. mutations.js // 同步修改全局状态
d. actions.js // 异步修改全局状态
e. getters.js // 获取全局状态
f. index.js // 整合整个store, 开启store logger
整个项目的视图文件夹
node v8.9.4
npm 5.6.0
# 安装依赖
npm install
# 开发
npm run dev
# 打包
npm run build
or
npm run build --report // 查看打包后的各个资源具体大小,可进行针对性的优化
a. webpack.base.conf.js
// 定义绝对路径
alias: {
'@': resolve('src'),
'assets': resolve('src/assets'),
'router': resolve('src/router'),
'store': resolve('src/store'),
'components': resolve('src/components'),
}
// 集成vux按需加载
module.exports = vuxLoader.merge(oldBaseConf, {
plugins: ['vux-ui']
})
b. webpack.skeleton.conf.js // 骨架渲染供SkeletonWebpackPlugin插件调用
c. webpack.dev.conf.js webpack.prod.conf.js
// 骨架屏插件集成 (vue-skeleton-webpack-plugin)
new SkeletonWebpackPlugin({
webpackConfig: require('./webpack.skeleton.conf'),
quiet: true,
minimize: true,
router: {
mode: 'history',
routes: [
{
path: '*',
skeletonId: 'home'
}
]
}
})
a. index.js
// 修改host,便于在手机上面查看
dev
host: '0.0.0.0',
port: 5555,
// 开启打包gzip, 开启后需安装compression-webpack-plugin
build
productionGzip: true
骨架屏在vue项目首次加载或者刷新进入数据请求较慢的页面时候,利用vue-skeleton-webpack-plugin插件在服务端渲染好指定的骨架页面,从而给用户良好的加载效果,提升用户体验,此模板在路由进行懒加载后,出现的待解决的问题是,骨架屏消失的时机是在分割的js代码加载之前,或者说是对应路由分割的js代码加载的时机实在骨架屏消失之后加载,从而还是出现了白屏,待后续解决。