什么是 JS cript?
JScript 是由微软 开发 的活动脚本语言,基于 ECMAScript 规范实现。In ternet Explorer 中的 Java Script,实际上是指 JScript。JScript 已被 Windows Script Host(WSH)支持(WSH 中的 JavaScript shell scripting:C :\> cscript jslint . js
)。JScript 最新的版本(JScript.NET)基于 ECMAScript 4.0 ,并且可以 在 .Net 环境下编译。
.NET Framwork 中包含有 JScript 编译器 :JScriptCompiler (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\jsc.exe),其可以将 JScript 文件 编译为一个 .exe 或者 .dll 文件。
为了方便使用,我们 可以将 JScriptCompiler 的路径 加入到环境变量(环境变量 –> 系统 变量 –> Path)中。在 CMD 程序运行窗口中直接调用命令 “jsc”,就可以看到编译器相关的帮助选项。
jsc [选项] <源文件> [[选项] <源文件>…]
JScript 编译器选项
– 输出文件 -$$30 ^$^ /out:<file> 指定二进制输出文件的名称
/t[arget]:exe 创建控制 台应用 程序(默认)
/t[arget]:winexe 创建 Windows 应用程序
/t[arget]:library 创建库程序集
/platfor m:<platform> 限制此代码可以在其上运行的平台 ;必须 是 x86、Itanium、x64 或 anycpu。默认为 anycpu– 输入 文件 -
/autoref[+|-] 基于导入的命名空间 和完全限定名称自动引用程序集(默认情
况下为 on)
/lib:<path> 指定要在其中搜索 引用的附加目录
/r[eference]:<file list> 从指定的程序集文件引用元数据 <file list>: <assembly name>[;<assembly name>...]– 资源 -
/win32res:<file> 指定 Win32 资源文件(.res)
/res[ource]:<info > 嵌入指定的资源 <info>: <filename>[,<name>[,public|private]]
/linkres[ource]:<info> 将指定的资源链接 到此程序集 <info>: <filename>[,<name>[,public|private]]– 代码生成 -
/debug[+|-] 发出调试信息
/fast[+|-] 禁用语言功能 以使代码更好地生成
/warnaserror[+|-] 将警告 视为错误
/w[arn]:<level> 设置警告等级(0-4)– 杂项 -
@<filename> 有关更多选项,请阅读响应文件
/? 显示帮助
/help 显示帮助
/d[efine]:<symbols> 定义 条件编译符号
/nologo 不显示编译器版权标志
/print[+|-] 提供 print() 函数– 高级 -
/codepage:<id> 使用指定的代码页 ID 打开源 文件
/lcid:<id> 将指定的 LCID 用于消息和默认代码页
/nostdlib[+|-] 不导入标准 库(mscorlib.dll)并将 autoref 默认值更改为 off
/utf 8output[+|-] 以 UTF-8 字符编码形式发出编译器输出
/versionsafe[+|-] 为没有标记为“override”或“hide”的成员指定默认值
创建 .exe 文件
先创建 JS 文件(C:\test\helloWorld.js),内容 如下:
var
date =
new
Date();
print(
'Hello World! \nToday is '
+ date );
接着我们进行编译:
C
:\
test
>
jsc helloWorld
.
js
Microsoft
(
R
)
JScript
Compiler
version
8
.
00
.
50727
for
Microsoft
(
R
)
.
NET
Framework
version
2
.
0
.
50727
Copyright
(
C
)
Microsoft
Corporation
1996
-
2005
。保留所有权利。
你会惊讶的发现,C:\test 目录下多了个 helloWorld.exe 文件,非常简单吧,呵呵
最后我们可以直接执行 helloWorld.exe 文件:
C
:\
test
>
helloWorld
Hello
World
!
Today
is
Fri
Jun
3
23
:
13
:
20
UTC
+
8
2011
大功告成!!
创建 .dll 文件
.dll 文件的创建也同样非常简单:
package LibHW {
class HelloWorld {
function run() {
var date = new Date();
return ' Hello World! \nToday is ' + date;
}
}
}
编译语句:
C
:\
test
>
jsc
/
t
:
library
LibHW
.
js
对于生成的 LibHW.dll 文件,我们可以通过创建新的 .exe 文件(consumer.js –> consumer.exe)以导入模块的方式调用(类似于 Python )。
先创建 consumer.js 文件:
import
LibHW
;
var
hw
=
new
LibHW
.
HelloWorld
();
print
(
hw
.
run
());
然后编译 consumer.js 文件,执行 consumer.exe:
C
:\
test
>
jsc consumer
.
js
Microsoft
(
R
)
JScript
Compiler
version
8
.
00
.
50727
for
Microsoft
(
R
)
.
NET
Framework
version
2
.
0
.
50727
Copyright
(
C
)
Microsoft
Corporation
1996
-
2005
。保留所有权利。
C
:\
test
>
consumer
Hello
World
!
Today
is
Sat
Jun
4
00
:
42
:
35
UTC
+
8
2011
当然你还可以创建 windows 的应用,上例中的 consumer.js 文件修改 如下:
import System.Windows.Forms; // this has a MessageBox class
import LibHW;
var hw = new LibHW.HelloWorld();
MessageBox.Show(
hw.run(),
" Dude! " ,
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation
);
编译语句:
C
:\
test
>
jsc
/
t
:
winexe consumer
.
js
双击新生成的 consumer.exe 文件,哈哈,是不是很有成就感!
从上面的例子可以看到 JScript 的潜力无限,没有做不到,只有想不到。
扩展阅读:
- 《Make your javascript a Windows .exe》
- 《JavaScript shell scripting》
原文:http://www.planabc.net/2011/06/04/use_jscript_to_create_windows_apps_and_libraries/