博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React全家桶框架兼容IE8教程
阅读量:5809 次
发布时间:2019-06-18

本文共 1973 字,大约阅读时间需要 6 分钟。

本着学习的目的,在框架基础上,做了最小的修改,使框架兼容了IE8浏览器。

预览地址:

源码地址:

这是一个痛苦的过程,不过看到结果还是非常开心的。

下面就让我们开始吧。

第一部分,我们先修改开发坏境及开发配置文件~

  1. react降级

    `npm install react@0.x.x react-dom@0.x.x --save`
  2. webpack降级到v1

    备注:网上也有很多人说,webpack v3也能兼容IE8,但是我试了很长时间也没搞好。被迫降版本了,这里应该是我的问题。`npm install webpack@1.x.x  webpack-dev-server@1.x.x --save-dev`
  3. babel-loader降级

webpack 1.x 对应 babel-loader <= 6.x

npm install babel-loader@6.x.x --save-dev

  1. 修改webpack配置文件,至兼容v1的状态。在我们的项目中,主要修改

    `webpack.common.config.js`和`webpack.dev.config.js`里面的`module->rules`,改回`loaders`。
  2. 删除react-hot-loader相关的代码

    • webpack.dev.config.js 直接删除entry,删除尾部的webpack.merge的自定义函数。
    • .babelrc
    • src/index.js
  3. new webpack.HashedModuleIdsPlugin()删除。因为这不是webpack v1的。
  4. 现在就可以npm start启动了,IE8浏览器打开来,你发现是空白的。没关系,打开调试器,看什么错误。

这里注意下,我用虚拟机通过局域网IP访问的,直接打不开页面,报错Invalid Host header

修改package.json->start命令,增加--public 192.168.x.x ,后面的IP为你的局域网IP就可以啦。

  1. 接着说错误。现在我们看到的脚本错误应该是“缺少标识符”。

    参考[这里](https://github.com/xcatliu/react-ie8),我们使用`es3ify`。`npm install --save es3ify-webpack-plugin``webpack.commn.config.js`使用插件。
  2. npm start,发现错误换了,“对象不支持此属性或方法”。

    这次我们使用`es5-shim`。`npm install --save es5-shim``webpack.common.config.js`修改入口`entry->app`
    app: [        "es5-shim", "es5-shim/es5-sham",        "babel-polyfill",        path.join(__dirname, 'src/index.js')    ]
    这里我有个问题,必须删除`entry`里面的`vendor`和`plugins`里面`CommonsChunkPlugin`相关的代码。不删除IE8就一直报错,我开始猜是要把`es5-shim/shame/babel-polyfill`等提取出来,独立于`app`和`vendor`。但是提取了还是不行唉,学艺不精~只能先删除了。
  3. 继续执行,又是错误“例外被抛出且未被接住”。

    `npm install export-from-ie8 --save`然后`webpack.common.config.js`使用
    postLoaders: [        {            test: /\.js$/,            loaders: ['export-from-ie8/loader']        }    ]
  4. 现在你再执行,发现IE8可以正常访问了。嘿嘿嘿。最好我们把BrowserRouter改成HashRouter,这样路由切换页面就不会刷新啦。

到目前为止,开发坏境已经OK了,下面就是修改生产坏境的配置文件了。

  1. extract-text-webpack-plugin插件降级。

npm install --save-dev extract-text-webpack-plugin@1.0.1

然后按修改配置文件。

  1. uglifyjs-webpack-plugin增加兼容IE8参数。

做了这两项,你执行npm run bundle,发现生产坏境也OK了。

虽然最终做出了兼容IE8的版本,但是还有很多地方搞不太懂的。后续会继续学习,改进,更新的。

做这个任务的时候,参考了很多很多的文章,我就不一一列举了,感谢!

转载地址:http://xmjbx.baihongyu.com/

你可能感兴趣的文章
无法启动MYSQL服务”1067 进程意外终止”解决的方法
查看>>
tomcat 连接池拦截器
查看>>
bzoj1650[Usaco2006 Dec]River Hopscotch 跳石子*
查看>>
基于matlab信噪比程序
查看>>
Visual Studio进行负载测试,RIG和负载测试术语- Part II
查看>>
尝试用Gearman实现分布式处理(PHP)
查看>>
Error: "源代码不可用于此位置"
查看>>
Python知识点-字符串格式化几种方式
查看>>
市场营销魔力:欲望的安慰剂效应 - Levels of marketing magic, the placebo effects of desire...
查看>>
编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。...
查看>>
jdk设置
查看>>
Android之Gson解析JSON数据
查看>>
对Sqlserver的高级操作
查看>>
VS2003.NET在文件中查找卡死
查看>>
王世杰
查看>>
XCode4.2iOS各模板简述
查看>>
链路层
查看>>
unity UGUI动态字体显示模糊
查看>>
由火车进站引出的问题
查看>>
poj3169 最短路(差分约束)
查看>>