最近收到一个新的需求,有一个Angular项目需要兼容到 IE8 以上版本,实在让我又惊又喜,惊的是都 2020年了,还甩不掉 IE8 这颗烫手山芋;喜的是第一次接触 Angular项目,不知道又会学到什么新的知识呢。拉到项目代码后,本地启动,果然给我来了迎头痛击。
首先确认本地安装有Node.js环境后,全局安装 Angular-cli ,也就是Angular脚手架,命令行输入:

cnpm install -g @angular/cli

然后就是老步骤,下载node_modules 依赖包

cnpm install

之后直接 ng serve 启动命令有点别具一格的简洁,直接芜湖🛫️

ng serve

接下来,就是见证 奇迹(打脸)的时刻

我敲完命令一回车,啪的一下满屏飙红报错,很快啊,我就看到是依赖包的问题,按照传统功夫的看到为止,我没有看下去,上去就是一个卸载依赖,一个 cnpm install ,我大意了啊,没有删完,接着又是飙红报错。Angular 不讲武德,来欺,为难我入行一年多点的小前端,希望它以后耗子尾汁!

最后在 node_modules 下的 less-loader 加上一句 javascriptEnabled: true ,问题得到解决

项目成功启动,再来解决兼容IE8的问题,Angular,官方文档浏览器兼容部分我们可以看到, IE 10, 11, 9,也就是说连官方都放弃去做IE9一下的兼容了。

忍不住又想吐槽IE一把,但是客户需求在身,只能硬着头皮做了,因为Angular在国内市场的使用还不是特别频繁,所以我在百度没有什么收获之后,决定翻墙去 Google ,Angular 也不亏是 Google的亲儿子。方案当然是有的。需要将Angular版本降低至 1.2一以下可以对IE8进行兼容适配。然后就是传统功夫的卸载新版本,安装旧版本。

<!-- 卸载新版本 -->
cnpm uninstall -g @angular/cli
<!-- 安装新版本 -->
cnpm install -g @angular/cli/1.1

问题得到解决,兼容是好了,样式又乱的简直是乱他妈妈给乱开门 - 乱到家了。不说了,我要去调样式了!