关于处理移动端Vue单页面及其内嵌兼容问题

question:由于最近转移了以前的H5项目,重构使用Vue单页面,导致部分手机内嵌或在微信浏览器中无法浏览,或者无法使用ajax请求;手机机型千变万化,系统版本也各种各样,通宵优化上线后成功处理问题 ,也只是兼容大部分主流手机,虽然解决方案并不是很突出,但是查找问题的路太痛苦了

  1. 首先需要解决低版本系统的移动端无法渲染页面,因为低版本浏览器只支持ES5语法,而我在写单页面时基本都使用了ES6语法,所以首先需要全局把ES6语法转换为ES5语法

    这里引用了 babel-polyfill,可以处理使ES6语法转换成ES5语法;

    还有es6-promise,可以处理在低版本中使用Promise,相关ES6 Promise可查询资料 ;

    1.1 安装插件babel-polyfilles6-promise:npm i babel-polyfill es6-promise --save

    1.2 在main.js文件中添加以下代码:

    import 'babel-polyfill'
    import Vue from 'vue'
    import Es6Promise from 'es6-promise'
    Es6Promise.polyfill()

    1.3 最后在 build/webpack.base.conf.js 文件中配置:

    module.exports = {
    ...
    entry: {
    app: ["babel-polyfill", "./src/main.js"]
    }
    ...
    }

    1.4 有可能这时run会报错,需要停止重新运行一下

  2. 在第1步完成时有可能打包后低版本页面展示还是空白,这时检测一下引用的组件是否使用ES6语法的组件(十几个组件一个个排除真是比较痛苦),babel-polyfill在默认状态下不对node_modules里的模块进行编译的,而这里我使用了js-pinyin第三方组件,这个组件在npmjs中标记ES6,只好去掉并让接口处理汉字转拼音了,页面修改了下,打包后终于好了!

  3. 页面正常了,这时在IOS9上ajax请求出问题了(还有vivo 5.x android版本系统及其他),让移动端监测拿错误日志看到的结果,分析由于使用了axios,而axios的github上很明确的标注了

不支持IOS9、IOS10.0,从10.11开始支持,解决方式就是我这边之前引用了jquery(其实不应该引用jquery),使用jquery的ajax来调,搞定

  1. 其他解决:

    4.1 webpack-dev-server >= 2.8.0 的版本在 iOS Safari 下 打开为白屏,版本太高了,当时装的时候就按照最新的装了,这里制定下webpack-dev-server 的版本:npm install --save-dev webpack-dev-server@2.7.1

    4.2 在IOS 10上有可能白屏,这里 build/webpack.prod.conf.js

    找到这块代码,在compress后方添加mangle的配置

    new UglifyJsPlugin({
    uglifyOptions: {
    compress: {
    warnings: false
    },
    mangle: {
    safari10: true
    }
    },
    sourceMap: config.build.productionSourceMap,
    parallel: true
    })
总结下:使用第三方组件一定要排查兼容性,自己踩的坑含着泪也要填成堆

