在 JavaScriptCore 中加载 AMD 模块

Loading AMD module inside JavaScriptCore

我想在 JavascriptCore 中加载一个 javascript 模块(在 iOS 上)。

我正在通过 iOS 端的普通 HTTP 请求获取文件的文本。所以我可以将整个字符串解析到 JScontext 中。

但现在我想加载该模块,理想情况下,解决任何其他依赖项,尽管这不是必需的。

我试过对节点使用requireJS,但它似乎有很多依赖错误,也许它有点过时了。

我也试过偷,但我也不确定那是否是正确的路径。我也试过这个。 https://github.com/millermedeiros/nodefy

本质上我想做 require js 在浏览器中做的事情,但是在一个纯粹的 javascript 环境中(没有浏览器,没有节点)。

我也想使用 browserify 将所有东西捆绑在一起,并且已经看过这样的东西 - RequireJS load string

问题是,当我去 browserify 代码时,(requiring, requirejs) 过程因未找到的依赖项而失败?

任何人都可以指出正确的方向吗?

您提到的技术彼此之间并不完全兼容。考虑像 require('meow') 这样的行。对于 browserify/webpack/etc,将加载的文件是 node_modules/meow/main.js(取决于 package.json 所说的是主文件)。在 requirejs 中,这个相同的文件将通过浏览器或从项目的 baseUrl 根加载路径 /meow。覆盖它的方法是在 requirejs 中添加配置选项。这真的很痛苦,因为它实际上导致您为 node_modules 中的每个包创建一个条目。简而言之,如果不做大量工作,你无法真正将 requirejs 和 browserify 结合起来。

要使用 browserify 或 webpack 设置代码拆分,您需要为捆绑包定义一个新的入口点。然后,当您从应用程序加载它时,您需要通过执行 fetch('https://myserver.com/bundle2.js').then()... 之类的操作来加载该 js 包。有一些工具可以帮助您使用 webpack 或 browserify 执行此操作。

  1. Browserify 的一些策略 - http://esa-matti.suuronen.org/blog/2013/04/15/asynchronous-module-loading-with-browserify/
  2. Webpack - https://webpack.github.io/docs/code-splitting.html

目前(截至 2017 年),网络上关于此的报道不是很好。大多数系统以某种自定义方式执行此操作。