案例:运行在 IE11
CodeMirror 全部使用 ECMAScript 2018 语法编写(避免某些构造函数需要降级编译成 ES5 的尴尬),几乎完全是 ES5 的标准库。
这意味着不用很多垫片,就可以让它运行在 IE 上,但是分发的文件使用的是 E2015 语法,仍然得编译语法降级成 ES5。所以需要一些打包器来加载这些模块,您可以使用打包器插件连接 Babel 或者其他语法降级器。
使用 Rollup 的话,配置文件大概长这样:
javascript
import babel from "@rollup/plugin-babel"
import resolve from "@rollup/plugin-node-resolve"
export default {
input: "./editor.js",
output: {
file: "./www/editor.js",
format: "umd"
},
plugins: [
babel(),
resolve()
]
}
库中所有 for/of
循环都是基于数组,需要的话,您可以使用 Babel 插件优化它们,像是 transform-for-of-as-array
。
库使用了 3 种 IE11 不支持的特性。所以您需要加载如下垫片:
- Promise
- Object.assign
- ChildNode.remove
这些功能不可用时,您可以手动编码定义它们,也可以使用 polyfill.io 服务来获取它们。如下:
HTML
<script src=
"https://polyfill.io/v3/polyfill.min.js?features=Promise%2CObject.assign%2CElement.prototype.remove"
></script>