我可以在现代 Swift 的 JavaScriptCore 中加载 JS ES6+ 模块吗?
Posted
技术标签:
【中文标题】我可以在现代 Swift 的 JavaScriptCore 中加载 JS ES6+ 模块吗?【英文标题】:Can I load JS ES6+ modules in modern Swift’s JavaScriptCore? 【发布时间】:2020-02-13 18:20:26 【问题描述】:使用 javascriptCore,我想将现代 Javascript 代码库的一部分集成到适用于 ios/ipados 13 的 Swift 5.x 程序中。JS 代码广泛使用 ES6+ 功能。例如:async/await
、静态导入 (import * as something from “something.js”
) 和动态导入 (`await loadedModule = import(“something.js”);
根据 2018 年的这篇文章,似乎导入语句当时没有正确实现:How to import modules in Swift's JavaScriptCore?
(我认为恢复该帖子不合适,因为此时发生了很多变化。)
从那时起,JavaScriptCore 是否集成了这些功能?据我了解,如果它们在 Safari 浏览器中工作,那么它们也应该在独立的 JavaScriptCore 中工作(或者假设是错误的)?我认为使用 babel 或 webpack 来转换我的代码并不实用。
如果可能的话,我如何从 Swift 中加载这种 JavaScript?
编辑:
我仍然得到
JS Exception: SyntaxError: Unexpected token '*'. import call expects exactly one argument.
当我尝试以下操作时:
import * as mod from "./mod.js";
【问题讨论】:
这能回答你的问题吗? How to import modules in Swift's JavaScriptCore? 【参考方案1】:答案是“不”,但我可以使用 Babel 将具有静态导入/导出的文件转换为包含 require
s 的代码,并在 Swift 中实现我自己的 require
版本来模拟我想要的。
【讨论】:
以上是关于我可以在现代 Swift 的 JavaScriptCore 中加载 JS ES6+ 模块吗?的主要内容,如果未能解决你的问题,请参考以下文章
在现代站点中添加 SPFx webpart 时的 Javascript
在现代浏览器中,JavaScript 小书签是不是有任何安全限制?
如何有效地将 google-closure javascript 转换为现代 ES6?