是否可以在 chrome 扩展中使用 c++ 二进制文件?
3 回答
出于安全考虑,Chrome/Opera 已弃用 NPAPI。
如果你的目标是 Firefox,你仍然可以使用 NPAPI,但如果 Firefox 顺应潮流,它也可能会在某个时候禁用它。
您今天拥有的更好的选择是
如果您只针对 Chrome,请使用 NaCl
您可以改用NativeClient (AKA NaCL, AKA PPAPI - Pepper Plugin API)
在 NaCl 中运行的所有代码都经过沙盒处理,因此它与 javascript 扩展一样安全。
如果您针对所有平台,请使用 asm.js
使用Emscripten,您可以将 C/C++ 代码编译成高度优化的 JavaScript 格式,称为 asm.js。它被设计为具有接近本机的性能,并且现在得到了除 Safari 之外的 A 级浏览器的良好支持。尽管目前 Firefox 的性能优于 Chrome。
主要的浏览器供应商也在开发一个名为 WebAssembly 的新标准,该标准部分受到 asm.js 的启发,但截至本文尚未准备好用于主要用途
2018-05-14 更新
Native Client 正在被弃用,asm.js 正在被 WebAssembly 取代,WebAssembly正在成为为 Web 编译 C++ 代码的新标准。
是的,与其他浏览器一样,您可以编写一个与您的扩展程序通信的 NPAPI 插件。
在 wikipedia 上查看通用描述
如上所说,您可以将 NaCl 用于 chrome,将 asm.js 与 Emscripten 用于所有平台,但它的逆向工程比二进制更简单。现在有一个中间解决方案:webassembly - 大多数现代浏览器都支持嵌入在浏览器中的 LLVM 字节码https://caniuse.com/#feat=wasm。所以 Emscripten 可以将 C++ 编译为 wasm,主要是它比 asm.js 更快。