利用IronJs在.NET程序里面跑javascript脚本

what’s dlr

The dynamic language runtime (DLR) is a runtime environment that adds a set of services for dynamic languages to the common language runtime (CLR). The DLR makes it easier to develop dynamic languages to run on the .NET Framework and to add dynamic features to statically typed languages.

Dynamic languages can identify the type of an object at run time, whereas in statically typed languages such as C# and Visual Basic (when you use Option Explicit On) you must specify object types at design time. Examples of dynamic languages are Lisp, Smalltalk, JavaScript, PHP, Ruby, Python, ColdFusion, Lua, Cobra, and Groovy.

这么一堆洋文摆着,也懒的翻译了。说直接一点就是DLR使得.NET有了可以执行脚本语言的能力(也许描述的不太精准,不过你可以这么理解)。

why use IronJs

基于DLR微软自己开了两套类库来跑python跟ruby。不过我想javascript的通用性更强,做程序员的,不过100%也得有90%写过javascript吧。

what problem can be solved

那么这种能力有什么好处呢。我能想到的就是对于系统中一些经常需要变更的逻辑,比如折扣算法,积分,以及各种规则,我们可以提到脚本里去写。这样不用任何编译,ctrl+s一下就可以解决问题了。

this is demo:

code:

            var jsContext = new IronJS.Hosting.CSharp.Context();
            jsContext.ExecuteFile("myDlr.js");
            var fun = jsContext.GetFunctionAs<Func<double, double, double>>("cacl");
            double a = Double.Parse(this.tbxA.Text);
            double b = Double.Parse(this.tbxB.Text);
            var result = fun.Invoke(a,b);
            this.tbxResult.Text = result.ToString();

js:

            var cacl = function (a, b) {
            return a*b;
           };

当我修改a*b为a-b的时候结果直接就变成-10了。不用关闭程序,不用编译程序,爽。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏陈仁松博客

【译】在 ASP.NET Core 中使用 SignalR

近日,微软发布了.NET Core 2.0,但是开发人员中间仍然存在一些疑惑,就是.NET Core、.NET Standard、Xamarin和.NET Fr...

3814
来自专栏walterlv - 吕毅的博客

The undefined behaviors of WPF Grid (the so-called bugs)

发布于 2018-05-05 09:07 更新于 2018-08...

421
来自专栏菩提树下的杨过

全面迎接.Net3.0时代的到来(WCF/WF/WPF/LINQ)

全面迎接.Net3.0时代的到来(WCF/WF/WPF/LINQ) .Net3.0从2006年发布预览版到今天(最高版本已经达到.Net3.5了),已经日趋稳...

20010
来自专栏九彩拼盘的叨叨叨

CSS代码片段

见 https://css-tricks.com/snippets/css/media-queries-for-standard-devices/

682
来自专栏程序员与猫

.NET Core全新路线图(译)

标签: .NETCore 翻译 承接张善友大大的.NET Core全新路线图,翻译了原文,水平有限,尽量一观。 原文地址《.NET Core Roadmap》,...

1928
来自专栏张善友的专栏

Visual Studio 2015 前端开发工作流

Visual Studio 2015 CTP 5,全称为 Visual Studio 2015 Community Technology Preview 5,意...

1939
来自专栏张善友的专栏

在asp.net mvc上应用新ASP.NET图表控件

微软去年11月发布了一个很酷的新ASP.NET服务器控件,<asp:chart />,可以免费用在ASP.NET 3.5中,而且还可以用在asp.net mvc...

2318
来自专栏张善友的专栏

Visual Studio 2008 Service Pack 1 - BETA发布了

Visual Studio 2008 SP1 提供了对Visual Studio 2008的各项改进,支持SQL Server 2008和ADO.NET的新特性...

1706
来自专栏Dawnzhang的开发者手册

博客园博客排版(js样式实例)

昨天在博客园中看到一位大神发的博客园样式排版博客,我一看。妈呀,太漂亮了,二话不说赶快学起,昨天我花了一天的时间,终于把我的博客也弄得有一丢丢像样了,有好东西,...

783
来自专栏.NET开发者社区

推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler

在C#WINFORM或者是ASP.NET的WEB应用程序中,根据各种定时任务的需求,比如:每天的数据统计,每小时刷新系统缓存等等,这个时候我们得应用到定时器这个...

2207

扫码关注云+社区