文章出處
文章列表
一、開源項目 Javascript .NET
地址: http://javascriptdotnet.codeplex.com/ 它是Google Chrome V8引擎在.NET上的封裝,功能完善,性能相對較高,推薦使用! (缺點就是asp.net web應用上,好象會報錯)
示例代碼:
using Noesis.Javascript; using System; using System.Collections.Generic; namespace JsCSharp { class Program { static void Main(string[] args) { using (JavascriptContext ctx = new JavascriptContext()) { var i = ctx.Run("1+2"); Console.WriteLine(i);//3 ctx.Run("var d = new Date(2013,9-1,2,20,30,15)"); var d = ctx.GetParameter("d"); Console.WriteLine(d);//2013/9/2 20:30:15 var j = ctx.Run("function add(x,y){return x+y;};add(5,10);"); Console.WriteLine(j);//15 ctx.Run("var obj = {};obj.name='jimmy';obj.sex='Male';obj.name='楊俊明'"); var obj = ctx.GetParameter("obj") as Dictionary<string, object>; foreach (var key in obj.Keys) { Console.WriteLine(string.Format("{0}:{1}", key, obj[key])); //name:楊俊明 //sex:Male } var jsonArr = ctx.Run("[{Airport:'PEK',Name:'北京首都機場'},{Airport:'XIY',Name:'西安咸陽機場'}]") as Array; foreach (var item in jsonArr) { var json = item as Dictionary<string, object>; foreach (var key in json.Keys) { Console.WriteLine(string.Format("{0}:{1}", key, json[key])); //Airport:PEK //Name:北京首都機場 //Airport:XIY //Name:西安咸陽機場 } } ctx.SetParameter("x", 7); ctx.Run("function add(x,y){return x+y;}; function sub(x,y){return x-y;};k = add(2,x);var t = sub(9,1);"); var k = ctx.GetParameter("k"); Console.WriteLine(k);//9 var t = ctx.GetParameter("t"); Console.WriteLine(t);//8 Console.Read(); } } } }
部署時要注意,msvcp100.dll、msvcr100.dll這二個文件,要復制到bin目錄下
二、利用Microsoft.JScript.Vsa
先添加Microsoft.JScript、Microsoft.Vsa二個程序集的引用,然后就能用了,示例代碼如下:
using Microsoft.JScript; using Microsoft.JScript.Vsa; using System; namespace JsCSharp { class Program { static VsaEngine Engine = VsaEngine.CreateEngine(); static void Main(string[] args) { var i = (int)EvalJScript("1+2;"); Console.WriteLine(i);//3 var d = (DateObject)EvalJScript("var d = new Date(2013,9-1,2,20,30,15)"); Console.WriteLine(d);//Mon Sep 2 20:30:15 UTC+8 2013 var j = EvalJScript("function add(x,y){return x+y;};add(5,10);"); Console.WriteLine(j);//15 var obj = EvalJScript("var obj = {};obj.name='jimmy';obj.sex='Male';"); Console.WriteLine(obj);//Male 注:只返回最后一條執行的語句結果 Console.Read(); } static object EvalJScript(string JScript) { object Result = null; try { Result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine); } catch (Exception ex) { return ex.Message; } return Result; } } }
Vsa的功能比較有限,多條語句執行時,只返回最后一條語句的執行結果。
文章列表
全站熱搜