跳到主要內容

[分享] node.exe 利用child_process做些事情

node v0.5.3 版本終於出現了,先看一下原文到底做了哪些更新。

2011.08.01, Version 0.5.3 (unstable)

Fix crypto encryption/decryption with Base64. (SAWADA Tadashi)
#243 Add an optional length argument to Buffer.write() (koichik)
#657 convert nonbuffer data to string in fs.writeFile/Sync (Daniel Pihlström)
Add process.features, remove process.useUV (Ben Noordhuis)
#324 Fix crypto hmac to accept binary keys + add test cases from rfc 2202 and 4231 (Stefan Bühler)
Add Socket::bytesRead, Socket::bytesWritten (Alexander Uvarov)
#572 Don’t print result of –eval in CLI (Ben Noordhuis)
#1223 Fix http.ClientRequest crashes if end() was called twice (koichik)
#1383 Emit ‘close’ after all connections have closed (Felix Geisendörfer)
Add sprintf-like util.format() function (Ben Noordhuis)
Add support for TLS SNI (Fedor Indutny)
New http agent implementation. Off by default the command line flag --use-http2 will enable it. make test-http2 will run the tests for the new implementation. (Mikeal Rogers)
Revert AMD compatibility. (isaacs)
Windows: improvements, child_process support.
Remove pkg-config file.
Fix startup time regressions.
doc improvements

這次更新主要的幾個重點在於,windows用戶來說最大的更動開始支援child_process,node能夠支援child_process之後,就可以做很多(壞)事情。

模組(Modules)幾乎都可以支援(目前專案上所使用的模組都可以支援),雖然幾經測試之後筆者這邊的npm還是無法安裝成功。但是根據上篇文章的windows模組加載方式,皆可以正常執行。

關於child_process
測試nodejs code,儲存為test.js
var exec = require('child_process').exec,
    ls    = exec('dir');

ls.stdout.on('data', function (data) {
  console.log('stdout: ' + data);
});

ls.stderr.on('data', function (data) {
  console.log('stderr: ' + data);
});

ls.on('exit', function (code) {
  console.log('child process exited with code ' + code);
});

使用node.exe v0.5.2以前,會造成錯誤無法執行

使用node.exe v0.5.3,可以正確執行cli指令

結語
child_process可以讓node.exe變成windows本地端服務的產出,這邊只是一個小小範例,當然各位的技術都比我強,說不定能產出些java xxxx.java之類的指令做出些更奇怪偉大的事情出來。


留言

這個網誌中的熱門文章

[CSS] z-index 在不同瀏覽器繼承問題

今天會討論到這個課題,是因為要實做一個Popup dialog,所以我們希望的結果如下圖。 可是在IE7 卻發生了這樣的情況。 Popup不論怎麼設定z-index都無法浮在最上層,我們看一下html架構發生什麼事情。

[教學] 快快樂樂刪除CodeIgniter index.php

預設的CI網址預設都設定為index.php同一層級,因此所有的程式都必須指定index.php導向才能開始,例如 http://localhost/ci/index.php/welcome/test http://localhost/ci/welcome/test 本文將說明如何將惱人的index.php消除,還你一個漂亮的URL。 設定開始: 接下來說明如何使用rewrite方式將惱人的index.php去除。 rewrite不清楚的人,煩請先自行google 首先要先確定Apache的 mod_rewrite 有 開啟 ,如果沒有開啟請設定好之後重新啟動apache。 接著,在根目錄底下建立一個新檔案,檔名為 .htaccess ,裡面程式碼如下: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule> 接著到 application/config/config.php ,開啟檔案修改 $config['index_page'] = ""; 注意: /index.php/$1 要根據你目錄,例如 http://localhost/index.php ,網站根目錄為 /ci/index.php 則要寫成 /ci/index.php/$1 接著至CI目錄下,尋找 config\config.php , 修改一下裡面的檔案,修改如下: $config['index_page'] = ""; 存檔後,如此一來大功告成。 參考資料 官方網站說明

[教學] Mojito 安裝與入門,install mojito for beginner.

mojito ,最近終於從 YDN 對外公開此專案,這個套件主要用於解決前端多重裝置及瀏覽器端的問題,後端服務採取 node.js ,因此使用上必定要先準備以下幾個元素 準備素材 c++ complier git Node.js > 0.4.x NPM > 1.0.x 安裝方式 git clone git://github.com/yahoo/mojito.git cd mojito/source sudo npm install -g . npm install . 以上四個簡單的步驟,就可以把 mojito module 完整安裝到服務器上,接著就可以開始進入 mojito 的世界 使用方式 mojito 提供了完整的 command line 給開發者使用,接著先建立一個基本 hello world 專案,跟著以下步驟完成第一個專案。首先建立一個 mojito application, mojito create app hello cd hello 切換到目錄之後,再接著建立自己的 mojit,這邊的 mojit 就像是一個應用(application)可能會包含許多個獨立網站體,擁有獨立架構的 MVC ,包含內部設定等,詳細資料可以參考官方的 說明 ,建立 mojit mojito create mojit HelloMojit 輸入指令後,會看到顯示結果如下, creating mojit called 'HelloMojit' (using "default" archetype) ✔ mojit: HelloMojit created! ✔ mojito done. 接著修改 application.json 這個 mojit 設定檔案,讓剛才新建立的 hellp application 指定底下有一個 mojit -> HelloMojit ,讓應用可以去執行 mojit controller ,修改如下, [ { "settings": [ "master" ], "appPort": 8666, "specs": { ...