首页 > 编程语言 >盘点2个.Net版本的JavaScript执行引擎

盘点2个.Net版本的JavaScript执行引擎

时间:2024-11-25 17:22:13浏览次数:8  
标签:引擎 JavaScript add 开源 盘点 var Net

https://zhuanlan.zhihu.com/p/692270642

 

推荐2个JavaScript开源引擎,方便在C#执行JavaScript脚本。

1、jurassic

Jurassic是一个开源的托管JavaScript执行引擎,使用MS-PL授权协议。它的目标是成为.NET平台上功能最强,最为标准的JavaScript引擎。

功能强大:支持ECMAScript 3和ECMAScript 5的功能,具备简单但强大的API,将JavaScript编译为.NET字节码(CIL),而非解释执行。这些功能使得Jurassic能够满足各种不同的编程需求;

var engine = new Jurassic.ScriptEngine();
//输出11
Console.WriteLine(engine.Evaluate("var a = 5; var b = 6; a + b;"));

engine.Evaluate("function add(a,b){return a+b;}");
var result = engine.CallGlobalFunction<int>("add", 5, 6); 
//输入11
Console.WriteLine(result);

开源地址:https://github.com/paulbartrum/jurassic

详细介绍:一个纯.Net开发的JavaScript执行引擎

 

2、Yantra

该项目支持多种JavaScript特性,包括ES5和ES6的许多功能,如箭头函数、类、类成员、增强的对象字面量、模板字符串、解构赋值、let和const声明、Map和Set等内置对象,以及二进制和八进制字面量。它还支持Async/Await异步编程模型、可选参数、尾调用优化等特性。

using YantraJS.Core;

var context = new JSContext();

//创建一个方法
context["add"] = new JSFunction((in Arguments a) => {
    return new JSNumber(
         (a[0]?.IntValue ?? 0) + (a[1]?.IntValue ?? 0)
    );
});

var result = context.Eval("add(4,5)", "script.js");

Console.Write(result);

开源地址:https://github.com/yantrajs/yantra

详细介绍:Yantra:一个基于.Net跨平台JavaScript开源引擎

更多开源项目请查看:一个专注推荐.Net开源项目的榜单

标签:引擎,JavaScript,add,开源,盘点,var,Net
From: https://www.cnblogs.com/chinasoft/p/18568170

相关文章

  • .NET Core 线程池(ThreadPool)底层原理浅谈
    简介上文提到,创建线程在操作系统层面有4大无法避免的开销。因此复用线程明显是一个更优的策略,切降低了使用线程的门槛,提高程序员的下限。.NETCore线程池日新月异,不同版本实现都有差别,在.NET6之前,ThreadPool底层由C++承载。在之后由C#承载。本文以.NET8.0.8为蓝本,如有出入,请......
  • JavaScript核心语法(3)
    前两篇文章大概把JavaScript的基础语法讲了一下,这篇文章主要讲讲ES6的核心语法。ES6的核心语法说实话其实有点多,我重点挑一些经常在项目中用到的来讲,其他一些我没怎么见过的就不讲了。目录1.变量和常量变量(let 和 var)varlet常量(const)总结2.箭头函数语法示例特性和......
  • [Javascript] Import the Same JavaScript Module Multiple Times with Cache Busting
    WhenattemptingtoloadthesamemoduletwiceinJavaScriptyou'llhitacacheandcodewon'tre-run.Inscenarioswhereyouactuallydowanttohavestateinyourmodules,you'llhavetouseacache-bustingtechniquebypassingaquerypar......
  • javascript-语句
    1.对象时不可迭代访问的。尝试使用for/of循环会throwTypeErrorleto={x:1,y:2,z:3};for(letelementofo){console.log(element);}//throwtypeError2.可以使用Object.keys()方法实现对象迭代leto={x:1,y:2,z:3};letkeys="";for(letkofObject.keys(o)){keys+=k;}......
  • (系列十二)Vue3+.Net8实现用户登录(超详细登录文档)
    说明  该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。   该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。   说明:OverallAuth2.0是一个简单、易懂、功能强大的权限+可视化流程管理系统。友情提醒:本篇文章是属于系......
  • Vue3+Typescript+Axios+.NetCore实现导出Excel文件功能
    前端代码//导出ExcelconstexportMaintenanceOrderSettlementItemExcelClick=async()=>{leturl=`${VITE_APP_API_URL}/api/app/maintenance/settlement-service-item/${currentMaintenanceOrderId.value}/${currentMaintenanceOrderSettlementRow.value.id}`;......
  • .Net-Avalonia学习笔记(十一)-安卓APP设置横屏
    在Avalonia中设置安卓应用为横屏模式,以下是一般的步骤:安卓项目配置文件修改在安卓项目中,需要修改AndroidManifest.xml文件。这个文件位于安卓项目的Properties文件夹下。找到<activity>标签,在其中添加android:screenOrientation="landscape"属性。例如:<activityand......
  • NetBox使用教程1-组织架构
    前言本教程用于学习NetBox的基础使用,练习可使用官方Demo:https://demo.netbox.dev/NetBox使用教程系列:https://songxwn.com/tags/netbox-use/重点:本篇为地区和站点组织架构-站点地区地区是首先第一个要创建的东西,可以按等级写大洲、国家、省份、城市、市区等​如上图,从......
  • JavaScript有几种类型值?能否画出它们的内存图?
    JavaScript有七种原始数据类型和一种引用类型:原始数据类型(PrimitiveDataTypes):存储在栈(Stack)内存中,值直接存储在变量访问的位置。Boolean:true或falseNull:只有一个值null,表示空或不存在的值。Undefined:变量声明了但未赋值时的默认值undefined。Number:所......
  • 【分享】这篇教程助力你成为 JavaScript 糕手!(十一)
    第十一章:异步编程11.1异步编程的概念在JavaScript中,异步编程是一种非常重要的编程模式,它用于处理那些不会立即完成的操作,而是在一段时间后才会返回结果的任务。传统的同步编程模式下,代码是按照从上到下的顺序依次执行的,每一行代码都必须等待前一行代码执行完毕后才会......