Home

Awesome

移动端项目模板

​ 针对公司项目需求,发现对于一些活动页面的需求还是比较频繁的,需要一个初始模板来减少重复工作,

所以这里我们初始化一个通用项目模板

首先安装预设模板

在vue ui的GUI页面 手动配置即可,注意要设置配置以文件的形式存在(便于后期修改)

vue+vue-router+less

安装移动端适配插件

npm install postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano cssnano-preset-advanced postcss-import postcss-url --S

安装可能会用到移动端UI库(这里我选了了vant),并配置按需加载

npm i vant -S
npm i babel-plugin-import -D

安装完成后修改.postcss.config.js,让移动端适配生效

module.exports = {
  plugins: {
    "postcss-import": {},
    "postcss-url": {},
    "postcss-aspect-ratio-mini": {},
    "postcss-write-svg": { utf8: false },
    "postcss-cssnext": {},
    "postcss-px-to-viewport": {
      viewportWidth: 750, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750
      viewportHeight: 1334, // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置
      unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
      viewportUnit: "vw", // 指定需要转换成的视窗单位,建议使用vw
      selectorBlackList: [".ignore", ".hairlines", "van"], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
      minPixelValue: 0, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
      mediaQuery: false // 允许在媒体查询中转换`px`
    },
    "postcss-viewport-units": {
      filterRule: rule => rule.nodes.findIndex(i => i.prop === "content") === -1
    },
    cssnano: {
      preset: "advanced",
      autoprefixer: false,
      "postcss-zindex": false
    }
  }
};

配置vant的按需加载,修改babel.config.js

module.exports = {
  presets: ["@vue/app"],
  plugins: [
    [
      "import",
      {
        libraryName: "vant",
        libraryDirectory: "es",
        style: true
      },
      "vant"
    ]
  ]
};

其他配置

// 在App.vue中的全局css添加对img标签的兼容出来
img {
  content: normal !important
}
<script src="//g.alicdn.com/fdilab/lib3rd/viewport-units-buggyfill/0.6.2/??viewport-units-buggyfill.hacks.min.js,viewport-units-buggyfill.min.js"></script>
    <script>
      window.onload = function() {
        window.viewportUnitsBuggyfill.init({
          hacks: window.viewportUnitsBuggyfillHacks
        });
      };
    </script>

到这一步基本配置就完成了

观察一下项目,看到单位变成VW说明配置没问题了

优化vue.config.js

  1. 去除打包map文件,关闭eslint(选)

vue.config.js

module.exports = {
  productionSourceMap: false, // 去除map文件
  lintOnSave: false, //关闭eslint
};

其他配置这里不做详细描述

请看文章

Vue-cli3.0的打包性能优化方案

Vue项目的移动端适配