源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

利用noesis.Javascript开源组件.Net中执行javascript脚本

  • 时间:2020-06-06 19:14 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:利用noesis.Javascript开源组件.Net中执行javascript脚本
界面如下: [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100134_0_34692.jpg?2013115111725[/img] 然后,click filter button后的UI: [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100134_1_34845.jpg?2013115111758[/img] 看,筛选出来了,代码如下(js能调C#写的UserInfo类的各个属性)
[u]复制代码[/u] 代码如下:
public class UserInfo     {         public string FirstName { get; set; }         public string LastName { get; set; }         public int Age { get; set; }         public override string ToString()         {             return string.Format("{0}, {1}: {2}", FirstName, LastName, Age);         }     } private void btnSearch_Click(object sender, EventArgs e)         {             List<UserInfo> users = FilterUsers(txtFilter.Text.Trim());             lstUsers.DataSource = users;         }         private List<UserInfo> FilterUsers(string jsFilter)         {             List<UserInfo> results = new List<UserInfo>();             if (jsFilter.Trim().Length == 0)                 return this.users;             try             {                 using (JavascriptContext context = new JavascriptContext())                 {                     foreach (UserInfo user in this.users)                     {                         context.SetParameter("user", user);                         context.SetParameter("isInclude", false);                         string js = string.Format(@"                                                 if({0})                                                     isInclude=true;                                                 else                                                     isInclude=false;", jsFilter);                         context.Run(js);                         bool isInclude = (bool)context.GetParameter("isInclude");                         if (isInclude)                             results.Add(user);                     }                 }             }             catch             {                 txtFilter.Focus();                 txtFilter.SelectAll();                 return this.users;             }             return results;         }
我们来看看效率:
[u]复制代码[/u] 代码如下:
private void btnTest_Click(object sender, EventArgs e)         {             using (JavascriptContext context = new JavascriptContext())             {                 Stopwatch sw = new Stopwatch();                 sw.Start();                 int i=1000000;                 while(i-- > 0)                 {                     context.SetParameter("ii", 1);                     context.SetParameter("jj", 2);                     context.SetParameter("sum", 0);                     string js = string.Format(@"sum=ii+jj;");                     context.Run(js);                     int sum = (int)context.GetParameter("sum");                 }                 sw.Stop();                 long useJS_Total = sw.ElapsedMilliseconds;                 float useJS_Average = ((float)sw.ElapsedMilliseconds) / 1000000;                 sw.Reset();                 sw.Start();                 i = 1000000;                 while (i-- > 0)                 {                     int ii = 1;                     int jj = 2;                     int sum = 0;                     sum = ii + jj;                 }                 sw.Stop();                 long nouseJS_Total = sw.ElapsedMilliseconds;                 float nouseJS_Average = ((float)sw.ElapsedMilliseconds) / 1000000;                 string msg = "";                 msg += string.Format("useJS_Total: {0}rn", useJS_Total);                 msg += string.Format("useJS_Average: {0}rnrnrn", useJS_Average);                 msg += string.Format("nouseJS_Total: {0}rn", nouseJS_Total);                 msg += string.Format("nouseJS_Average: {0}rnrnrn", nouseJS_Average);                 MessageBox.Show(msg);             }         }
结果(上面的是通过js引擎计算的时间、下面的是纯C#计算时间,悲剧啊):这个Noesis.Javascript只适用于性能要求不高的场合 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100135_2_92117.jpg?2013115111816[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部