iT邦幫忙

DAY 27
3

Javascript面面觀系列 第 27

Javascript面面觀:應用篇《JScript》

  • 分享至 

  • xImage
  •  

禮拜天就輕鬆一點,來看看微軟的JScript引擎。

JScript已經堂堂邁入第八個版本了,為了可以執行CLR,微軟把他加上許多功能,所以自從5.6以後的版本應該都可以叫做JScript.NET了吧?(我不太熟)不像前面介紹的其他Javscript引擎,微軟並沒有釋出原始碼,但是透過CScript.exe或是WScript.exe都可以執行,所以也沒太大問題。

微軟賦予JScript的最強大功能,其實是讓他可以透過New ActiveXObject()來使用各種ActiveX元件,這些功能與VBS可已到的其實都一樣。(所以Looney大的範例,也都可以改成JScript的版本)另外,用VisualStudio裡面的jsc編譯器還可以直接編譯成.exe檔或是.dll檔來執行。
使用經驗
我自己第一個使用網頁為媒介建置的專案(大概1999年左右吧?),使用的就是JScript。當時...公司與某單位取得某電子書工具來製作產品,底層其實是內嵌IE作為介面。結果老大想要用這一個電子書工具來做題庫軟體。由於程式得在網頁上跑,考卷如果用網頁layout,恐怕是完全不能用,最後研究的結果,是使用JScript。解決方案如下:

  1. 使用Word做好考卷的layout及題目的layout,並且把產生過程用巨集錄製下來。
  2. 把錄製下來的VBA巨集,改成使用JScript的語法(這裡花了不少時間,因為早期的說明只有VBA版的,而且VB有些函數操作方法與javascript不太一樣。
  3. 制定考題的資料格式,當時是以題目編號做檔名,奇數行放格式資訊,偶數行放文字或圖片(檔名),這部份是自己動手硬幹,花了最多時間。讀取時使用FSO
  4. 網頁中使用cookie來紀錄選擇的題目
  5. 按下網頁中的輸出按鈕,使用ActiveXObject叫出Word,然後透過JScript使用JScript版的VBA巨集製作出考卷
  6. 利用try...catch來讓程式可以同時使用office 95 / 97版本的巨集

想一想還真是辛苦...結果之後再也沒有使用過JScript製作專案了...不過倒是玩出對JavaScript的興趣來,大概從2000年開始做了一個好玩的東西:http://www.fillano.idv.tw/game.htm (沒空去更新了,也許以後改成Canvas版本)

應用實例
最近接觸到應用JScript的案例,印象比較深刻的是...PHP!他在win32還靜下的建構系統,是模仿Linux底下的autoconf工具,但是透過幾支JScript做出來的!如果要在Win32底下編譯php,只要安裝好Visual C++(我使用的是Visual C++ 2008 Express(vc9)),搭配隨附的Windows SDK(但是有缺工具,所以需要有6.1版的SDK),就可以進行PHP的建構。(我使用的是console環境的VisualStudio 2008 Command Prompt)

下面抓一下進行步驟的畫面:

  1. 上去www.php.net上面下載php的原始碼(我下載的是php-5.3.0)

  2. 解壓縮後,第一步可以先執行autoconf.bat(很眼熟?只是檔名尾巴多了個.bat)

(autoconf.bat的內容,其實主要就是執行win32\build\buildconf.js)

執行後,會提示你執行'configure --help'(也很眼熟?同樣也是檔名多了個.bat):

  1. 然後就執行configure.bat,他其實是呼叫configure.js,這個javascript是上一個步驟產生的。先用configure --help來看看有哪些選項可以使用:

  1. 然後執行(我沒加參數),他就開始一步一步檢查系統,然後產生編譯用的Makefile:


(略過中間畫面)

  1. 然後執行'nmake'就可以建構出php,中途有遇到一些原始碼編碼的問題(calendar與standard模組),稍微改一下讓他編譯可以過...(當然不是解決方法)。編譯完以後,可以看到產生的php檔案:

所以,善用JScript,真的也可以做出龐大的應用...php團隊實在厲害。


上一篇
Javascript面面觀:應用篇《V8》
下一篇
Javascript面面觀:應用篇《伺服器》
系列文
Javascript面面觀30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言