運行一個簡單的node.js 服務應用


利用node.js - web 模塊

Web服務器是用於處理使用HTTP協議請求並返回網頁作為響應到客戶端的軟件應用程序。 Web服務器通常提供HTML文檔並伴隨着圖片,樣式表和腳本。大多數Web服務器還支持使用腳本語言作為服務器端腳本,或重定向到從數據庫中獲取數據的執行特定任務的應用程序服務器,執行復雜的邏輯等,Web服務器然后返回應用服務器到客戶端輸出。

Apache web服務器是最常見的一個網絡服務器。它是一個開源項目。

路徑定位過程

web服務器映射通過URL,統一資源定位符對資源文件的路徑。可以是一個本地文件系統或一個外部/內部程序。

客戶端使用的瀏覽器發起一個URL請求:http://www.test-example-site.com/website/index.htm.

瀏覽器發起的一個請求是:

GET /website/index.htm HTTP /1.1
HOST www.test-example-site.com

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

 

運行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'。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM