什麼是 JScript?
JScript 是由微軟開發的動態指令碼處理語言,基於 ECMAScript 規範實現。Internet Explorer 中的 JavaScript,實際上是指 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 編譯器選項
– 輸出檔案 -
/out:<file> 指定二進位輸出檔案的名稱
/t[arget]:exe 建立控制台應用程式(預設)
/t[arget]:winexe 建立 Windows 應用程式
/t[arget]:library 建立庫程式集
/platform:<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
/utf8output[+|-] 以 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.jsMicrosoft (R) JScript Compiler version 8.00.50727for Microsoft (R) .NET Framework version 2.0.50727Copyright (C) Microsoft Corporation 1996-2005。著作權所有,並保留一切權利。
你會驚訝的發現,C:\test 目錄下多了個 helloWorld.exe 檔,非常簡單吧,呵呵
最後我們可以直接執行 helloWorld.exe 檔:
C:\test>helloWorldHello 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.jsMicrosoft (R) JScript Compiler version 8.00.50727for Microsoft (R) .NET Framework version 2.0.50727Copyright (C) Microsoft Corporation 1996-2005。著作權所有,並保留一切權利。C:\test>consumerHello 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》