关于处理移动端Vue单页面及其内嵌兼容问题的更多相关文章

  1. 处理 Vue 单页面应用 SEO 的另一种思路

    vue-meta-info 官方地址: monkeyWangs/vue-meta-info (设置vue 单页面meta info信息,如果需要单页面SEO,可以和 prerender-spa-plu ...

  2. Vue单页面骨架屏实践

    github 地址: VV-UI/VV-UI 演示地址: vv-ui 文档地址:skeleton 关于骨架屏介绍 骨架屏的作用主要是在网络请求较慢时,提供基础占位,当数据加载完成,恢复数据展示.这样给 ...

  3. [转] 2017-11-20 发布 另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新

    目的:vue-cli构建的vue单页面应用,某些特定的页面,实现前进刷新,后退不刷新,类似app般的用户体验.注: 此处的刷新特指当进入此页面时,触发ajax请求,向服务器获取数据.不刷新特指当进入此 ...

  4. 另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新

    目的:vue-cli构建的vue单页面应用,某些特定的页面,实现前进刷新,后退不刷新,类似app般的用户体验.注: 此处的刷新特指当进入此页面时,触发ajax请求,向服务器获取数据.不刷新特指当进入此 ...

  5. 处理 Vue 单页面 SEO 的另一种思路

    vue-meta-info 官方地址: https://github.com/monkeyWang... (设置vue 单页面meta info信息,如果需要单页面SEO,可以和 prerender- ...

  6. vue单页面打包文件大?首次加载慢?按需加载?是你打开方式不对

    部署各vue项目,走了一遍坑.... vue单页面应用刷新404 找到nginx多网站配置文件:类似nginx/sites-available/www.baidu.com server { liste ...

  7. [one day one question] Vue单页面应用如何保证F5强刷不清空数据

    问题描述: Vue单页面用按F5强刷,数据就恢复初始了,这怎么破? 解决方案: store.subscribe((mutation, state) => { sessionStorage.set ...

  8. vue单页面处理SEO问题

    设置vue 单页面meta info信息 vue-meta-info,(https://github.com/muwoo/vue-meta-info)如果需要单页面SEO,可以和 prerender- ...

  9. Vue单页面应用阻止浏览器记住密码

    Vue单页面应用阻止浏览器记住密码 ——IT唐伯虎 摘要: Vue单页面应用阻止浏览器记住密码. 现象1:路由切换时再次提示“是否记住密码” 登录页面有个密码输入框,输入账号密码进行登录: 登录完成后 ...

随机推荐

  1. python——re模块(正则表达式)

    re 模块的使用: 1.使用compile()函数编译一个parttern对象, 例如:parttern=re.compile(r'\d+') 2.通过pattern对象提供的一系列属相和方法,对文本 ...

  2. 最大公约数GCD

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入2个正整数A,B,求A与B的最大公约数. Input 2个数A,B,中间用空格隔开.(1<= A,B <= ...

  3. JAVA学习课本内容总结

    二.基本类型 数组 枚举 1.基本类型 逻辑类型 boolean (true/false) 整数类型 byte(8位)  short(16)  int(32)  long(64) 浮点类型 float ...

  4. Abstract factory抽象工厂--对象创建型

    意图: 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类. 别名:Kit 补充: 抽象产品A : (产品A1 和产品 A2) 抽象产品B : ( 产品B1 和 产品B2) 一般情况 ...

  5. POJ 1475 推箱

    推箱 时限:n.2000MS   内存限制:n.131072K 提交材料共计: 6600   接受: 2263   特别法官 描述 想象一下你站在一个二维迷宫里,由方形细胞组成,它们可能或可能不会充满 ...

  6. Ubuntu 16.04安装Bless十六进制编辑器

    一款专注于十六进制的编辑器. 安装: sudo apt-get install bless 启动:

  7. 上帝说:要约炮!于是有了XMPP

    一.导入XMPP框架 下载 XMPPFramework 框架 GitHub: XMPPFramework 导入依赖框架 CocoaLumberjack : 日志框架 CocoaAsyncSocket  ...

  8. 编译Linux使用的.a库文件

    编译Linux使用的.a库文件 首先是须要编译成.a的源文件 hello.h: #ifndef __INCLUDE_HELLO_H__ #define __INCLUDE_HELLO_H__ void ...

  9. Open Flash Chart2 常用的参数

    http://fyzeng.diandian.com/post/2011-07-29/3339982 {   /* 图表标题 */   "title" : {     " ...

  10. android 程序猿跳槽须要注意哪些?

    我是一个工作3年多的android开发,因为公司和个人发展原因.打算跳槽! 这次跳槽又给我好好的上了一课!所以我自己反思总结了一下.然后整理出一下几点 程序猿打算跳槽的时候须要注意的几点. 一 先想好 ...