⑴ 如何用express nodejs 創建web伺服器
簡單的三步走抄:
安裝所需環境..或者模塊等
安裝node 環境
指定文件夾,初始化
安裝express
編寫入口代碼
指定入口文件,例如:app.js
編寫代碼:
varexpress=require('express');
varapp=express();
app.get('/',function(req,res){
res.send('HelloWorld!');
});
app.listen(3000,function(){
console.log('Exampleapplisteningonport3000!');
});
啟動
打開命令行,切換到目錄下
命令:node app即可啟動
⑵ 如何用nodejs搭建web伺服器
創建一個記事本將下面的代碼復制進去 保存為app.js
var http = require('http');//引入響應頭
http.createServer(function (request, response) {
//參數一是與請求相關的對象
//參數二是與響應有關的對象
// 發送 HTTP 頭部
// HTTP 狀態值: 200 : OK
// 內容類型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 發送響應數據 "Hello World"
response.end('Hello World\n');
}).listen(8888);//監聽埠
// 終端列印如下信息
console.log('Server running at http://127.0.0.1:8888/');
以下以我的電腦上的路徑為准 我是將app.js 保存在E:\NODE這個文件夾下面
接下來就是運行了打開cmd
第一步:E:
第二步:cd NODE //CD是 命令行改變目錄的命令
第三步:node app.js
這個是運行效果接下來訪問localhost:8888就可以看到hollo word
建議多看一些node的模塊 比如 express和session mysql之類的模塊
⑶ nodejs內置模塊有哪些
一、Express框架
前面的章節已經介紹過了,可以使用npm來安裝node.js模塊。具體操作請參照以前寫的nodejs概論。
Express是一個nodejs的web開源框架,用於快速的搭建web項目。其主要集成了web的http伺服器的創建、靜態文本管理、伺服器URL地址請求處理、get和post請求處理分發、session處理等功能。
使用方法,在cmd中打開你所想創建web項目的路徑。然後輸入
Express appname
即可創建一個名為appname的web項目。控制台列印結果
在jada文件中是可以使用for循環和if判斷語句的,可以讓你體會類似JSP的<%%>和php的<php></php>在網頁上輸出數據的快感。
三、forever模塊
nodejs作為http伺服器,需要確保服務順利進行,要注意一下兩點:
1.後台服務運行,監控運行日誌,以及http運行日誌;
2.確保項目的正常安全運行,Node.js的啟動命令node,很大程度無法滿足運行需求;
Node.js的forever模塊在第二點就可以起到很大的作用,同時其擁有監控文件更改、自動重啟等功能。
forever模塊的使用方法有兩種:1.在命令行中使用
forever -l forever.log -o out.log -e err.log app.js
-l forever.log -o out.log -e err.log分別指定了forever的運行日誌,腳本流水日誌,腳本運行錯誤日誌,啟動後將在本文件夾下產生out.log、err.log文件。
2.在編碼中require forever模塊使用。
四、Socket.IO模塊
Socket.IO模塊主要功能是將WebSocket協議應用到所有瀏覽配廳器。主要用於實時的長連接多求情項目中。
例如:在線聯網游戲,實時聊天、實時股票查看、二維碼掃描登錄掘粗等。
安裝方法仍然是在cmd在中輸入npm install socket.io
如何使用Socket.IO來創建一個項目。
需要分別實現服務端和客戶端的邏輯:
先創建一個服務端的node.js腳本index_server.js
var app = require('http').createServer(handler)//創建伺服器app
, io = require('socket.io').listen(app)//引用socket.io模塊監聽app
, fs = require('fs')//引用文件處理模塊
app.listen(80);//指定app監聽的埠,第二個參數127.0.0.1可省略
function handler (req, res) {
fs.readFile(__dirname + '/index.html', function (err, data) { if (err) {
res.writeHead(500); return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.emit('判賣鎮news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
其中,socket.emit()為Socket發送消息的函數,第一個參數表示發送消息的key值,第二個參數為發送消息的內容,也就是發送的數據。
Socket。on()為Socket接收消息的函數,第一個參數為接收消息的可以值,第二個參數為回調函數,其中回調函數攜帶的參數為接收消息所發送的數據。
接下來web前端如何使用javaScrit 來連接Socket伺服器。
新建一個index_client.html
<script type="text/javascript" src="socket.js"></script>
<script type="text/javascript"> var socket = io.connect('http://localhost');//創建本地sock連接
socket.on('news',function (data) {//Socket接收news消息時執行回調函數 console.log(data);
socket.emit('my other event',{my:'data'});
});</script>
<script type="text/javascript" src="socket.js"></script>載入已經安裝好的Socket.io的本地JavaScrit文件。
var socket = io.connect('http://localhost');因為埠為80,所有這里可以不埠號
socket.on('news',function (data){}//客戶端接收news消息成功後,發送my other event消息到服務端,發送的消息內容為json對象{my:'data'}
接下來只需要運行服務端的index_server.js文件來啟動socket服務
效果:在瀏覽器輸入http://127.0.0.1按F12調出瀏覽器的控制台console即可看見列印出了一個object對象。
執行完畢後可能會報錯:catnot find mole socket.io,說明你的socket.IO沒有安裝,或已經安裝並配置為全局,但你的安裝路徑並沒有配置到在path中,所有無法引用。
你可以選擇配置path,或者安裝到項目內。這里建議安裝到你的項目目錄下,而不是簡單粗暴的配置為全局。先卸載npm uninstall socket.io 進入指定目錄後安裝node index_server.js
socket.io詳細請參閱 http://cnodejs.org/topic/50a1fcc7637ffa4155b5a264
五、request模塊
request模塊為開發者提供了一種簡單訪問HTTP請求的方法。request還支持HTTPS的訪問方法。
安裝:
npm install requset
request模塊基本上覆蓋了所有的HTTP請求方式如GET,POST,HEAD,DEL等。但其最基本的兩個方法是request.get()和request.post().
get和post的區別
get:
1.使用get向伺服器發出和接收的請求會附在url之後。類似:http://www..com?id=1221&name=5555這個url中傳遞了兩個參數,一個為id,一個為name。
2.get請求不能超過1024個位元組。
post沒有限制,也不會附在url上。
接下來做一個簡單的實例
get實例:
首先新建一個伺服器app_get.js
var http= require("http");
http.createServer(function(req,res){
res.writeHead(200,{'content-Type':'text/plain'});
res.end('Hello world
'+req.method);
}).listen(1337,"127.0.0.1");
再建一個發送求情的request_get.js文件
var request=require('request');
request.get("http://127.0.0.1:1337",function(error,response,result){
console.log(result);
});
在CMD中運行app_get.js,運行成功後,再打開一個cmd(之前的cmd不要關閉),執行request_get.js文件。
執行後的結果如下
hello world
GET
可以看出,通過request.get方法訪問
http://127.0.0.1:1337 返回的結果就是res.end()的參數
post實例:
和上面一樣,先新建伺服器app_post.js
var http= require("http"),
querystring=require('querystring');
http.createServer(function(req,res){ var postData=""; //開始非同步接收客戶端post的數據
req.addListener("data",function (postDataChunk) {
postData += postDataChunk;
}); //非同步post數據接收完畢後執行匿名回調函數
req.addListener("end",function(){ var postStr=JSON.stringify(querystring.parse(postData));
res.writeHead(200,{'content-Type':'text/plain'});
res.end(postStr+'
'+req.method);
});
}).listen(1400,"127.0.0.1");
然後再新建一個request_post.js
var request=require("request");
request.post('http://127.0.0.1:1400',{form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})
像上面一樣在cmd中執行後顯示的結果如下:
D:
odejssrc
equest>node request_post.js
{"name":"ermu","book":"node.js"}
POST
request post提交了一個json對象{"name":"ermu","book":"node.js"}而伺服器接通過獲取該POST數據,然後返回客戶端,同時將http請求方式也響應到客戶端。
request post參數可以有兩種傳遞方式。
其中,第一種是將url和form表單的數據作為json參數在request post傳遞。舉例如下:
request.post('url':'http://127.0.0.1:1400',form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})
另一種是將url和form作為兩個參數,上面的實例就是使用這種方法。
六、 Formidable模塊
該模塊的目的是為了解決文件上傳。
在原生的node.js模塊中,提供了獲取post數據的方法,但是並沒有直接獲取上傳文件。
⑷ nodejs如何部署到伺服器上
有幾種部署方式,由項目復雜度而定。
最簡單的。
簡單的小網站可以直接使用Node.js作為web伺服器,不做前後端分離,使用後端模板填充數據,代表框架express。
如果要做負載均衡或者響應多端請求,那麼採用前後端分離。前端代碼可以放在CDN或nginx這類靜態伺服器上,前端向Node.js服務端發送rest請求。代表框架koa。
如果業務更加復雜,有較多的CPU密集型任務需要執行,那麼Node.js後面再接一層伺服器(Java、Python)來處理。
另外由於Node.js是單線程進程,一旦出錯就會崩潰,導致服務端無法訪問。所以部署Node.js的時候需要使用
PM2
,這樣可以在Node.js程序崩潰之後及時重啟,當然還有其它好處,比如灰度部署、負載均衡等。⑸ 如何用nodejs搭建web伺服器
使用Node.js搭建Web伺服器是學習Node.js比較全面的入門教程,因為實現Web伺服器需要用到幾個比較重要的模塊:http模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等,下面我們就一起來學習如何搭建一個簡單的Web伺服器。
作為一個Web伺服器應具備以下幾個功能:
1、能顯示以.html/.htm結尾的Web頁面
2、能直接打開以.js/.css/.json/.text結尾的文件內容
3、顯示圖片資源
4、自動下載以.apk/.docx/.zip結尾的文件
5、形如http://xxx.com/a/b/ , 則查找b目錄下是否有index.html,如果有就顯示,如果沒有就列出該目錄下的所有文件及文件夾,並可以進一步訪問。
6、形如http://xxx.com/a/b, 則作301重定向到http://xxx.com/a/b/ , 這樣可以解決內部資源引用錯位的問題。
引入需要用到的幾個模塊:
創建服務並在指定的埠監聽:
在創建服務的時候需要傳遞一個匿名函數processRequest 對請求進行處理,processRequest接收2個參數,分別是request和response, request對象中包含了請求的所有內容,response是用來設置響應頭以及對客戶端做出響應操作。
請求處理函數中有幾個重點需要說一下:
對於路徑中有中文的,瀏覽器會自動進行編碼(英文不變,中文會變),因此在接收到地址後,需要對地址進行解碼,否則最後得到的路徑和真實路徑不相符,
當訪問路徑不是以具體的文件結尾,並且不是以/結尾,則需要通過重定向加上/,表示當前目錄,否則當前路徑下的靜態資源會找不到
如果訪問路徑是目錄,則列出該目錄下所有文件及文件夾,並可以點擊訪問,為了讓中文目錄能正常顯示,則還要在header中設置charset=utf-8
核心代碼就這么多,大概140行左右,完整的代碼已上傳到github:https://github.com/git-onepixel/Node,
如果要運行demo,打開cmd切換到根目錄,運行node start 即可。
⑹ 如何用命令行開啟nodejs搭建web伺服器
首先,需要安裝nodejs,這個可以去官網下載,目前我本地安裝的v0.12版本。
安裝完成後可以通過命令行測試安裝是否成功,輸入:node -v,應該會顯示當前安裝node版本號。
本文中用到的模塊,都是nodejs核心模塊,不需要從外部下載,如果有需要,可以使用以下命令安裝:npm install xxx。
開始
下一步,新建js文件,可以命名為server.js,代碼如下:
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; // 命令行第三個參數,用來接收目錄,可為空,相對當前server.js文件的目錄名稱
// 比如使用命令 node server debug,意思就是debug文件夾與server.js文件同級
// 且你想以debug文件夾啟動web服務
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;