在客户端加载本地插件

是否有可能从客户端JavaScript使用requireJS或其他模块加载本机插件(用C / C + +编写,如nodejs)?

我正在写一个nodejs + express应用程序,它提供一个加载javascript文件的html文件。 我正在使用requireJS并将这些客户端js文件编译到AMD模块中。 我可以从nodejs服务器端的js脚本加载和调用本地方法,并想知道是否有可能从客户端js脚本做同样的事情。

不,您不能强制客户端通过浏览器执行本地应用程序。 这会造成一个非常大的安全漏洞,让任何黑客来到任何客户端执行任意的暴力代码,这是严格防止的。 您可以通过API在服务器端执行C ++插件,这应该可以解决大部分的使用案例。

RequireJS不是你想要实现的驱动因素。 加载本地代码的能力完全取决于运行代码的JavaScript VM是否允许。 如果VM不允许,RequireJS不能添加这个function。

你可以在Node中做,因为Node允许它。

浏览器对他们允许的内容限制性更强。 在网页中执行的JavaScript脚本通常无法加载本机代码,因为正如克里斯·富兰克林(Chris Franklin)解释的那样,这是一个安全漏洞。

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