一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 利用noesis.Javascript開源組件.Net中執行javascript腳本

利用noesis.Javascript開源組件.Net中執行javascript腳本

2019-11-23 13:12asp.net教程網 ASP.NET教程

利用Noesis.Javascript開源組件可以做到在.net中執行js腳本,同時js腳本也能調用C#函數。這個組件的獲得方式:在NuGet中輸入搜索"Noesis"就能找到,我們來做個搜索功能:用戶能夠在textbox中輸入js腳本來篩選list記錄

界面如下:

利用noesis.Javascript開源組件.Net中執行javascript腳本

然后,click filter button后的UI:

利用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腳本

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎1515hhcom | 国产成人a v在线影院 | 性做久久久久免费观看 | 国产青草视频在线观看免费影院 | 欧美贵妇videos办公室360 | 国产在线观看一区 | 午夜视频一区 | 亚洲福利精品电影在线观看 | 日本ccc三级 | 亚州精品视频 | 国产精品免费久久久久影院小说 | 四虎影视免费 | 日韩高清在线免费看 | 久久www免费人成_看片高清 | 精品一区二区三区免费站 | 嗯啊好爽视频 | 亚洲高清在线天堂精品 | 欧美精品一线二线大片 | 国产精品原创永久在线观看 | 好大好硬好深好爽gif图 | 免费午夜影院 | 成人永久免费 | 欧美色精品天天在线观看视频 | 校草让我脱了内裤给全班看 | 国产九九视频在线观看 | 日韩精品一区二三区中文 | 免费在线观看日韩 | 日韩av线观看| 趴好撅高打屁股sp调教h | 好男人影视社区www在线观看 | 青青国产成人久久激情911 | 99精品久久精品一区二区 | 欧美夫妇野外交换hd高清版 | 成人影院观看 | 午夜dj影院在线观看完整版 | 国内精品免费一区二区三区 | 女教师波多野结衣高清在线 | 91传媒制片厂制作传媒破解版 | 精品久久久久久影院免费 | 青柠影视在线播放观看高清 | 欧美成人午夜片一一在线观看 |