利用node.js - web 模塊
Web服務器是用於處理使用HTTP協議請求並返回網頁作為響應到客戶端的軟件應用程序。 Web服務器通常提供HTML文檔並伴隨着圖片,樣式表和腳本。大多數Web服務器還支持使用腳本語言作為服務器端腳本,或重定向到從數據庫中獲取數據的執行特定任務的應用程序服務器,執行復雜的邏輯等,Web服務器然后返回應用服務器到客戶端輸出。
Apache web服務器是最常見的一個網絡服務器。它是一個開源項目。
路徑定位過程
web服務器映射通過URL,統一資源定位符對資源文件的路徑。可以是一個本地文件系統或一個外部/內部程序。
客戶端使用的瀏覽器發起一個URL請求:http://www.test-example-site.com/website/index.htm.
瀏覽器發起的一個請求是:
Web服務器將追加路徑到根目錄。舉個例子:根目錄是home/www,那么實際路徑將被轉換為 home/www/website/index.htm.
web網絡架構
web應用程序使用分為四層。
-
Client - 此層是由Web瀏覽器,移動瀏覽器或應用程序,它可以發起HTTP請求到服務器。
-
Server - 這一層包括可攔截發出的客戶端請求,並將其傳遞到由Web服務器響應。
-
Business - 這一層由應用程序服務器組成,它通過利用Web服務器執行動態任務。這一層交互通過數據庫或某些外部程序數據層。
-
Data - 此層由數據庫或任何來源的數據。
一個簡單例子演示;
server.js
1 var http = require('http'); 2 var fs = require('fs'); 3 var url = require('url'); 4 5 http.createServer(function(request,response){ 6 var pathname = url.parse(request.url).pathname; 7 console.log('request for' + pathname + 'received.'); 8 fs.readFile(pathname.substr(1),function(err,data){ 9 if(err){ 10 console.log(err.stack); 11 response.writeHead(404,{'Content-Type': 'text/html'}); 12 }else{ 13 response.writeHead(200,{'Content-Type': 'text/html'}) 14 response.write(data.toString()); 15 } 16 response.end(); 17 }) 18 }).listen(8081); 19 console.log('server runing at http://127.0.0.1:8081/')
當前目錄執行node server.js 查看結果
瀏覽器可響應請求並打開 http://127.0.0.1:8081/+文件名,可打開當前文件下的html頁面。
client.js
//http module is required to create a web client var http = require('http'); //options are to be used by request var options = { host: 'localhost', port: '8081', path: '/test.html' }; //callback function is used to deal with response var callback = function(response){ // Continuously update stream with data var body = ''; response.on('data', function(data) { body += data; }); response.on('end', function() { // Data received completely. console.log(body); }); } //make a request to the server var req = http.request(options, callback); req.end();
當前目錄執行node client.js ;
可將 http://127.0.0.1:8081/ 端口自動響應 /test.html 文件;
node.js - Express應用程序
Express JS是用於創建Node JS的Web應用程序非常流行的Web應用程序框架。它提供了一個集成的環境便於快速開發基於Node的Web應用程序。Express框架是基於連接的中間件引擎並使用Jade HTML模板框架來做HTML模板。以下是一些Express 框架的核心功能:
-
允許設立中間件來響應HTTP請求
-
定義了用於執行基於HTTP方法和URL不同作用的路由表
-
允許動態渲染基於參數傳遞給模板的HTML頁面
安裝
當前目錄下cmd 中執行 npm install express -g 安裝express應用(-g表示全局)
express生成器 npm install express-generator -g (-g表示全局);
demo
cmd 下執行express firstApplication
再執行npm install 安裝firstApplication的依賴關系
當前文件加下生成 firstApplication 文件夾, firstApplication中包含

-
package.json 是應用程序描述符文件包含在依賴項列表中,應用程序使用 Node 的其他屬性
-
app.js 包含了服務器的初始化代碼
-
bin是用於存儲在生產模式下的應用程序
-
public用於存儲圖像,樣式表和JavaScript文件
-
routes 包含路由處理程序
-
views 包含HTML模板來生成Web應用各種視圖
更新app.js
1 var createError = require('http-errors'); 2 var express = require('express'); 3 var path = require('path'); 4 var cookieParser = require('cookie-parser'); 5 var logger = require('morgan'); 6 var http = require('http');// set 7 var bodyParser = require('body-parser'); // set 8 9 var indexRouter = require('./routes/index'); 10 var usersRouter = require('./routes/users'); 11 12 var app = express(); 13 14 // view engine setup 15 app.set('port', process.env.PORT || 8891); //set 16 app.set('views', path.join(__dirname, 'views')); 17 app.set('view engine', 'jade'); 18 19 app.use(logger('dev')); 20 app.use(express.json()); 21 app.use(express.urlencoded({ extended: false })); 22 app.use(cookieParser()); 23 app.use(express.static(path.join(__dirname, 'public'))); 24 25 // 前台主頁面 26 app.use('/', indexRouter); 27 // 后台主頁面 28 app.use('/users', usersRouter); 29 30 // catch 404 and forward to error handler 31 app.use(function(req, res, next) { 32 next(createError(404)); 33 }); 34 35 // error handler 36 app.use(function(err, req, res, next) { 37 // set locals, only providing error in development 38 res.locals.message = err.message; 39 res.locals.error = req.app.get('env') === 'development' ? err : {}; 40 41 // render the error page 42 res.status(err.status || 500); 43 res.render('error'); 44 }); 45 46 http.createServer(app).listen(app.get('port'),function(){ 47 console.log('Express server listening on port' + app.get('port')); 48 }) 49 50 module.exports = app;
運行app.js文件:node app.js
瀏覽器可通過http://127.0.0.1:8081/和http://127.0.0.1:8081/users訪問到前后台主頁面;
這是由app.js 中的基本的路由綁定的
由routes文件夾中對應的index.js和users.js創建出index.html和users.html;
當Node服務器接收到一個主頁的請求,express路由器渲染索引頁是使用模板index.jade同時傳遞參數title的值為'Express'。
