2012-07-21 56 views
0

我有一個問題,試圖找出如何在issexpress/issnode 下啓動nodejs網站而不使用Web-Matrix。基本上我需要通過點擊Web-Matrix中的開始/停止來完成同樣的事情,但在它之外。如何從命令行啓動iisexpress/iisnode下的nodejs web站點?

UPDATE

如果一個網站可以僅通過

node.exe sever.js 

爲什麼我需要iisexpress或iisnode或網絡矩陣或其他任何運行?

回答

0

您不需要IISNode或WebMatrix來在Windows上進行節點開發。

IISNode提供了從節點到IIS的橋樑 - 如果您在Windows上運行節點,這可能是您在生產中要做的事情。在開發時,我們將包含在WebMatrix中,以便在開發時和生產中獲得一致的體驗。如果你不想使用IISNode,你可以使用命令行來啓動進程(正如你想象的那樣)。

WebMatrix只是一個代碼編輯器。它使節點項目的工作變得更加簡單,併爲節點開發提供了一堆花招和哨音。出於上述原因,我們使用節點模板來降低IISNode - 但您當然不必使用它。

+0

我很抱歉改變主題,但你說我們指的是WebMatrix,所以我相信你有點接近它。在WebMatrix中爲Knockout.js進行開發是非常煩人的事情,即WebMatrix重新格式化腳本標記的內容,儘管它的類型不是text/javascript(在我的情況下是text/html)。我不需要重新格式化,我該如何禁用此功能? – 2012-07-30 23:07:53

+0

那麼我會說,讓用戶安裝不必要的東西,如國際空間站表達不會有助於輕鬆學習如何在node.js中編程。因爲它不提供直接的好處,也不能解釋爲什麼需要IIS。通過提及「一致的體驗」,您是否暗示IIS添加到node.js中的某些東西在編寫node.js for Windows時需要考慮? – 2012-07-30 23:21:02

+0

謝謝你的答案btw! – 2012-07-30 23:22:08

0

一旦您在IISExpress中配置了您的站點(可能通過WebMatrix或VisualStudio),它將被記錄在IIS中,默認情況下使用您的web項目的名稱。它現在可以這樣初始化:

start C:/Program Files/IIS Express/iisexpress /site:YourProjectName

所以,你可以調用iisexpress工具內server.js:

/* in your server.js */ 

var fs = require("fs"); 
var exec = require("child_process").exec; 

var IIS_PATH = "C:/Program Files/IIS Express/"; 
var IIS_PATH_64 = "C:/Program Files (x86)/IIS Express/"; 
var IIS_COMMAND = "iisexpress"; 
var SITE_NAME = process.argv.slice(2)[0] || "MyDefaultWebProject"; 
var IIS_PARAM = " /site:" + SITE_NAME; 

if(!fs.existsSync(IIS_PATH)) 
    IIS_PATH = IIS_PATH_64; 

exec("start " + IIS_COMMAND + IIS_PARAM, {cwd: IIS_PATH }); 

和運行這樣的:

node server.js MyWebProject

; )