[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 引擎
- Jint
使用
最终使用 JavaScriptEngineSwitcher.V8,需要在 NuGet 中安装以下包:
- JavaScriptEngineSwitcher.Core
- JavaScriptEngineSwitcher.V8
- JavaScriptEngineSwitcher.ChakraCore.Native.win-x64
注意
不要多个线程操作同一个 JS 引擎对象。