lavas是百度出品的基于 Vue.js 的 PWA 解决方案。
使用lavas解决方案对 cnode社区webapp项目hybridApp版进行重构,搭建一个PWA应用。使用cnodeJs社区 提供的api获取数据。
架构:lavas + vant-ui
项目地址:cnode-webapp
cnpm install lavas -g
lavas init
npm install
npm run dev
/core/app.js引入
/* 全局使用UI框架 vant */
import Vant from 'vant';
import 'vant/lib/index.css';
Vue.use(Vant);
要实现这个功能,本质是需要在构建后的根目录配置一个manifest.json给浏览器提供必要的信息
workbox.routing.registerRoute(new RegExp('https://cnodejs.org/api/v1/topics'),
workbox.strategies.cacheFirst());
//将index.html或其他文件加入到预加载页面中
globPatterns: [
'**/*.{html,js,css,eot,svg,ttf,woff}'
]
Skeleton本身直接被注入到了index.html中,在页面的 HTML 结构中就已经包含了 Skeleton,后续渲染成功后再进行替换。如果配合 Service Worker,则可以将 HTML 文件缓存起来,在页面切换时快速展现,达成目标。
1、Skeleton 本身的编写
core文件夹下的Skeleton.vue加上vant的骨架屏组件
<van-skeleton title avatar :row="3" />
2、 配置 Service Worker,添加预缓存文件列表
serviceWorker: {
globPatterns: [
'**/*.{html,js,css,eot,svg,ttf,woff}'
],
// ...
注册指令
import Vue from 'vue';
import { Lazyload } from 'vant';
// options 为可选参数,无则不传
Vue.use(Lazyload, {
loading:'static/img/default-person.png',
error:'static/img/default-person.png'
});
设置懒加载图片
<img v-for="img in imageList" v-lazy="img" >
通过postcss-pxtorem 插件配合 lib-flexible实现
安装 、配置
cnpm install postcss-pxtorem --save-dev
cnpm install lib-flexible --save-dev
// 引入flexble 页面自适应工具之一
import 'lib-flexible/flexible.js'
module.exports = {
plugins: {
// to edit target browsers: use "browserslist" field in package.json
'autoprefixer': {
browsers: ['Android >= 4.0', 'iOS >= 7']
},
'postcss-pxtorem': {
rootValue: 32, //The root element font size
propList: ['*'] //(Array) The properties that can change from px to rem
}
}
};
lavas build