这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情
大家好,我叫小杜杜,在之前讲过一个有关React
的移动端配置,所以今天就用Vue
配置一下移动端,有关React
的移动端配置可以看看:打造开箱即用的 react 移动端框架
这些配置可以自行选择配置,接下来我们一起看看:
1.移动端弹性布局适配方案(lib-flexiblle)
lib-flexible:是淘宝团队总结出来的移动端弹性布局适配方案
原理是通过js实时的检测屏幕的大小并改变html标签的字体大小,再结合rem的特性来完成页面的自适应
执行命令 npm i lib-flexible --save
配置:在main.js 里引入 lib-flexible
,如:
2.路由和vuex
这两个插件直接安装就好:
vue add router
npm i vuex --save
3. 安装sass
安装插件:
npm install --save-dev sass-loader@6.0.6
npm install --save-dev node-sass
注:高版本sass会无法运行
配置:在build文件下的webpack.base.conf.js的rules里添加配置
module: {
rules: [
//...默认及其他
{
test: /\.scss$/,
loaders: ["style", "css", "sass"]
}
]
}
然后在.vue文件中修改style标签:<style lang="scss">
即可
4.全局配置sass
目的:全局引入sass文件之后可以在每个文件中使用
安装插件:npm install --save-dev sass-resources-loader
配置: 在build 中的utils.js中 cssLoaders的return 中的scss修改
scss: generateLoaders('sass').concat(
{
loader: 'sass-resources-loader',
options: {
//这里按照你的文件路径填写
resources: path.resolve(__dirname,'../src/assets/css/common.scss')
}
}
)
如:
在path.resolve()中的路径是引用sass的公用路径名
在这个路径名配置,像这样就可以全局使用了
5.自动删除生产环境的console.log和debugger
安装插件:npm install uglifyjs-webpack-plugin --save
安装:在webpack.prod.conf.js 在new UglifyJsPlugin中写,如下
6.解决打包生成的url使用相对地址找不到路径的问题
安装插件:npm install extract-text-webpack-plugin --save-dev
配置:在build中utils.js中配置,p: '../../', 即可
7.添加Vuex缓存,使状态持久化
vuex-persistedstate:使用浏览器的本地存储( local storage )对状态( state )进行持久化。这意味着刷新页面或关闭标签页都不会删除你的数据。
安装插件:npm install vuex-persistedstate --save-dev
配置:在store.js中引入:
import createPersistedState from 'vuex-persistedstate'
//默认是localStorage,如果是sessionStorage需要更改
plugins: [createPersistedState()]
//会话缓存
plugins: [createPersistedState(
{ storage: window.sessionStorage }
)]
8.将px自动转化为rem
大家都知道,在 PC 端中, css 是以 px 为单位,而在移动端中 是以 rem 为单位,如果做移动端,要进行 px 转化为 rem, 那么就会很麻烦,这是就需要一个插件 自动将其转化
安装插件:npm i px2rem-loader --save-dev
配置:在build中的units.js中加入,在exports.cssLoaders
const px2remLoader = {
loader: 'px2rem-loader',
options:{
remUnit: 75
}
}
注:remUnit 选项意思是 1rem=多少像素,结合 lib-flexible 的方案,我们将 px2remLoader 的 options.remUnit 设置成设计稿宽度的 1/10,这里我们假设设计稿宽为 750px
并在generateLoaders中配置px2remLoader 在loaders中:
const loaders = options.usePostCSS ? [cssLoader,px2remLoader, postcssLoader] : [cssLoader, px2remLoader]
这里有个问题: 就是在开发的时候也会转化成rem,开发和打包都是rem了,所以这里usePostCSS 的false不能设置应该
const loaders = options.usePostCSS ? [cssLoader,px2remLoader, postcssLoader] : [cssLoader]
这时还要配置下webpack.dev.conf.js的usePostCSS改为false
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: false })
}
这样就可以了,
9.移动端点击延迟300毫秒
安装插件:npm install fastclick --save
配置,在main.js中
const FastClick = require('fastclick')
FastClick.attach(document.body) //去掉点击延迟300毫秒
问题在ios下某些输入框内难以拉起输入框
解决:在main.js中
FastClick.prototype.focus = function (targetElement) {
let length;
//兼容处理:在iOS7中,有一些元素(如date、datetime、month等)在setSelectionRange会出现TypeError
//这是因为这些元素并没有selectionStart和selectionEnd的整型数字属性,所以一旦引用就会报错,因此排除这些属性才使用setSelectionRange方法
if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month' && targetElement.type !== 'email') {
length = targetElement.value.length;
targetElement.setSelectionRange(length, length);
/*修复bug ios 11.3不弹出键盘,这里加上聚焦代码,让其强制聚焦弹出键盘*/
targetElement.focus();
} else {
targetElement.focus();
}
};
10.移动端调试工具
安装插件:npm install vconsole --save
配置:在main.js中引入
import Vconsole from "vconsole" //调试工具
const vConsole = new Vconsole();
Vue.use(vConsole);
注意:在这里可以判断环境选择是否添加控制台
11.移动端屏幕可以放大
在index.html中加入
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
12.引入JQ
安装插件:npm install jquery --save-dev
配置:在build中webpack.prod.conf.js中下的webpackConfig的plugins中加入
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery"
})
并且在main.js中配置
import $ from 'jquery'
window.jQuery = $;
window.$ = $;
13.添加校验规则
安装插件:cnpm i async-validator -S
使用方式:import Validator from 'async-validator';
14.配置上面的icon图标
把图片放入static 起名即可
<link rel="icon" href="static/fire.ico" type="image/x-icon" />
15.不会自动刷新浏览器
运行cnpm run dev
的时候不会自动刷新浏览器
解决:在package.json中的dev中加入 --hot
End
最后,大家可以自己配置下有关Vue
的配置,可以自己进行配置一下,喜欢的点个赞👍吧~