是否可以使用requireJS或其他模块从客户端javascript加载本机加载项(使用C / C ++编写,如nodejs)?
我正在编写一个nodejs + express app,它提供加载javascript文件的html文件。我正在使用requireJS并将这些客户端js文件编译到AMD模块中。我可以从nodejs服务器端js脚本加载和调用本机方法,并想知道是否可以从客户端js脚本执行相同的操作。
答案 0 :(得分:1)
不,您不能强制客户端通过浏览器执行本机应用程序。它会提供一个非常大的安全漏洞,允许任何黑客出现并在任何客户端上执行任意暴力代码,这是严格阻止的。您可以通过API在服务器端执行C ++插件,这应该可以解决大多数用例。
答案 1 :(得分:0)
RequireJS不是你想要达到的目标的驱动因素。加载本机代码的能力完全取决于运行代码的JavaScript VM是否允许。 如果VM不允许,则RequireJS无法添加此功能。
您可以在Node中执行此操作,因为Node允许它。
浏览器对它们允许的内容有更多限制。在网页中执行的JavaScript脚本通常无法加载本机代码,因为正如Chris Franklin解释的那样,这是一个安全漏洞。
使用C或C ++库提供的功能来运行浏览器端的一种方法是使用Emscripten之类的东西将C或C ++代码编译为JavaScript。