You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
最开始,我直接引入了react-router-dom@^4.2.2,报了Exception thrown and not caught的错,一看,是代码里出现了Object.defineProperty,这个方法很坑,模拟不了,加什么polyfill都没用,司徒正美说通过VBScript实现了,我没深究,感兴趣的可以研究一下。出现Object.defineProperty是因为babel把export * from 'xxx这种格式的代码转化为Object.defineProperty实现了。
我看了下react-router-dom的源码,很规矩的先引入再输出,并没有连在一起,但在其依赖库的history中出现了这种代码:
访问 https://bowencodes.com 以获得最佳体验
因为毕设要求兼容ie8,所以这几天先把整个开发框架搭出来了,我整理过后会发出来
配置主要参考了以下链接:
React
首先,ReactV15不支持ie8,所以我只能妥协使用0.14的版本,由于ie8一些功能的缺失,需要引入一些库:
es5-shim
:es5兼容库es3ify-loader
:解决es3语法兼容问题es6-promise
:promise的一个polyfillconsole-polyfill
:由于ie8的奇葩特性,在打开控制台时才会有console属性,所以console也需要一个polyfillantd
接着,我引入了
antd
,最开始我使用的时0.12.x版本引入后报错,发现antd依赖的一个库Velocity.js在低版本的ie下需要jq辅助,遂在全局引入jq
继续测试时发现,在build之后,icon显示不正常,诡异的是,字体文件是向file://也就是本地文件请求,但应该通过http请求才对,查看源码,它的css文件中font-face的属性是src:url('//at.alicdn.com/xxxxx'),我自己写了一个css文件加上了https,覆盖了这个style,解决了这个问题。
最后,我把antd升级到了^1.11.6版本,其font-face的src: url('https://at.alicdn.com/xxxx'), 已经加上了https,就不用多管了。
router
本来我是想自己写一个router的,但图方便,还是看看router的兼容性怎么样
最开始,我直接引入了
react-router-dom
@^4.2.2,报了Exception thrown and not caught的错,一看,是代码里出现了Object.defineProperty
,这个方法很坑,模拟不了,加什么polyfill都没用,司徒正美说通过VBScript实现了,我没深究,感兴趣的可以研究一下。出现Object.defineProperty
是因为babel把export * from 'xxx
这种格式的代码转化为Object.defineProperty
实现了。我看了下
react-router-dom
的源码,很规矩的先引入再输出,并没有连在一起,但在其依赖库的history中出现了这种代码:最后被babel转成了
Object.defineProperty
,我当时想了两种解决方法,一是改源码,二是降级,最后我选择了降级,使用了
react-router
@2.3.0,不过这个版本的react-router
写起来很难受,地址后面还要跟一串字符,体验很差。一个简单的框架就搭起来了,但这才是刚刚开始,后续根据需求会考虑引入
redux
等,我在ie8开发中遇到的坑也会持续更新在这篇文章中The text was updated successfully, but these errors were encountered: