C癜はMsieJavaScript Egineエンジンを使ってJavaScriptを実行します.

8701 ワード

これを使ってjsスクリプトエンジンコード生成器を実現しましたが、調査する時にはこのものの資料が少ないです.
私は自分のこのような応用によって解説します.間違いがあったら、園友に指摘してもらいます.
 
Nugetでインストールする MsieJava Script Egine
私が使っているのは 3.0.3バージョンです
 
アメリカを追加
1 using MsieJavaScriptEngine;
 
コアコード
usingを使用してエンジンの自動放出を保証し、配置に入る. UseJson 2 Library=trueはjson 2.jsを使う方法です.
このJSON 2については、chromeなどの現代ブラウザにJSONグローバル変数があります.この変数には、2つの方法があります.Strigify(Jsオブジェクトをjson文字列に変換)とParse(Jsオブジェクトに変換)があります.
この2つの方法はJsオブジェクトとJson文字列変換中に有用である.しかし、IEなど古いブラウザにはこのグローバル変数がありません.json 2.jsの役割は、グローバル変数JSONがあるかどうかを判断し、なければそれを作成することです.
このエンジンは本コンピュータの最高バージョンのIEカーネルを使ってJsを解析します.
 
自分ではSetVarable Value方法は直接対象パラメータを設定できると思います.しかし、サポートしないと、エラーが出るとは思いませんでした.
そこで、曲线救国の実现について、Jsオブジェクトにjson文字列を逆の顺番で列挙します.
 1             using (var jsEngine = new MsieJsEngine(new JsEngineSettings() { UseJson2Library = true }))
 2             {
 3                 jsEngine.SetVariableValue("result", "");
 4                 //  js   json    
 5                 jsEngine.SetVariableValue("model", Json.ToJson(new EngineData(_table, _cols)));
 6                 //  JSON.parse()      js  
 7                 jsEngine.Execute("model = JSON.parse(model);");
 8 
 9                 ResultTextBox.Text = jsEngine.Evaluate<string>(tmpl);
10             }
 
すべてのアプリを添付します
名前とパラメータ名は大体直観的なので、コメントをつけないで翻訳しました.最近は忙しいです.
方法名はEmbodHostObjectのようですが、対象パラメータを設定して試してみました.物思いにふける.
        public object CallFunction(string functionName, params object[] args);

        public T CallFunction(string functionName, params object[] args);

        public void CollectGarbage();
        
        public void Dispose();

        public void EmbedHostObject(string itemName, object value);

        public void EmbedHostType(string itemName, Type type);

        public object Evaluate(string expression);

        public object Evaluate(string expression, string documentName);

        public T Evaluate(string expression);

        public T Evaluate(string expression, string documentName);

        public void Execute(string code);

        public void Execute(PrecompiledScript precompiledScript);

        public void Execute(string code, string documentName);

        public void ExecuteResource(string resourceName, Type type);

        public void ExecuteResource(string resourceName, Assembly assembly);

        public object GetVariableValue(string variableName);

        public T GetVariableValue(string variableName);

        public bool HasVariable(string variableName);
        
        public void Interrupt();

        public PrecompiledScript Precompile(string code);

        public PrecompiledScript Precompile(string code, string documentName);

        public PrecompiledScript PrecompileFile(string path, Encoding encoding = null);

        public PrecompiledScript PrecompileResource(string resourceName, Assembly assembly);

        public PrecompiledScript PrecompileResource(string resourceName, Type type);

        public void RemoveVariable(string variableName);
        
        public void SetVariableValue(string variableName, object value);