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啟動的服務器,會監視文件的變化,當文件變化時,自動重啟服務器