Vue-cli3项目处理包括(i18n/font-spider/xss/wangeditor)
项目开发阶段构建太慢超过300秒,按需加载所有组件也需50秒,转为vue-cli3.0配置少量webpack即可达到10秒的构建速度效果,热重载2秒,可以接受
vue-cli2>>>>vue-cli3
- 项目处理src直接移植到cli3项目
处理pug语法;vue.config.js补充chainWebpack
chainWebpack: config => { config.plugins.delete('prefetch'); config.module .rule('pug') .test(/\.pug$/) .use('pug-plain-loader') .loader('pug-plain-loader') .end(); },
todoList:已解决
- 构建使用history模式去掉hash后必须在public中配置路径模式为绝对路径,nginx处理重定向
苹方字体抽离
- node 使用filesystem将项目中ascii码中文范围内文字抽取去重后得到对应1250个字体
- 使用font-spider压缩pingfangsc得到270k ttf,woff,eot,svg
- nginx配置mime.type 中ttf
- gzip开启font/ttf等
vue首屏渲染方案
wangEditor坑
- 换行获取text纯文本不带空格,纯文本内容无法正常显示
- 有时候会出现spanyes标签,导致filter过滤失败后直接输出,原因为word或wps复制粘贴将样式和特定标签带过来
- 处理时删除有bug,解决方案已经提在https://github.com/wangfupeng...
xss处理
- xss.js处理xss,生成白名单过滤所有非白名单标签,会转化成文本输出入如<会转化为<等;也可定制标签中属性,非对应属性会清空,主要处理对应富文本
- 无论请求亦或回显渲染都需过滤
CSP,项目被植入miner旷工的外置链接
- 设置meta标签如下可以限制外部链接植入
- <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'; style-src 'self' 'unsafe-inline';">
i18n国际化处理
vue-i18n,vue-cli3可使用插件,vue add i18n,项目目录如下
|-src |-lang |-en.json,zh.json |-page |-abc |-lang.json |-abc.vue
在#app中$i18n.locale判断语境,新增最外层类名isEN以便对子元素中英切换时的处理
app(@click.stop="clickBlank" :class="{isEN:isEn}")
router处理,逻辑是在每次跳转先将from来源的参数存储入keysArr,包括lang属性,排序固定为?lang=en&a=123&b=456
function nextWithLang() { let queryKeysArr = Object.keys(to.query); // 如果目标地址没有lang属性,我们需要从前一页取或者默认给一个zh if (!to.query.lang) { let nextPath; // 之前有设置过语言就采用 if (from.query.lang) { nextPath = `${to.path}?lang=${from.query.lang}`; // 将所有属性拍平接在语言之后,如:/?lang=zh&id=123&name=qqq if (queryKeysArr.length > 0) { queryKeysArr.forEach(key => { if (key != 'lang') { nextPath += `&${key}=${to.query[key]}`; } }); } } // 没有设置过语言的话就给默认设置一个zh else { nextPath = `${to.path}?lang=zh`; // 将所有属性拍平接在语言之后,如:/?lang=zh&id=123&name=qqq if (queryKeysArr.length > 0) { queryKeysArr.forEach(key => { if (key != 'lang') { nextPath += `&${key}=${to.query[key]}`; } }); } } next(nextPath); } else { next(); } }
dayjs处理时间戳
- 处理与momeng.js相同
postcss.config.js处理低版本浏览器前缀
module.exports = { plugins: { "autoprefixer": { browsers: ['ie >= 9', 'last 2 versions',"Firefox >= 30",">2%"] } } }
相关推荐
chensen 2020-11-14
lwnylslwnyls 2020-11-06
ATenhong 2020-10-15
yanzhelee 2020-10-13
佛系程序员J 2020-10-10
guojin0 2020-10-08
佛系程序员J 2020-10-08
bluewelkin 2020-09-16
wwzaqw 2020-09-04
zhongdaowendao 2020-09-02
favouriter 2020-08-18
奎因amp华洛 2020-08-15
一青年 2020-08-13
千锋 2020-08-10
nangongyanya 2020-08-09
dongxurr 2020-08-08
明天你好 2020-08-03
kyelu 2020-08-03
Ashes 2020-08-03