Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

记录 react+antd 兼容 ie8 的一些坑 #1

Open
Bowen7 opened this issue Dec 28, 2018 · 1 comment
Open

记录 react+antd 兼容 ie8 的一些坑 #1

Bowen7 opened this issue Dec 28, 2018 · 1 comment
Labels

Comments

@Bowen7
Copy link
Owner

Bowen7 commented Dec 28, 2018

访问 https://bowencodes.com 以获得最佳体验

因为毕设要求兼容ie8,所以这几天先把整个开发框架搭出来了,我整理过后会发出来

配置主要参考了以下链接:

React

首先,ReactV15不支持ie8,所以我只能妥协使用0.14的版本,由于ie8一些功能的缺失,需要引入一些库:

  • es5-shim:es5兼容库
  • es3ify-loader:解决es3语法兼容问题
  • es6-promise:promise的一个polyfill
  • console-polyfill:由于ie8的奇葩特性,在打开控制台时才会有console属性,所以console也需要一个polyfill

antd

接着,我引入了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中出现了这种代码:

export { createLocation, locationsAreEqual } from './LocationUtils'

最后被babel转成了Object.defineProperty
我当时想了两种解决方法,一是改源码,二是降级,最后我选择了降级,使用了react-router@2.3.0,不过这个版本的react-router写起来很难受,地址后面还要跟一串字符,体验很差。

一个简单的框架就搭起来了,但这才是刚刚开始,后续根据需求会考虑引入redux等,我在ie8开发中遇到的坑也会持续更新在这篇文章中

@Bowen7 Bowen7 pinned this issue Dec 28, 2018
@Bowen7 Bowen7 unpinned this issue Dec 28, 2018
@Bowen7 Bowen7 added the ie8 label Dec 28, 2018
@xj-L
Copy link

xj-L commented Dec 28, 2018

好文,mark,以后参考

@Bowen7 Bowen7 changed the title 记录react+antd兼容ie8的一些坑 1. 记录 react+antd 兼容 ie8 的一些坑 Aug 4, 2020
@github-actions github-actions bot changed the title 1. 记录 react+antd 兼容 ie8 的一些坑 1. 记录 react+antd 兼容 ie8 的一些 Aug 4, 2020
@github-actions github-actions bot changed the title 1. 记录 react+antd 兼容 ie8 的一些 1. 记录 react+antd 兼容 ie8 的一些坑 Aug 4, 2020
@github-actions github-actions bot changed the title 1. 记录 react+antd 兼容 ie8 的一些坑 记录 react+antd 兼容 ie8 的一些坑 Aug 6, 2020
@github-actions github-actions bot changed the title 记录 react+antd 兼容 ie8 的一些坑 记录 react+antd 兼容 ie8 的一些坑2 Aug 20, 2020
@github-actions github-actions bot changed the title 记录 react+antd 兼容 ie8 的一些坑2 记录 react+antd 兼容 ie8 的一些坑 Aug 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants