原生 HTTP 和 express


HTTP 服務
    1、加載 http 核心模塊

   var http = require('http')

  加載模板引擎(先npm安裝)

 var template = require('art-template')


    2. 使用 http.createServer() 方法創建一個 Web 服務器,返回一個 Server 實例
  

 var server = http.createServer()

 
    3. 注冊 request 請求事件,當客戶端請求過來,就會自動觸發服務器的 request 請求事件
    request 請求對象  response 響應對象

    server.on('request', function (request,response) { console.log(resqust.url) //端口號之后的路徑/...; 3.1 response 對象可以用 write() 給客戶端發送響應數據,可以使用多次,但最后一定要用 end() 來結束響應 response.write('lllll') response.end() 3.2 直接使用end(‘<h1>你</h1>’) //響應內容只能是二進制或字符串,使用JSON.stringify()

  使用模板引擎
            fs.readFile('./views/index.html', function (err, data) {
                if (err) {
                    return response.end('404 NOT FOUND');
                }
                var rel = template.render(data.toString(), dataList);
                response.end(rel);
            });
})


    4. 綁定端口號,啟動服務器

    server.listen(3000, function () { console.log('服務器啟動成功,請求訪問 http://127.0.0.1:3000/') }) 


簡寫:
http

  .createServer(function (request, response) {})  //創建一個 Web 服務器
  .listen(3000, function () {}) //綁定端口號,啟動服務器


response.end() 一個HTML頁面,如果HTML頁面引入靜態資源,需設置

 訪問首頁 if (url === '/') { fs.readFile('./views/index.html', function (err, data) { if (err) { return response.end('404 NOT FOUND'); } response.end(data); }); } else if (url.indexOf('/public/') === 0) { 訪問靜態資源(控制用戶可以訪問到什么) console.log(url); // /public/img/image3.jpg fs.readFile('.' + url, function (err,data) { if (err) { return response.end('404 NOT FOUND'); } response.end(data); }); }

 

express 框架
1、安裝  npm
2、引包

var express = require('express');


創建服務器應用程序

var app = express();


靜態資源服務:  公開指定目錄,就可以通過/public/xxx 方式訪問public目錄中所有資源

    app.use('/public/', express.static('./public/')) 127.0.0.1/public/index.html (推薦) app.use(express.static('./public/')) 127.0.0.1/index.html    通過省略/public 方式訪問 app.use('/a/', express.static('./public/')) 127.0.0.1/a/index.html    起別名,通過 /a 代替 /public 方式訪問

 

配置使用art-template 模板引擎

app.engine('art', require('express-art-template'));


 第一個參數: 表示當渲染以 .art 結尾的文件時,使用art-template 模板引擎,可以修改成 html ,則渲染 html 文件

    不需要 require('art-template')

    使用方式:

 res.render('html 模板名', {數據})


    第一個參數:不能寫路徑,默認會去項目中的 views 目錄中查找該模板文件
    如果文件是 views 中 子目錄 admin 下的 admin.html,則
    res.render('/admin/html 模板名', {數據})

    如果想要修改默認的 views 目錄,可以
    app.set('views', 修改render函數的默認路徑)

基本路由: 當以 get/post 請求 / 時,執行對應的回調函數

app.get('/', function (req, res) { res.send('hello world'); });
app.post(
'/login', function (req, res) { res.send('login'); });

獲取 get 請求的數據
    req.query  返回對象
獲取 post 請求的數據  (express網站-->資源-->中間件)
    需使用第三方包: body-parser
    
  安裝: npm install body-parser
   配置:
    
  var express = require('express')
  var bodyParser = require('body-parser')

  var app = express()

  配置body-parser,只要加入這個配置,則在 req 請求對象上多出一個屬性: body
  可以通過 req.body 獲取 post 請求數據
  // parse application/x-www-form-urlencoded
  app.use(bodyParser.urlencoded({ extended: false }))

  // parse application/json
  app.use(bodyParser.json()


設置端口

app.listen(3000, function () { console.log('app server is running'); });


修改完代碼自動重啟:
使用第三方命令行工具 nodemon 解決修改代碼重啟服務器問題

    安裝  npm install --global nodemon 驗證安裝成功 nodemon --version 使用: nodemon app.js

 通過nodemon啟動的服務器,會監視文件的變化,當文件變化時,自動重啟服務器


免責聲明!

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



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