【C#.NET Core】 跨平台执行javascript

摘要:
背景在Windows上,c#调用常用的JavaScript V8.NET。当项目迁移到Linux时,我们注意到V8不支持Linux,因此它被更改为JavaScript EngineSwitch ChakraCore(直接在掘金上搜索JavaScript Engine)使用了引入的掘金包JavaScript EngineSwitch。调用js文件的ChakraCore代码:usingJavaScript
背景

Windowsc#调用JavaScript常用V8.NET,项目迁移到 Linux 才注意到v8不支持Linux,遂改为JavaScriptEngineSwitcher.ChakraCore(直接在nugget上搜索JavaScriptEngine

使用

引入nugget包-JavaScriptEngineSwitcher.ChakraCore

【C#.NET Core】 跨平台执行javascript第1张

代码调用js文件即可:

using JavaScriptEngineSwitcher.ChakraCore;
using JavaScriptEngineSwitcher.Core;
using System.Text;

namespace Program
{
    internal static class Sign
    {
        private const string JsPath = "demo.js";

        public static string GetSign(string cityid)
        {
            string result;
            var switcher = JsEngineSwitcher.Current;
            switcher.EngineFactories.Add(new ChakraCoreJsEngineFactory());
            switcher.DefaultEngineName = ChakraCoreJsEngine.EngineName;
            using IJsEngine engine = JsEngineSwitcher.Current.CreateDefaultEngine();
            engine.ExecuteFile(JsPath, Encoding.UTF8);
            //调用JS文件中的方法、传入参数
            result = engine.CallFunction<string>("start", cityid);

            return result;
        }
    }
}

另外avaScriptEngineSwitcher也有V8及其跨平台库,记录一下:

【C#.NET Core】 跨平台执行javascript第2张

免责声明:文章转载自《【C#.NET Core】 跨平台执行javascript》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Meteor + node-imap(nodejs) + mailparser(nodejs) 实现完整收发邮件Windows服务中读取配置文件的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java反射知识点总结

一.java反射基础 1.1 什么叫java反射? 答:程序运行期间,动态的获取类的基本信息。比如:创建对象,调用类的方法,获得类的基本结构。这样给程序设计提供了很大的灵活性。个人总结就是:根据动态需求,生成动态的响应。java的Class类是java反射机制的基础,反射也是让虚拟机加载指定类。这就用到了java的类装载机制,jvm加载字节码文件,并生成c...

django实现支付宝支付

目录 django支付宝支付 新建支付宝应用 创建应用(使用沙箱环境测试) 按照官方要求生成私钥(可以上支付宝开发平台下载支付宝开发助手) 把生成的app公钥粘贴到沙箱的app中 查看沙箱账号和密码 支付宝开发地址 说明 在utils中封装请求支付宝扫码地址url的函数和生成订单id的函数 在model.py中定义表 在views.py中...

4、BFS算法套路框架——Go语言版

前情提示:Go语言学习者。本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在: https://github.com/honlu/GoLabuladongAlgorithm https://gitee.com/dreamzll/G...

二、获取微信用户openId

/// <summary> /// 登录首页 /// </summary> /// <returns></returns> public ActionResult Index() { if (Session["isTrue"] == null) { string weixinA...

java 关于JDBC和DAO模式使用

JDBC(全称:Java Data Base Connectivity)是java数据库连接简称 ,提供连接各种数据库的能力 JDBC API主要的功能: 与数据库建立连接 执行SQL语句 处理结果 JDBC关键字的使用: DriverManager:依据数据库的不同,管理JDBC驱动 Connection:负责连接数据库并且担任传送数据库的任务 S...

获取DataTable中一列的数据

#region 获取合同号DataRow[] arrRow = new DataRow[ds.Rows.Count];int w = 0;foreach (DataRow row in ds.Rows){arrRow[w] = row;w++;}string[] ary = Array.ConvertAll(arrRow, r => r["cdon...