之前我介绍过一个开源的.Net下的Javascript引擎Javascript .NET,今天发现微软自己也开源了一个JavaScript引擎——ClearScript(当然,也支持VB Script)。

由于是微软发布的,基本上没有什么好挑剔的地方,稳定而强大,不过不支持WinRT。下面这个则是官方示例,就不做更多介绍了,感兴趣的朋友可以去CodePlex看下。

 1 using System;
 2 using Microsoft.ClearScript;
 3 using Microsoft.ClearScript.V8;
 4
 5 // create a script engine
 6 using (var engine = new V8ScriptEngine())
 7 {
 8     // expose a host type
 9     engine.AddHostType("Console", typeof(Console));
10     engine.Execute("Console.WriteLine('{0} is an interesting number.', Math.PI)");
11
12     // expose a host object
13     engine.AddHostObject("random", new Random());
14     engine.Execute("Console.WriteLine(random.NextDouble())");
15
16     // expose entire assemblies
17     engine.AddHostObject("lib", new HostTypeCollection("mscorlib", "System.Core"));
18     engine.Execute("Console.WriteLine(lib.System.DateTime.Now)");
19
20     // create a host object from script
21     engine.Execute(@"
22         birthday = new lib.System.DateTime(2007, 5, 22);
23         Console.WriteLine(birthday.ToLongDateString());
24     ");
25
26     // use a generic class from script
27     engine.Execute(@"
28         Dictionary = lib.System.Collections.Generic.Dictionary;
29         dict = new Dictionary(lib.System.String, lib.System.Int32);
30         dict.Add('foo', 123);
31     ");
32
33     // call a host method with an output parameter
34     engine.AddHostObject("host", new HostFunctions());
35     engine.Execute(@"
36         intVar = host.newVar(lib.System.Int32);
37         found = dict.TryGetValue('foo', intVar.out);
38         Console.WriteLine('{0} {1}', found, intVar);
39     ");
40
41     // create and populate a host array
42     engine.Execute(@"
43         numbers = host.newArr(lib.System.Int32, 20);
44         for (var i = 0; i < numbers.Length; i++) { numbers[i] = i; }
45         Console.WriteLine(lib.System.String.Join(', ', numbers));
46     ");
47
48     // create a script delegate
49     engine.Execute(@"
50         Filter = lib.System.Func(lib.System.Int32, lib.System.Boolean);
51         oddFilter = new Filter(function(value) {
52             return (value & 1) ? true : false;
53         });
54     ");
55
56     // use LINQ from script
57     engine.Execute(@"
58         oddNumbers = numbers.Where(oddFilter);
59         Console.WriteLine(lib.System.String.Join(', ', oddNumbers));
60     ");
61
62     // use a dynamic host object
63     engine.Execute(@"
64         expando = new lib.System.Dynamic.ExpandoObject();
65         expando.foo = 123;
66         expando.bar = 'qux';
67         delete expando.foo;
68     ");
69
70     // call a script function
71     engine.Execute("function print(x) { Console.WriteLine(x); }");
72     engine.Script.print(DateTime.Now.DayOfWeek);
73
74     // examine a script object
75     engine.Execute("person = { name: 'Fred', age: 5 }");
76     Console.WriteLine(engine.Script.person.name);
77 }

View Code

转载于:https://www.cnblogs.com/TianFang/p/3470230.html

微软自家的.Net下的JavaScript引擎——ClearScript相关推荐

  1. 雷军:小米推动山寨机灭亡;苹果回应禁止第三方换电池;Javascript 引擎 V8 7.7 发布 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  2. Facebook 发布全新 JavaScript 引擎:Hermes! | CSDN博文精选

    作者 | Carson_Ho 责编 | 郭芮 出品 | CSDN 博客 目前,用户的流畅体验是用户能长期使用某个移动客户端应用App的重要指标之一,因此,移动客户端应用App的性能问题备受关注. 最近 ...

  3. asp是什么, javascript和php,asp区别,什么是 JavaScript 引擎, nodejs和vuejs的关系,nodejs和javascript区别

    asp是什么 ASP有两个含义: 一是英文Application Service Provider的缩写,意思是网络应用服务供应商: 另一个是英文Active Server Page的缩写,是微软推出 ...

  4. 《十》浏览器基础及渲染引擎解析一个网页的过程、JavaScript 引擎解析 JavaScript 代码的过程

    浏览器:是安装在电脑里面的一个软件,能够将页面内容渲染出来呈现给用户查看,并让用户与网页进行交互. 服务器其实就是性能比较高的计算机,这些计算机 24 小时不断电. 不关机. 开发者在本地开发出 HT ...

  5. 【读书笔记】【WebKit技术内 幕(三)】GPU硬件加速渲染、canvas与WebGL、 JavaScript与JavaScript 引擎、JavaScriptCore与V8

    文章目录 前言 Something great 第8章 硬件加速机制 硬件加速基础 -- *** Chromium的硬件加速机制 -- *** 其他硬件加速模块 第9章 JavaScript引擎 Ja ...

  6. V8 JavaScript引擎研究(三)垃圾回收器的实现

    V8垃圾回收机制简介 V8垃圾回收器的实现,是V8高效的一个非常重要的原因. V8在运行时自动回收不再需要使用的对象内存,也即是垃圾回收. V8使用了全暂停式(stop-the-world).分代式( ...

  7. JavaScript引擎大战:Google提出StrongMode和SoundScript议案,增强V8性能

    JavaScript 引擎性能大战硝烟迷漫,Chrome V8 引擎团队宣布了一个新的计划,在这个计划里他们介绍了两个新的虚拟机概念:强化模式(StrongMode)和强化脚本(StrongScrip ...

  8. mysql alter engine_MySQL_mysql下修改engine引擎的方法,修改my.ini,在[mysqld]下加上 - phpStudy...

    mysql下修改engine引擎的方法 修改my.ini,在[mysqld]下加上 default-storage-engine=INNODB 其中红色字体部分是要指定的引擎名称. 用sql语句修改已 ...

  9. JavaScript引擎研究与C、C++与互调用(转)

    本文转自:ice6015的专栏.为什么有些招聘需要熟悉JS和C++,这或许就是原因. 1.  概要 JavaScript是一种广泛用于Web客户端开发的脚本语言,常用来控制浏览器的DOM树,给HTML ...

最新文章

  1. 啥?这就是一个高级报表/BI数据分析工程师的一天?
  2. 高考生男生学铁路好还是计算机好,解析为什么说男生读铁路学校好呢
  3. Android开发笔记(一百六十七)Android8.0的画中画模式
  4. TensorFlow:模型的保存与恢复(Saver)
  5. 纠结mac和pc怎么选,可以看看这个
  6. 基于C#在Mongodb的Skip-Limit和Where-Limit的分页对比 并且含mongodb帮助类的源码
  7. android 方法不会覆盖或实现超类型的方法,React Native Android:方法不会覆盖或实现超类型的方法...
  8. 【UE】UE4下载安装及测试demo
  9. 信息论与编码第三章课后题
  10. 单元测试用例编写总结 (白盒测试)
  11. QT 实现 RTSP 视频流服务器
  12. Android OTA 差分包制作
  13. 在静止状态下根据IMU(加速度计)计算姿态角
  14. arm板配置ssh服务
  15. android调用录音编程,Android 调用MediaRecorder录音
  16. 输入一个四位数将其加密后输出c语言,从键盘输入一个四位数-按如下规则加密后输出...
  17. 服务器装win10系统很卡,笔记本电脑安装win10系统后变很卡很慢的解决方法
  18. 软件需求分析的工作步骤和流程
  19. 【Y9000P 2022 GTX3060 CUDA安装记录】
  20. 人的思想的成长过程是一个潜意识不断成长并替代思维完成细节工作的过程

热门文章

  1. python 标准化_数据标准化
  2. python 外部程序 交互_使用Python与其他程序交互
  3. 《剑指offer》左旋转字符串
  4. 朴素贝叶斯算法详解及python代码实现
  5. 使用nextInt()等接受输入时必须注意换行符的输入
  6. 剖析亿级请求下的多级缓存
  7. Redis 总结精讲
  8. hbase命令行演示
  9. (十四)Java springcloud B2B2C o2o多用户商城 springcloud架构- Spring Cloud构建分布式电子商务平台...
  10. [python作业AI毕业设计博客]大数据Hadoop工具python教程1-HDFS Hadoop分布式文件系统...