正常操作,正常分析,大家好,我是D1n910
Nuxt其实是很爽的开箱即用的SSR方案。
它本身就已经继承了大量的轮子。
Nuxt本身默认兼容到ie9。
做的项目发现却不能够在ie9上跑,甚至不能在ie10上跑。
总结有以下几种情况和对应方式(感觉不仅仅是nuxt,其他的也可以这么做)
一、第三方包代码不兼容ie9
用nuxt自带的babel进行转换。babel转换默认不会转换第三方node_modules/下的内容。
通过 开发者工具的报错 抓到对应的第三方包名称。
通过配置文件nuxt.config.js下的build属性的transpile,可以针对需要解析的第三方包进行转换。
比如这里的ismobile.js的const就没做转换,可以添加上去后进行转换。
二、使用了未定义的javascript对象
比如使用了Map对象,IE10及其以下版本不支持Javascript Map对象,会提示“Map”未定义。
那么可以引入对应的core-js包进行转换。
新建一个文件夹 /plugins/core.js
这里引入对应的转换包
通过配置文件nuxt.config.js下的plugins属性,添加刚刚的core(放到第一位)
然后就可以转换成功了
三、使用了高级js原型链prototype的方法
比如我在根文件html使用了includes方法,那么就会报送includes错误。通过改为低版本的的方法实现,比如我改为indexOf判断。
以上的内容就差不多了。
四、使用了不兼容的第三方js
如果你引用了第三方js的cdn然后报错,比如我这边用了iconfont的js的cdn,需要下载后作为本地js文件然后转换处理。
核心内容还是用的babel,做了以上内容,基本上可以兼容到ie9.
什么?兼容到ie6?你再说一遍?喂喂喂,我在服务器……哎呀,风大听不见啊喂……先这样,挂了。bye
-- END --