[C#]VS2017使用google v8 Javascript引擎

V8是JavaScript渲染引擎,号称是最快的,因为品牌效应,我信了,相关介绍网上一堆,我就不粘贴了,原库是直接提供给c++调用的,这里会用到微软的ClearScript.V8(包装v8),JavaScriptEngineSwitcher.V8(包装ClearScript)两个C#库。

一、安装:

1、项目右键,选择 管理NuGet程序包

2、搜索下面4个包并安装

3、检查引用目录下面是否存在相关dll链接库,不存在需要手动添加,运行后如果碰到缺少相关dll的问题,将项目根目录下packages\ClearScript.V8.x.x.x文件里面的相关dll文件拷贝到Release/Debug目录下。

发下牢骚:我在这步的时候运行出错,查了一下原因,是由于缺少v8.x64.dll,立马去https://github.com/v8/v8/ 下载源码,想自己编译个最新版的dll,下下来之后就懵逼了,咋编译啊,cmake、makefile、sln一个没见啊,各种百度,各种安装,python、mingw(gcc)、cygwin(选错了,装后70G,-_-#)、depot_tools、Shadowsocks、Proxifier(depot_tools的gclient需要代理),哈哈,最后还是没搞定,果断放弃了,耗时大半天,话说就不能弄个大众的编译环境么?非得什么都自己的,坑货!!!!如果朋友们看到这里,有会的,编译通过的,还望教教我。

二、 测试代码

    public class TestJsClass {
        public int arg1 { get; set; }
        public int arg2 { get; set; }

        public TestJsClass(int a1) {
            arg1 = a1;
            arg2 = 0;
        }

        public void Alert(string v) {
            MessageBox.Show(v);
        }
    }

测试调用:

            string jsContent = @"
                var a = ‘‘;
                var test = function(b){
                    testC.Alert(a + ‘ ‘ + b);
                    testC.arg1 = 1;
                    testC.arg2 = 2;
                    return testC.arg1 + testC.arg2;
                };
            ";

            using (IJsEngine jsEngine = new V8JsEngine()) {
                TestJsClass testClass = new TestJsClass(1);
                jsEngine.EmbedHostObject("testC", testClass);
                jsEngine.Execute(jsContent);

                jsEngine.SetVariableValue("a", "a_ok");
                int rtValue = (int)jsEngine.CallFunction("test", "param_ok");
                MessageBox.Show($@"testClass.arg1={testClass.arg1} testClass.arg2={testClass.arg2} return:{rtValue}");
            }

结果:

很好执行成功,个人感觉非常好用,互相调用与传参。

原文地址:https://www.cnblogs.com/inrg/p/9010624.html

时间: 2024-10-12 23:06:42

[C#]VS2017使用google v8 Javascript引擎的相关文章

V8 JavaScript引擎研究(一)简介

V8 JavaScript引擎简介 V8是Google公司的高效JavaScript引擎.它使用C++开发,完全开源,最著名的是使用在Chrome浏览器中作为JavaScript解析引擎. V8实现了ECMAScript-262标准,可以运行在Windows(XP及以上).Mac OS X(10.5及以上)以及使用IA-32.x64或ARM处理器的Linux系统. V8通常使用在浏览器中作为JavaScript的解析引擎,也可以嵌入到任何应用程序中使用. 基于C++的应用程序通过V8可以暴露任何

V8 javascript引擎初步体验

v8 引擎,不必多说,大名鼎鼎,迄今最快的js引擎. 这么好的东西,如果尽在浏览器中使用,太浪费了,也希望用到其他地方,比如一些客户端开发中. 闲言少讲,这就开始 下载源码 去官方网站:https://code.google.com/p/v8/ 我喜欢用git,所以从这里下载 git clone git://github.com/v8/v8.git v8 && cd v8 编译 我为android平台编译的,折腾了好久,记录一些重点.你首先要看这个:http://code.google.c

在Android上使用Google V8 JS 引擎

在cantk-runtime中直接使用的webview,通过JAVA扩展接口把Canvas的2d Context的API定向到JNI,通过OpenGL来图形加速,渲染速度大大提高.后来测试发现在大部分手机上都很正常,但是在有的老手机上速度不稳定,出现突然卡顿的情况.经过研究发现原因是老版本的webkit里没有requestAnimationFrame这个接口(或类似接口),用setTimeout来模拟的requestAnimationFrame非常不稳定. 为了解决这个问题,我们决定像其它Run

用NAN简化Google V8 JS引擎的扩展

通过C++扩展Google V8 JS引擎的文章很多,Google V8 JS带的例子也容易明白.但是大部分文章都是Hello World型的,真正使用时发现处处是坑.扩展V8最经典的例子就是node了,如果要做实际项目,研究一下node本身和及其扩展模块大有裨益. 提到node的C++扩展就不得不提nan,nan是Native Abstractions for Node.js的简称,它让扩展V8变得很容易,特别是用类来扩展的时候. 类从ObjectWrap继承过来,如: class Locat

V8:V8(Javascript引擎)

ylbtech-V8:V8(Javascript引擎) Lars Bak是这个项目的组长,目前该JavaScript引擎已用于其它项目的开发.第一个版本随着第一个版本的Chrome于2008年9月2日发布. 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. https://baike.baidu.com/item/V8/6178125 2. 6.返回顶部 作者:ylbtech出处:http://ylbtech.cnblogs.com/本文版权归作者和博客园共有,欢迎转载

V8 JavaScript引擎研究(二)高性能探秘

V8的高性能探秘 V8项目负责人Lars Bak:V8的所有优化都不是原创的.V8组合了过往对于动态语言的各种优化技术,因而具有了非常高效的性能. 快速属性访问 JavaScript是动态编程语言,这意味着可以动态的增加或删除对象的属性. 以往实现 大多数的JavaScript引擎都是使用类似字典的数据结构来保存一个对象的属性,在这种结构下每次访问一个属性都需要动态查找其在内存中的位置. 优势: 实现简单. 劣势: 效率低.相对于Java.Smalltalk等语言,由于对象的class有着固定的

V8 JavaScript引擎研究(三)垃圾回收器的实现

V8垃圾回收机制简介 V8垃圾回收器的实现,是V8高效的一个非常重要的原因. V8在运行时自动回收不再需要使用的对象内存,也即是垃圾回收. V8使用了全暂停式(stop-the-world).分代式(generational).精确(accurate)等组合的垃圾回收机制,来确保更快的对象内存分配.更短的垃圾回收时触发的暂停以及没有内存碎片. V8的垃圾回收有如下几个特点: 当处理一个垃圾回收周期时,暂停所有程序的执行. 在大多数垃圾回收周期,每次仅处理部分堆中的对象,使暂停程序所带来的影响降至

windows下使用VS2015编译V8 JavaScript引擎(v5.5 - 2016/09)

今天心血来潮, 下载了 v8,,然后就想着用vs编译 但是大家都苦恼的是 v8并不直接提供 vs用的项目文件和解决方案(.sln) 于是,在网上搜来搜去, 折腾来折腾去的; 终于一点一点的尝试, 可以执行 python gypfiles\gyp_v8.py -Dtarget_arch=x64 但是网上搜到的都是 python build\gyp_v8.py -Dtarget_arch=x64 可我git clone 的没有build文件夹啊, 好歹根据 https://github.com/v8

JavaScript 引擎 V8 执行流程概述

本文首发于 vivo互联网技术 微信公众号? 链接:https://mp.weixin.qq.com/s/t__Jqzg1rbTlsCHXKMwh6A 作者:赖勇高 本文主要讲解的是V8的技术,是V8的入门篇,主要目的是了解V8的内部机制,希望对前端,快应用,浏览器,以及nodejs同学有些帮助.这里不涉及到如何编写优秀的前端,只是对JS内部引擎技术的讲解. 一.V8来源 V8的名字来源于汽车的"V型8缸发动机"(V8发动机).V8发动机主要是美国发展起来,因为马力十足而广为人知.V8