在客户端加载本机插件

时间:2014-12-18 01:03:11

标签: javascript c++ node.js requirejs client-side

是否可以使用requireJS或其他模块从客户端javascript加载本机加载项(使用C / C ++编写,如nodejs)?

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

您可以在Node中执行此操作,因为Node允许它。

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

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