关于处理移动端Vue单页面及其内嵌兼容问题
关于处理移动端Vue单页面及其内嵌兼容问题
question:由于最近转移了以前的H5项目,重构使用Vue单页面,导致部分手机内嵌或在微信浏览器中无法浏览,或者无法使用ajax请求;手机机型千变万化,系统版本也各种各样,通宵优化上线后成功处理问题 ,也只是兼容大部分主流手机,虽然解决方案并不是很突出,但是查找问题的路太痛苦了
首先需要解决低版本系统的移动端无法渲染页面,因为低版本浏览器只支持ES5语法,而我在写单页面时基本都使用了ES6语法,所以首先需要全局把ES6语法转换为ES5语法
这里引用了 babel-polyfill,可以处理使ES6语法转换成ES5语法;
还有es6-promise,可以处理在低版本中使用Promise,相关
ES6 Promise可查询资料 ;1.1 安装插件
babel-polyfill和es6-promise:npm i babel-polyfill es6-promise --save1.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会报错,需要停止重新运行一下在第1步完成时有可能打包后低版本页面展示还是空白,这时检测一下引用的组件是否使用ES6语法的组件(十几个组件一个个排除真是比较痛苦),
babel-polyfill在默认状态下不对node_modules里的模块进行编译的,而这里我使用了js-pinyin第三方组件,这个组件在npmjs中标记ES6,只好去掉并让接口处理汉字转拼音了,页面修改了下,打包后终于好了!页面正常了,这时在IOS9上
ajax请求出问题了(还有vivo 5.x android版本系统及其他),让移动端监测拿错误日志看到的结果,分析由于使用了axios,而axios的github上很明确的标注了

不支持IOS9、IOS10.0,从10.11开始支持,解决方式就是我这边之前引用了jquery(其实不应该引用jquery),使用jquery的ajax来调,搞定
其他解决:
4.1
webpack-dev-server>= 2.8.0 的版本在 iOS Safari 下 打开为白屏,版本太高了,当时装的时候就按照最新的装了,这里制定下webpack-dev-server的版本:npm install --save-dev webpack-dev-server@2.7.14.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单页面及其内嵌兼容问题的更多相关文章
- 处理 Vue 单页面应用 SEO 的另一种思路
vue-meta-info 官方地址: monkeyWangs/vue-meta-info (设置vue 单页面meta info信息,如果需要单页面SEO,可以和 prerender-spa-plu ...
- Vue单页面骨架屏实践
github 地址: VV-UI/VV-UI 演示地址: vv-ui 文档地址:skeleton 关于骨架屏介绍 骨架屏的作用主要是在网络请求较慢时,提供基础占位,当数据加载完成,恢复数据展示.这样给 ...
- [转] 2017-11-20 发布 另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新
目的:vue-cli构建的vue单页面应用,某些特定的页面,实现前进刷新,后退不刷新,类似app般的用户体验.注: 此处的刷新特指当进入此页面时,触发ajax请求,向服务器获取数据.不刷新特指当进入此 ...
- 另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新
目的:vue-cli构建的vue单页面应用,某些特定的页面,实现前进刷新,后退不刷新,类似app般的用户体验.注: 此处的刷新特指当进入此页面时,触发ajax请求,向服务器获取数据.不刷新特指当进入此 ...
- 处理 Vue 单页面 SEO 的另一种思路
vue-meta-info 官方地址: https://github.com/monkeyWang... (设置vue 单页面meta info信息,如果需要单页面SEO,可以和 prerender- ...
- vue单页面打包文件大?首次加载慢?按需加载?是你打开方式不对
部署各vue项目,走了一遍坑.... vue单页面应用刷新404 找到nginx多网站配置文件:类似nginx/sites-available/www.baidu.com server { liste ...
- [one day one question] Vue单页面应用如何保证F5强刷不清空数据
问题描述: Vue单页面用按F5强刷,数据就恢复初始了,这怎么破? 解决方案: store.subscribe((mutation, state) => { sessionStorage.set ...
- vue单页面处理SEO问题
设置vue 单页面meta info信息 vue-meta-info,(https://github.com/muwoo/vue-meta-info)如果需要单页面SEO,可以和 prerender- ...
- Vue单页面应用阻止浏览器记住密码
Vue单页面应用阻止浏览器记住密码 ——IT唐伯虎 摘要: Vue单页面应用阻止浏览器记住密码. 现象1:路由切换时再次提示“是否记住密码” 登录页面有个密码输入框,输入账号密码进行登录: 登录完成后 ...
随机推荐
- 洛谷 2633 BZOJ 2588 Spoj 10628. Count on a tree
[题解] 蜜汁强制在线... 每个点开一个从它到根的可持久化权值线段树.查询的时候利用差分的思想在树上左右横跳就好了. #include<cstdio> #include<algor ...
- 【02】bootstrap起步
起步 简要介绍 Bootstrap,以及如何下载.使用,还有基本模版和案例,等等. 下载 Bootstrap (当前版本 v3.3.5)提供以下几种方式帮你快速上手,每一种方式针对具有不同技能等级的开 ...
- hdu 1533KM算法
#include<stdio.h> #include<string.h> #include<math.h> #define inf 0x3fffffff #defi ...
- resin4开启jmx
https://blog.csdn.net/liuxiao723846/article/details/51321010 https://blog.csdn.net/u010342008/articl ...
- 关于Git的简单使用
新电脑git push一直出问题,到现在也没有解决,但是一些git的命令还是有用的,就先记下来吧.(下图就是没解决的报错) 一.上传本地项目到git 1.初始化git git init 2.配置用户名 ...
- [bzoj1582][Usaco2009 Hol]Holiday Painting 节日画画_线段树
Holiday Painting 节日画画 bzoj-1582 Usaco-2009 Hol 题目大意:给定两个n*m的01网格图.q次操作,每次将第二个网格图的子矩阵全部变成0或1,问每一次操作后两 ...
- [poj1704]Georgia and Bob_博弈论
Georgia and Bob poj-1704 题目大意:题目链接 注释:略. 想法:我们从最后一个球开始,每两个凑成一对.如果有奇数个球,那就让第一个球和开始位置作为一对. 那么如果对手移动的是一 ...
- 安装elasticsearch遇到的签名和目标被配置多次的问题
命中:6 http://ppa.launchpad.net/ondrej/php/ubuntu bionic InRelease获取:7 http://packages.elastic.co/elas ...
- Android 学习历程摘要(三)
1.proguard混淆:对与Activity等不应进行混淆.否则系统将找不到生命周期函数:JSON字符串要考虑混淆之后是否会影响字段名:native方法也不混淆,否则调用不到 2.ListView的 ...
- C/C++异常处理机制
1.C语言异常处理 1.1 异常终止 标准C库提供了abort()和exit()两个函数,它们可以强行终止程序的运行,其声明处于<stdlib.h>头文件中.这两个函数本身不能检测 ...