Skip to content

实用技巧 ​

本页收集了一些经常被问到、但出于设计理念无法放进界面的功能。

ES6 模块 ​

规则之间不能导入或导出 ES6 模块,但可以使用来自互联网的模块,例如这样:

js
;(async () => {
  const { module } = await import("https://...")
  // your code is here
})()

像 2.x 版本那样加载模块 ​

从 3.x 版本起,模块在首次加载后会被缓存,之后只能在模块编辑窗口中手动更新。模块不再从网站的 DOM 树加载,而是直接嵌入脚本。

如果需要从 DOM 加载,或者外部脚本需要频繁更新,最好不要使用扩展的模块功能,而是直接通过 JS 加载:

js
Promise.allSettled([
  loadScript("https://...js"),
  loadScript("https://...js"),
]).then(() => {
  // your code is here
})

function loadScript(src) {
  return new Promise(function (resolve, reject) {
    const script = document.createElement("script")
    script.src = src
    script.onload = resolve
    script.onerror = reject
    document.head.append(script)
  })
}