nodejs創(chuàng)建web服務(wù)器之hello world程序
Node.js 最主要的應(yīng)用是服務(wù)器序。
設(shè)計(jì)Node.js 的一個(gè)主要目的是提供高度可擴(kuò)展的服務(wù)器環(huán)境。這是我們在本章開篇介紹過的Node 和V8 引擎有所區(qū)別的地方。Node 除了用V8 引擎來解析JavaScript 外,還提供了高度優(yōu)化的應(yīng)用庫,用來提高服務(wù)器效率。比如說,HTTP模塊是專為快速非阻塞式HTTP 服務(wù)器而用C 重新編寫的。讓我們看一下Node 采用HTTP 服務(wù)器的“Hello World”經(jīng)典例子
var http=require('http');//引入核心HTTP模塊
/*創(chuàng)建服務(wù)器*/
var server=http.createServer(function(req,res){ res.writeHead(200,{"Content-type":'text/html'}); res.end('hello world'); });
/*監(jiān)聽IP以及端口*/
server.listen(8124,'127.0.0.1',function(){ console.log('服務(wù)器創(chuàng)建成成功:127.0.0.1:8124'); });
運(yùn)行代碼如下所示
ZXD@ZXD-PC /K/work/learn/nodejs/cvs01 $ node app
服務(wù)器創(chuàng)建成成功:127.0.0.1:8124
這個(gè)示例代碼首先通過require 方法把HTTP 庫包含到程序中來。有許多語言都有包含其他庫這一方法,Node 用的是CommonJS 模塊風(fēng)格。
當(dāng)前需要了解的是,HTTP 庫所具有的功能已經(jīng)賦給了http 對象。
下一步,我們需要一個(gè)HTTP 服務(wù)器。PHP 等其他語言需要在類似Apache 這樣的服務(wù)器中運(yùn)行,而Node 和它們不同,因?yàn)镹ode 本身就是Web 服務(wù)器。
但這同樣意味著我們需要先創(chuàng)建該服務(wù)器。下一行代碼調(diào)用HTTP 模塊的一個(gè)工廠模式方法
(createServer)來創(chuàng)建新的HTTP 服務(wù)器。新創(chuàng)建的HTTP 服務(wù)器并沒有賦值給任何變量,它只會成為存活在全局范圍內(nèi)的匿名對象。
我們可以通過鏈?zhǔn)秸{(diào)用來初始化服務(wù)器,并告訴它監(jiān)聽在8124 端口。當(dāng)調(diào)用createServer 的時(shí)候,我們傳了一個(gè)匿名函數(shù)作為參數(shù)。此函數(shù)綁定在新創(chuàng)建服務(wù)器的事件監(jiān)聽器上進(jìn)行request 事件處理。消息事件是JavaScript 和Node 的核心。在這個(gè)例子中,每當(dāng)一個(gè)新的訪問請求到達(dá)Web 服務(wù)器,它都將調(diào)用我們指定的函數(shù)方法來處理。我們稱這類方法為回調(diào)(callback)。因?yàn)槊慨?dāng)一個(gè)事件發(fā)生時(shí),我們將回調(diào)監(jiān)聽此事件的所有函數(shù)。
示例二:
由于跑到另一個(gè)城市,手頭沒電腦,dom framework不能如期發(fā)布,趁此學(xué)習(xí)一些新東西。這時(shí)期最迫切的需要是尋求一個(gè)超輕量的后端來架起我的框架,于是觸爪伸向傳說中的Server-Side Javascrpt。后端JS最出名無疑是Ryan Dahl的node.js,另一個(gè)是aptana IDE提供商搞出的jaxer。
首先下載node.js,然后解壓到E盤,改名為node,然后開始菜單輸入cmd,用cd命令切換到nodejs的解壓目錄:
第一個(gè)例子:hello world。
在node目錄下建立hello.js文件,然后在里面輸入:
var sys = require("sys"); sys.puts("Hello world");
然后我們在命名臺中輸入命令node hello.js,就能看到命名臺輸出結(jié)果Hello world。
第二個(gè)例子:hello world2。
好了,這次我們試從游覽器中輸出hello world。在node目錄下建立http.js,然后輸入:
var sys = require("sys"), http = require("http"); http.createServer(function(request, response) { response.sendHeader(200, {"Content-Type": "text/html"}); response.write("Hello World!"); response.close(); }).listen(8080); sys.puts("Server running at http://localhost:8080/");
然后我們在命名臺中輸入命令node http.js,在瀏覽器輸入http://localhost:8080/
第三個(gè)例子:hello world2。
node.js提供一個(gè)Buffer類用于轉(zhuǎn)換不同編碼的字符串。
目前支持三種類型:'ascii','utf8'與'binary'。詳見這里
var Buffer = require('buffer').Buffer, buf = new Buffer(256), len = buf.write('\u00bd + \u00bc = \u00be', 0); console.log(len + " bytes: " + buf.toString('utf8', 0, len));
第四個(gè)例子:hello world3。
//synopsis.js //synopsis 摘要, 梗概,大綱 var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8124); console.log('Server running at http://127.0.0.1:8124/');
相關(guān)文章
網(wǎng)頁爬蟲之cookie自動獲取及過期自動更新的實(shí)現(xiàn)方法
這篇文章主要介紹了網(wǎng)頁爬蟲之cookie自動獲取及過期自動更新的實(shí)現(xiàn)方法,需要的朋友可以參考下2018-03-03js 函數(shù)的執(zhí)行環(huán)境和作用域鏈的深入解析
在js中對象的外在表現(xiàn)形式為函數(shù)。2009-11-11js動態(tài)修改整個(gè)頁面樣式達(dá)到換膚效果
這篇文章主要介紹了通過js動態(tài)修改整個(gè)頁面樣式達(dá)到換膚效果,需要的朋友可以參考下2014-05-05利用JavaScript腳本實(shí)現(xiàn)滾屏效果的方法
這篇文章主要介紹了利用JavaScript腳本實(shí)現(xiàn)滾屏效果的方法,即一個(gè)公告欄顯示般的效果,需要的朋友可以參考下2015-07-07javascript算法題:求任意一個(gè)1-9位不重復(fù)的N位數(shù)在該組合中的大小排列序號
這篇文章主要介紹了javascript算法題:求任意一個(gè)1-9位不重復(fù)的N位數(shù)在該組合中的大小排列序號,需要的朋友可以參考下2015-04-04淺談JavaScript 數(shù)據(jù)屬性和訪問器屬性
下面小編就為大家?guī)硪黄獪\談JavaScript 數(shù)據(jù)屬性和訪問器屬性。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09