在客户端加载本机插件

loading native addons on client side

本文关键字:插件 本机 加载 客户端      更新时间:2023-09-26

是否可以使用 requireJS 或其他模块从客户端 JavaScript 加载本机插件(像在 nodejs 中一样用 C/C++ 编写(?

我正在编写一个nodejs + express应用程序,该应用程序提供加载javascript文件的html文件。我正在使用requireJS并将这些客户端js文件编译到AMD模块中。我可以从nodejs服务器端js脚本加载和调用本机方法,并想知道是否可以从客户端js脚本中执行相同的操作。

不,您不能像这样强制客户端通过浏览器执行本机应用程序。这将呈现一个非常大的安全漏洞,允许任何黑客出现在任何客户端上执行任意暴力代码,这是严格防止的。不过,您可以通过 API 在服务器端执行 C++ 附加组件,这应该可以解决大多数用例。

RequireJS 不是您要实现的目标的驱动因素。加载本机代码的功能完全取决于运行代码的 JavaScript VM 是否允许。 如果 VM 不允许,则 RequireJS 无法添加此功能。

你可以在 Node 中执行此操作,因为 Node 允许这样做。

浏览器对它们允许的内容的限制要多得多。在网页中执行的JavaScript脚本通常无法加载本机代码,因为正如Chris Franklin所解释的那样,这是一个安全漏洞。

获取 C 或 C++

库提供的功能以运行浏览器端的一种方法是使用 Emscripten 之类的东西将 C 或 C++ 代码编译为 JavaScript。