1. 程式人生 > >[C#]VS2017使用google v8 Javascript引擎

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

using cal ESS tengine clas .exe value .com bug

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}");
            }

結果:

技術分享圖片技術分享圖片

很好執行成功,個人感覺非常好用,互相調用與傳參。

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