[C#] JavaScript 引擎

调研了一些兼容 .Net Framework 4.8 的 JavaScript 引擎。

JavaScriptEngineSwitcher

这个对C#常用的JS引擎作了集成,让你简单地尝试各种JS库。

  • JavaScriptEngineSwitcher.Core
    提供通用的 API (需要安装)

  • JavaScriptEngineSwitcher.V8

    JavaScript V8 引擎,实际上使用的是 ClearScript 引擎,兼容性很好,需要安装类库:

    • JavaScriptEngineSwitcher.V8.Native.win-x64 win64 环境
    • JavaScriptEngineSwitcher.V8.Native.win-x86 win32 环境
    • JavaScriptEngineSwitcher.V8.Native.linux-x64 linux x64 环境
  • JavaScriptEngineSwitcher.Jurassic

    Jurassic (侏罗纪)是使用纯 C# 实现的JS引擎,兼容所有的 es5 (包括严格模式, 似乎也部分支持 ES6),它不是一个解释器,它将 JavaScript 编译成 IL,这使得它的速度非常快,而且它没有本地的依赖性。性能好同时很轻量(一个dll),但基本上没有更新维护(好用不需要维护?)。JavaScriptEngineSwitcher.Jurassic 是对 Jurassic 的封装,这个不需要安装类库。

  • 其它

    • Jint
      它是一个完全在 .NET 中运行的 JavaScript 解释器,没有任何本地的依赖!它完全支持 ECMAScript 5.1 (ES5),并支持 .NET Standard 2.0
    • ClearScript (V8)
      Node.JS、Chromium、Chrome 和最新的 Edge 使用的都是 V8 JavaScript 引擎。Microsoft.ClearScript 包为该库提供了一个封装,为调用 V8 库提供了一个 C# 接口。就像 ChakraCore 一样,V8 引擎本身是一个本地依赖。ClearScript 库负责 P/Invoke 调用,提供了一个很好的C# API,但你仍然要确保你在目标平台上部署了正确的本地库。
    • ChakraCore
      ChakraCore 是 Edge 转为基于 Chromium 引擎之前最初使用的 JavaScript 引擎

使用

最终使用 JavaScriptEngineSwitcher.V8,需要在 NuGet 中安装以下包:

  • JavaScriptEngineSwitcher.Core
  • JavaScriptEngineSwitcher.V8
  • JavaScriptEngineSwitcher.ChakraCore.Native.win-x64

注意

不要多个线程操作同一个 JS 引擎对象。

posted @ 2023-04-07 17:07  我爱我家喵喵  阅读(273)  评论(0编辑  收藏  举报