Skip to content

案例:运行在 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>

Last updated: