C# 编译JS -Evaluator

忘记哪里转过来的,自己mark一下

//// <summary>
/// 动态求值
/// </summary>
public class Evaluator
{
/// <summary>
/// 计算结果,如果表达式出错则抛出异常
/// </summary>
/// <param name="statement">表达式,如"1+2+3+4"</param>
/// <returns>结果</returns>
public static object Eval(string statement)
{
return _evaluatorType.InvokeMember("Eval", BindingFlags.InvokeMethod, null, _evaluator, new object[] { statement });
}
static Evaluator()
{
//构造JScript的编译驱动代码
CodeDomProvider provider = CodeDomProvider.CreateProvider("JScript");

CompilerParameters parameters;
parameters = new CompilerParameters();
parameters.GenerateInMemory = true;

CompilerResults results;
results = provider.CompileAssemblyFromSource(parameters, _jscriptSource);

Assembly assembly = results.CompiledAssembly;
_evaluatorType = assembly.GetType("Evaluator");

_evaluator = Activator.CreateInstance(_evaluatorType);
}

private static object _evaluator = null;
private static Type _evaluatorType = null;
//// <summary>
/// JScript代码
/// </summary>
private static readonly string _jscriptSource =

@"class Evaluator
{
public function Eval(expr : String) : String
{
return eval(expr);
}
}";
}
时间: 2024-11-05 21:44:04

C# 编译JS -Evaluator的相关文章

WebStorm FileWatcher (less 编译生成 css css.map min.css)(js 编译 min.js)

环境 win7 64 node jdk 8 工具 Webstorm node-less yuicompressor-2.4.8.jar 步骤 npm install -g less 安装less 自动编译 webstorm (setting->Tool->File Watchers) 下载 yuicompressor 百度下载 yuicompressor-2.4.8.jar 安装css 自动编译 webstorm (setting->Tool->File Watchers) css

大搜车前端开发模式:被动编译和主动编译

最近,梳理了一下公司的前端开发体系,准备给已经工作一年多的原有体系引入一些新的开发模式,其实也不算新了,只是对于我们一直采用的模式来说,是两个完全不同的方向,以前,我崇尚简单,一直按照简单易用的理念构建了公司现有的前端开发体系,现在随着人数的增多和业务的复杂度提升,感觉是时候引入一些差异化的开发体系了. 说来说去有点绕的慌,上面一段中说的 传统的开发模式,在团队内部我们叫做 被动编译,而新的开发方式,在团队内部叫做 主动编译. 被动编译 可能很多人对于被动编译都不是很熟悉,因为这种开发方式现在并

Node.js入门:模块机制

CommonJS规范  早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来实现的,在这样的背景之下,一没有特色,二没有实用价值.但是随着JavaScript在前端的应用越来越广泛,以及服务端JavaScript的推动,JavaScript现有的规范十分薄弱,不利于JavaScript大规模的应用.那些以JavaScript为宿主语言的环境中,只有本身的基础原生对象和类型,更多的对

window7 配置node.js 和coffeescript环境

前两天看了coffeescript,基于node.js,顺带配置一个node环境吧,折腾了好久 1.从 node.js 下载msi安装环境 安装完成之后打开安装目录,可以看到一个 node.exe 打开可以在里面执行js代码,类似chrome的console,注意 不是在这里执行node命令的!下面所有的执行环境都是cmd. 打开cmd,输入 node -v 会返回当前的node版本,表示安装成功 最新的安装包里已经自带了npm,同理 npm -v 查看npm是否安装成功 2.安装coffees

node.js中的exports和model.exports

nodejs编译js文件时对js文件的包装 nodejs在编译js文件时会对获取的js文件内容进行头尾包装 (function(exports,require,module,__filename,__dirname){\n 和 \}),正常的js文件就变成了: (function(exports,require,module,__filename,__dirname){ var a=function(){}; .............. }) 包装后我们在每一个js文件中都会有变量export

node.js学习笔记一

node.js  node是平台也是语言.它是平台或者运行环境,能够让js在服务器端运行,因为它封装V8引擎(引擎,能够将js代码解析成计算机能够懂得语言),能够让js运行在其他的平台上面,而不只是运行在浏览器上 .它是服务器端语言,类似于php,java. js是解释性的语言,没有经过编译,计算机认不到,所以谷歌v8引擎编译js代码. 回调函数 函数a有一个参数b,b是一个函数,当函数a执行完后,再执行b.函数b是以参数的形式传递给函数a的. node.js特点(单线程,异步,非阻塞)(瞬间的

iOS 项目导入js文件

一.iOS项目中导入js文件 一般情况下把js文件添加到项目中通常会直接copy到项目中(拖拽),这里的js文件可能只有一个层级(一个文件夹包含所有的js文件),也有可能分很多文件夹,将js文件导入项目的时候可以直接拖拽到项目中文件夹,项目会提示文件copy,如下图1-1所示.这里需要选择Create folder references 这样文件夹显示蓝色,如图1-2所示.如果选择Create groups创建,在项目运行的时候编译js文件,如果js文件只在同一个文件夹内运行是成功的,但是如果是

js小点

js小点1:function a (x) { return x * 2;}var a;alert (a); js永远是先解析声明式函数,再解析变量,但不会赋值 执行顺序:1,解析函数a2,声明变量var a;此时a并没有赋值,所以a=function a js小点2:js中没有块的概念--比如for(var i in array)中的i依然是全局变量 js小点3:function b (x, y, a) { arguments[2] = 10; alert (a);}b(1, 2, 3); 分析

JavaScript 预编译(变量提升和函数提升的原理)

本文部分内容转自https://www.cnblogs.com/CBDoctor/p/3745246.html 1.变量提升 1 console.log(global); // undefined 2 var global = 'global'; 3 console.log(global); // global 4 5 function fn () { 6 console.log(a); // undefined 7 var a = 'aaa'; 8 console.log(a); // aaa