如何利用noesis.Javascript开源组件.Net中执行javascript脚本
本篇内容介绍了“如何利用noesis.Javascript开源组件.Net中执行javascript脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
看,筛选出来了,代码如下(js能调C#写的UserInfo类的各个属性)
复制代码 代码如下:
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; }
我们来看看效率:
复制代码 代码如下:
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}\r\n", useJS_Total); msg += string.Format("useJS_Average: {0}\r\n\r\n\r\n", useJS_Average); msg += string.Format("nouseJS_Total: {0}\r\n", nouseJS_Total); msg += string.Format("nouseJS_Average: {0}\r\n\r\n\r\n", nouseJS_Average);
MessageBox.Show(msg); } }
结果(上面的是通过js引擎计算的时间、下面的是纯C#计算时间,悲剧啊):这个Noesis.Javascript只适用于性能要求不高的场合
“如何利用noesis.Javascript开源组件.Net中执行javascript脚本”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!
推荐阅读
-
JavaScript闭包用多会造成内存泄露吗
-
javascript中文乱码如何解决
-
PHP学习第十五天——JavaScript入门DOM对象:二
-
Node.js基本内容和知识点
简单的说node.js就是运行在服务端的JavaScript,起初段定位是后端开发语言,由于技术的不够成熟,一般小型项目...
-
PHP与Node.js:一个史诗般开发者的分享
-
JavaScript 中 find() 和 filter() 方法的区别
JavaScript在ES6上有很多数组方法,每种方法都有独特的用途和好处。在开发应用程序时,大多使用数组方法来获...
-
js怎么跟php结合使用
-
简单说说Node.js和JavaScript
Node.js是一个开源和跨平台的JavaScript运行时环境,在浏览器之外运行V8JavaScript引擎(...
-
前端开发工程师专业技能简历范文
-
JavaScript怎么实现淘宝网图片的局部放大功能