vue + swiper 踩坑记实(dom7、es6)

现象:

在安卓低版本手机(版本5.1)上白屏问题,在问题机型后复现问题后发现报错。

image.png

找到对应的行发现:

let [t, n, r, i] = e
结论:解构赋值 ——> ES6 语法的兼容问题 ?!
但是很好奇这个是哪里的文件? 于是找了上下文。

最终找到了关键字:dom7

image.png

而 dom7 与 swiper4 的关系:


image.png

所以,原因就是: dom7 使用的是 es6 的语法,但是在使用过程中并没有转换成 es5。

解决方法

方法1

看网上大神的推荐,可以用 swiper3, 也就是降级处理,问题是需要解决版本用法上的区别。(有修改成本,不是最快的解决方案)

方法2(推荐)

一般引入方式是

 import Swiper from 'swiper'  // 也是 Swiper官方推荐

这种方式的问题就在于,加载的是swiper.esm.bundle.js,这个文件,如果不在webpack配置转义的话,就会出现兼容问题。

所以需要修改下

import Swiper from 'swiper/dist/js/swiper.min.js';

why? 因为swiper.min.js是编译好的兼容es6的版本。(修改成本低,快速高效)

方法3 - 添加编译(参考: https://www.jianshu.com/p/cebe2b28df85
  • vue-cli2开发项目:
    修改 webpack.base.conf.js:
module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test'),resolve('node_modules/swiper/dist/js'),resolve('node_modules/dom7/dist')]
      },
  • vue-cli3开发项目:
    新增vue.config.js文件在项目根目录
module.exports = {
  chainWebpack: config => {
    config.rule('js').include.add(/node_modules\/(dom7|swiper)\/.*/)
  }
}

参考链接:
记一次Vue使用Swiper的坑
Vue 2.0+Vue-cli+swiper项目在安卓5.1上白屏的问题

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 2,133评论 0 2
  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 5,335评论 4 31
  • 参考博客1参考博客2这个问题的前提是版本1已经修复了vue2.0在安卓4.4白屏的问题,已经兼容了es6.如果还没...
    清汤饺子阅读 4,842评论 0 1
  • 什么是 webpack 是前端的一个项目构建工具,他是基于 Node.js 开发出来的一个前端工具 如何完美实现上...
    千见阅读 1,517评论 0 0
  • 在实现 egg + vue 服务端渲染工程化实现之前,我们先来看看前面两篇关于Webpack构建和Egg的文章: ...
    hubcarl阅读 6,056评论 0 19