Windows系統(tǒng)下Node.js的簡(jiǎn)單入門(mén)教程
隨著近日Paypal和Netflix宣告 遷移到Node.js, 服務(wù)器端Javascript平臺(tái)已經(jīng)證明其自身在企業(yè)領(lǐng)域的價(jià)值. 這對(duì)于Node來(lái)說(shuō)是一小步,對(duì)于Javascript而言卻是一大跨越啊! 來(lái)自.NET, Java, PHP, Ruby on Rails和更多技術(shù)領(lǐng)域的程序員, 所有游走于服務(wù)器端的編碼者都會(huì)聚集到這個(gè)平臺(tái)上. 作為像 Yahoo, Walmart, 和 Oracle 這樣的大玩家入局,, Node 正在甩掉其一直就存在的不成熟和不穩(wěn)定的壞名聲. 在這篇文章中,我會(huì)向你展示在Window環(huán)境下安裝Node.js到底有多容易.
安裝Node.js
讓Node.js安裝在Windows上就是小事一樁. 到 Node.js 網(wǎng)站下載并運(yùn)行".msi"文件. 它將會(huì)把Node.js 和 NPM (Node包管理模塊)安裝上. NPM 相當(dāng)于用于.NET應(yīng)用的 NuGet 包管理器.
運(yùn)行Node.js
在Windows上運(yùn)行Node.js同樣很容易. 打開(kāi) PowerShell 并輸入 "node -v" 確保Node在你的環(huán)境變量,并查看你正在運(yùn)行的Node.js的版本. 同樣的輸入 "npm -v" 來(lái)查看你安裝的Node包管理工具的版本. 你弄好了沒(méi)? Ok, 讓我們來(lái)開(kāi)始享受樂(lè)趣吧!!
打開(kāi)記事本程序,我們將構(gòu)建我們的第一個(gè)Node.js應(yīng)用. 把下面的代碼復(fù)制到記事本程序中,使用任何文件名都可以,比如"example.js", 并把它保存到你希望的文件夾中:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Node'); }).listen(1337, '127.0.0.1');
現(xiàn)在回到 PowerShell. 將路徑變更到你的"example.js"文件存放的地方,并運(yùn)行Node!
cd C:\Websites\NodeTest node example.js
開(kāi)啟你的網(wǎng)頁(yè)瀏覽器,導(dǎo)航輸入 http://127.0.0.1:1337. 起作用了么? 恭喜你運(yùn)行了你的第一個(gè)Node.js應(yīng)用!
提供網(wǎng)站服務(wù)
你會(huì)擔(dān)憂我會(huì)只留下一個(gè) "Hello World" 示例就收工了? 如果我們知道如何去運(yùn)行一個(gè)HTML文件,那將會(huì)更加的美好. 添加一個(gè) "index.html" 文件,里面可以是任何HTML內(nèi)容. 將會(huì)像這樣:
<html> <head> <title>Sample Node.js Website</title> </head> <body> <p>This is the home page for you Node.js website.</p> </body> </html>
是時(shí)候運(yùn)行應(yīng)用了。創(chuàng)建一個(gè)可以叫任何名字的新文件,比如 "index.js", 并把如下的js代碼加到里面:
var http = require('http'); var fs = require('fs'); http.createServer(function(req, res){ fs.readFile('index.html',function (err, data){ res.writeHead(200, { 'Content-Type': 'text/html', 'Content-Length': data.length }); res.write(data); res.end(); }); }).listen(1337, '127.0.0.1');
事情在這里開(kāi)始變得更加有趣了. 注意開(kāi)頭的地方多了一行 "require" . 你正在往你的應(yīng)用中帶入需要的依賴(lài)程序. 這像是C#中用來(lái)調(diào)用依賴(lài)程序的 "using" 命名空間指令.
通過(guò)在PowerShell中輸入: node index.js 來(lái)運(yùn)行"index.js"(不要忘了敲擊 Ctrl-C來(lái)退出上一個(gè)Node應(yīng)用的運(yùn)行,或者在這一次使用一個(gè)新的端口號(hào)). 在你的瀏覽器中,導(dǎo)航到http://127.0.0.1:1337 ,你就應(yīng)該會(huì)看到你的HTML文件了. 你將可能在這點(diǎn)成就上感到有些激動(dòng), 但如果你想我,就會(huì)對(duì)它產(chǎn)生一些復(fù)雜的感覺(jué). 這還只是低級(jí)別的編程,如果我不得不去考慮讀取/流媒體文件,還有有關(guān)每次應(yīng)該發(fā)送什么狀態(tài)這些問(wèn)題的時(shí)候,世界很快就會(huì)變得煩惱重重. 向 ExpressJS道好吧!
使用Node包管理器
Node.js有一個(gè)再次讓我們感覺(jué)世界美好的搭檔. ExpressJS 屏蔽掉了需要在Node.js進(jìn)行的老調(diào)重彈,讓你可以直接進(jìn)入web開(kāi)發(fā). 它是一個(gè)可以讓你構(gòu)建單頁(yè),多頁(yè)還有混合類(lèi)型web應(yīng)用程序的web框架. 沒(méi)有它你在 Node.js 領(lǐng)域是不會(huì)有盼頭滴!
首先使用 NPM 來(lái)安裝它. 為此,再一次打開(kāi)PowerShell并切換到你的應(yīng)用程序的路徑. 現(xiàn)在輸入: npm install express. 它將會(huì)創(chuàng)建一個(gè)叫做 "node_modules" 來(lái)安裝 ExpressJS. 從這個(gè)角度上看,你的Node模塊將會(huì)放到那里,有點(diǎn)像在.NET應(yīng)用中的"bin"目錄, 從這里你可以調(diào)用或者"require"你的依賴(lài)程序.
ExpressJS入門(mén)
現(xiàn)在任意創(chuàng)建一個(gè)新文件, 比如 "server.js", 并把下面的代碼粘貼進(jìn)去:
var express = require('express'); //CREATE APP var app = express(); //LOCATION OF STATIC CONTENT IN YOUR FILESYSTEM app.use(express.static(__dirname)); //PORT TO LISTEN TO app.listen(1337);
這是在調(diào)用ExpressJS的依賴(lài), 然后從它那里創(chuàng)建一個(gè)應(yīng)用. 從此你可就牛逼大發(fā)了! 在這里,我們只是簡(jiǎn)單的提供靜態(tài)文件服務(wù). "__dirname" 是來(lái)自ExpressJS的一個(gè)特殊的變量,意思是根文件系統(tǒng)位置. 最后你告訴應(yīng)用去偵聽(tīng)端口 1337. 現(xiàn)在你就擁有了一個(gè)提供靜態(tài)文件服務(wù)的 Node.js 站點(diǎn)了! 另外在新增一些HTML文件,一些放在子目錄中,然后到http://127.0.0.1:1337 測(cè)試看看吧.
關(guān)于 IIS
在這些示例中, 我一直都是在端口1337運(yùn)行應(yīng)用,而不是端口80.原因是IIS已經(jīng)偵聽(tīng)了80端口. 有許多的方法可以使IIS 和 Node.js 和諧共存:
- IISNode: 這是一個(gè)在你的IIS站點(diǎn)讓Node.js像一個(gè)應(yīng)用池那樣運(yùn)行的很聰明的點(diǎn)子, 同在IIS中與運(yùn)行PHP很像. 事實(shí)上,Azure就是用這個(gè)在其平臺(tái)上運(yùn)行Node.js的.
- WinServ: 它讓 Node.js 像一個(gè)Windows服務(wù)那樣運(yùn)行. 它實(shí)際上是對(duì)流行了 NSSM (Non-Sucking Service Manager)的一個(gè)對(duì)Node.js友好的封裝. 一旦作為一個(gè)服務(wù)運(yùn)行,你就可以使用IIS的應(yīng)用請(qǐng)求路由(ARR) 來(lái)代理向你的Node.js應(yīng)用端口發(fā)起的請(qǐng)求.
關(guān)于 MS SQL
有許多為Node.js準(zhǔn)備的 MS SQL 驅(qū)動(dòng)程序, 有些甚至是跨平臺(tái)的. 有一個(gè)只能在Windows環(huán)境中運(yùn)行的,是由Windows Azure發(fā)布: Microsoft Driver for Node.js for SQL Server. 而你可以像下面這樣開(kāi)始工作:
var sql = require('node-sqlserver'); var connStr = "Driver={SQL Server Native Client 11.0};Server=(local);Database=AdventureWorks2012;Trusted_Connection={Yes}"; var cmd = "SELECT TOP 10 FirstName, LastName FROM Person.Person"; sql.open(connStr, function (err, conn) { conn.queryRaw(cmd , function (err, results) { for (var i = 0; i < results.rows.length; i++) { console.log( "FirstName: " + results.rows[i][0] + " LastName: " + results.rows[i][1]); } }); });
總結(jié)
這些都只是皮毛! 與 ExpressJS攜手, 你將能夠創(chuàng)建帶有路由、視圖、布局、服務(wù)還有更多組件的完全成熟的MVC應(yīng)用程序. 同樣,除非你需要去集成一些現(xiàn)有的Microsoft應(yīng)用程序或者M(jìn)S SQL數(shù)據(jù)庫(kù), MongoDB 在你創(chuàng)建一個(gè)Node堆棧式是能幫助你從SQL中解放的好伙伴. 最后,你可以使用MEAN創(chuàng)建一個(gè)MEAN Javascript全棧應(yīng)用, 包括有MongoDB, ExpressJS, AngularJS, 和Node.js. 現(xiàn)在企業(yè)已經(jīng)向Node.js靠攏了, 對(duì)你而言同樣是不是時(shí)候來(lái)輔助行動(dòng)了呢?
- Node.js入門(mén)教程:在windows和Linux上安裝配置Node.js圖文教程
- 通過(guò)node-mysql搭建Windows+Node.js+MySQL環(huán)境的教程
- windows8.1+iis8.5下安裝node.js開(kāi)發(fā)環(huán)境
- Windows8下搭建Node.js開(kāi)發(fā)環(huán)境教程
- Mac/Windows下如何安裝Node.js
- 在Windows上安裝Node.js模塊的方法
- Node.js:Windows7下搭建的Node.js服務(wù)(來(lái)玩玩服務(wù)器端的javascript吧,這可不是前端js插件)
- windows系統(tǒng)下node.js環(huán)境配置與安裝教程圖文詳解(詳細(xì)版)
相關(guān)文章
node.js中的events.emitter.removeListener方法使用說(shuō)明
這篇文章主要介紹了node.js中的events.emitter.removeListener方法使用說(shuō)明,本文介紹了events.emitter.removeListener的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12nodejs通過(guò)phantomjs實(shí)現(xiàn)下載網(wǎng)頁(yè)
這篇文章主要介紹了nodejs通過(guò)phantomjs實(shí)現(xiàn)下載網(wǎng)頁(yè)的方法,有需要的小伙伴可以參考下。2015-05-05Node.js?全局變量無(wú)法掛載問(wèn)題解決分析
這篇文章主要為大家介紹了Node.js?全局變量無(wú)法掛載問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04node.js中的buffer.length方法使用說(shuō)明
這篇文章主要介紹了node.js中的buffer.length方法使用說(shuō)明,本文介紹了buffer.length的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12解決Node.js使用MySQL出現(xiàn)connect ECONNREFUSED 127.0.0.1:3306的問(wèn)題
這篇文章主要介紹了解決Node.js使用MySQL出現(xiàn)connect ECONNREFUSED 127.0.0.1:3306報(bào)錯(cuò)的相關(guān)資料,文中將問(wèn)題描述的很清楚,解決的方法也介紹的很完整,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-03-03nodejs構(gòu)建本地web測(cè)試服務(wù)器 如何解決訪問(wèn)靜態(tài)資源問(wèn)題
這篇文章主要為大家詳細(xì)介紹了nodejs構(gòu)建本地web測(cè)試服務(wù)器,教大家如何解決訪問(wèn)靜態(tài)資源問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07