【问题标题】:JavaScript ES6 import syntax?JavaScript ES6 导入语法?
【发布时间】:2019-08-22 02:59:11
【问题描述】:

我只是在测试新的import 语法。但我有点沮丧,因为我必须使用的语法似乎不是我一直在阅读的。为什么下面的语法有效(在 Chrome 中,在扩展程序中)?

import * as lib from "./lib-file.js";

这种特殊语法有哪些替代方法?


编辑:我想我必须澄清一些事情。我试图让它在 Chrome 扩展程序中工作。上面的语法适用于“弹出”脚本(在从那里的 html 文件加载的脚本中)。我写这篇文章是因为我很惊讶我需要“.js”扩展名。

然而,一个新的问题出现了。上述语法在“内容”脚本中不起作用。我得到的错误与我在 html 文件的脚本标记中没有 type="module" 时从弹出窗口中得到的错误相同。 (Uncaught SyntaxError: Unexpected token *) 导入内容脚本时,这看起来像是一个错误,但我完全不确定。我错过了什么吗?


编辑 2:我刚刚发现这篇文章似乎告诉了现在如何解决这些问题:

在 Chrome 扩展中使用 JavaScript ES6 导入/导出模块https://medium.com/@martinnovk_22870/using-javascript-es6-import-export-modules-in-chrome-extensions-f63a3a0d2736


编辑 3: 我刚刚得到了这个实用程序的指针。我注意到他们在浏览器的建议设置中没有使用 ES6 导入。 mozilla/webextension-polyfill:Chrome 中基于 Promise 的 WebExtension API 的轻量级 polyfill 库 https://github.com/mozilla/webextension-polyfill

【问题讨论】:

  • 这只是意味着从给定文件中导入所有带有 lib 前缀的导出模块。导入有多种变体,用例取决于您要导入的模块。
  • @dvlden 谢谢,但我问的是语法,而不是语义。

标签: javascript node.js ecmascript-6 import es6-modules


【解决方案1】:

您可以使用不同的 import 调用 - 如果您的服务器是 Node,甚至可以使用 require

const lib = require("./lib-file");
import "./lib-file";
import libFile from "lib-file"; 

请注意,在第三个中,您需要从您的lib-file.js 转至export libFile

【讨论】:

  • 谢谢,我知道这些变体,但它们与我询问的不同。 (这不在 Node.js 中。)
  • 那你在问哪些关于@Leo的问题?
  • 我想我看到了这个变种import * as lib from "lib-file"。还有一个带有“./lib-file”的变体。
  • 我刚刚测试了您的第二个和第三个变体。我不能让他们工作。 (我使用的是“使用严格”。)
  • 嗯,我的错。也许他们工作。我错过了现在的错误来自“content.js”(在当前选项卡上下文中运行的文件)。在那里导入不适用于我使用的语法(也可能不适用于其他语法。从“content.js”我收到错误Uncaught SyntaxError: Unexpected token *。根据我现在的经验,我理解这是因为要导入的文件不是找到了。
猜你喜欢
  • 2018-01-15
  • 2016-05-24
  • 2016-10-11
  • 1970-01-01
  • 2016-10-25
  • 2016-03-24
  • 2020-10-21
  • 1970-01-01
相关资源
最近更新 更多