一、ui咱们使用的是vux,庆幸的是,解决了打包过大的问题,css
二、这里使用的是rem布局,移动端仍是要使用ipad和不一样尺寸的手机html
三、版本:webpack:3.6.0 vue:2.5.2 vue-loader:13.3.0 vux:2.8.1 vux-loader:1.2.7 版本很重要,版本很重要,版本很重要,vue及生态更新太快,控制好版本,之前的版本就是打包过大!!!vue
四、vue异步加载组件基于vue-loader13.0.0之后的最近写法node
五、使用的是官方脚手架,这里默认你已经使用了最新的脚手架,建立了一个新的项目,在最新的基础上进行配置,webpack
若是你没有初始化项目,看官方教程:https://doc.vux.li/zh-CN/install/biolerplate.htmlgit
下载vux 以及loadergithub
npm install vux vux-loader --save
接下来咱们打开vux官方文档web
https://doc.vux.li/zh-CN/install/manual-usage.htmlvue-cli
# 官方要求咱们如此作 引入 reset.less,默认样式不包含reset,而且部分用户本身有一套reset样式,所以须要在App.vue进行手动引入 配置 vue-loader(经过配置vux-loader实现) 配置babel-loader以正确编译 VUX 的js源码(经过配置vux-loader实现) 安装less-loader以正确编译less源码 添加 viewport meta 添加 Fastclick 移除移动端点击延迟 添加 webpack plugin, 在构建后去除重复css代码(经过配置vux-loader实现)
<template> <div id="app"> <router-view></router-view> </div> </template> <script> export default { name: 'App' } </script> <style lang="less"> @import './static/css/reset.less';//本地本身的移动端样式 @import '~vux/src/styles/reset.less';// vux的样式 </style>
由于vue-cli升级后,须要这样手动来改, --表示我去掉的代码,++表示我加入的代码npm
babel-loader
以正确编译 VUX 的js源码(经过配置vux-loader实现)在根目录下有一个文件.babelrc "plugins": ["transform-vue-jsx", "transform-runtime", {"name":"vux-ui"}], 其中{"name":"vux-ui"}须要咱们手动来添加进去
less-loader
以正确编译less源码npm install less less-loader --save-dev 执行命令就能够了
viewport
meta在根目录下的index.html文件里加入后以下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <title>smartbi</title> </head> <body> <div id="app"></div> </body> </script> </html> 固然,若是你是自适应的移动端应用,不在这里添加viewport也是能够的,由于咱们要动态来添加视口,已达到自适应的目的
Fastclick
移除移动端点击延迟在main.js文件里添加 const FastClick = require('fastclick') FastClick.attach(document.body) 固然在移动端里边可能会出现没法点击的问题,也许你加上以下代码就会解决 import {Script} from 'vm'
在main.js里边引入一个js import '../src/static/js/rem'// 为自适应rem布局,移动端确定要用的 接下来说讲怎么用我把rem.js里边的代码拿出说说,不长 ( function (doc, win) { /** 获取像素比 */ var pixelRatio = 1 / window.devicePixelRatio /** 经过js动态设置视口(viewport) */ document.write('<meta name="viewport" content="width=device-width,initial-scale=' + pixelRatio + ',minimum-scale=' + pixelRatio + ',maximum-scale=' + pixelRatio + '" />') /** 条件:尺寸越大,则字体大小越大。尺寸越小,则字体大小越小。 获取html节点 */ var html = document.getElementsByTagName('html')[0] // 获取屏幕宽度 var pageWidth = html.getBoundingClientRect().width // 屏幕宽度 / 固定数值 = 基准值 html.style.fontSize = pageWidth / 16 + 'px' } )(document, window) ----------------------------------------------------------------------------------------- 在这里咱们动态添加了视口,在这里设置的固定数值为16,若是你以苹果六、7位基准的话,屏幕宽度375 / 固定值16 = 基准值 23.4375 + 'px' 实际开发中咱们的样式用less,定义一个变量@rem: 1px ; @rem: 23.4375rem;开发的时候这样用: div{ height: 20/@rem; widht: 10/@rem; } 若是你没引入了rem.js,你就用变量@rem: 1px;注释掉@rem: 23.4375rem; 若是引入了rem.js就注释掉@rem: 1px; 使用@rem: 23.4375rem; 这样的话,即便boss说不搞自适应了,你也不会改太多的代码, 至于固定值,你能够随便写,好比好计算的15,这样你定义@rem :25rem;就能够了(375/15=25); 关于视口的在这里不作太多的解释,请自行百度,而且视口的概念很重要仍是要看看的
之前在router.js里边这样写 const space = resolve => require(['../components/common/space'], resolve); 13.0.0之后要这样写 const index = () => import('@/pages/index').then(m => m.default)
在跟目录下,config文件夹有个indexjs 将 assetsPublicPath: '/', 修改为 assetsPublicPath: './',
webpack其余的配置还不太好说,毕竟webpack4.0出来了,改动太大了!!!!!!!!!!!!!!!!!!!!!!!!!!!
https://github.com/fooller/vue-template-mobile.git