Node js 框架 express 使用

Express 框架的基本使用

express 4.x 文檔: http://www.expressjs.com.cn/4x/api.html#express

安裝

npm install express --save

基本使用

// 引入模塊并實例化對象
const app  = require("express")();

// 監聽端口
app.listen(3000);

app.get("/", (request, response) => {
    response.end("hello world");    
});

托管靜態文件

在設置好后靜態文件托管目錄后, 訪問指定的目錄, 就會自動讀取并且返回

js

// 引入模塊
const express = require("express");
const app  = express();

// 設置靜態文件托管目錄

// 第一種方式設置, 不加路由, 按路徑訪問
app.use(express.static(__dirname + "/public"));

// 第二種方式設置, 使用路由, 必須按路由訪問
app.use(express.);

模板中 (index.css 位于 /public 目錄下)

<!-- 1.不加路由的訪問方式,按照路徑 -->
<link rel="stylesheet" href="/index.css">

<!-- 2.使用的方式, 按照路由 -->
<link rel="stylesheet" href="/public/index.css">

路由 (請求)

  • GET 請求
const app  = require("express")();

// app.get("請求路徑", (req, res)=>{ ... });
app.get("/get", (request, response) => {
    response.end("hello world");
});
  • POST 請求
const app  = require("express")();

// app.get("請求路徑", (req, res)=>{ ... });
app.post("/post", (request, response) => {
    response.end("hello world");
});
  • 路由參數 路由參數,主要是針對 get 請求, post請求可以使用 formidable 這個包

js 中設置和獲取路由參數

// 設置模板引擎
app.set('views', './view');
app.engine('.html', ejs.__express);


app.get("/", (request, response) => {
    response.render("test.html");
});

// 設置參數 /:id
app.get("/test/:id/:name", (request, response) => {
    // 對象方式,獲取參數 id
    let id = request.params.id;
    // 數組方式, 獲取參數
    let name = request.params["name"];

    response.send(name+id);
});

在模板中使用

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ejs</title>
</head>
<body>
    <p> <a href="/test/alex/1">參數</a>   </p>
    <!-- <p> <a href="/test?id=1">第一種方式</a> </p> -->
</body>
</html>

響應

  • 發送字符串/json
// 引入模塊
const ejs = require("ejs");
const express = require("express");
const app = express();

// 監聽端口
app.listen(3000);

// 發送字符串
app.get("/str", (request, response) => {
    // 發送json
    response.send({ name: 'alex', age: 20 });
});


// 發送json
app.get("/json", (request, response) => {
    response.send({ name: 'alex', age: 20 });
});
  • 設置狀態碼
// 引入模塊
const ejs = require("ejs");
const express = require("express");
const app = express();

// 監聽端口
app.listen(3000);

app.get("/", (request, response) => {
    response.status(404).send("Not Found");
});
  • 多次響應
// 引入模塊
const ejs = require("ejs");
const express = require("express");
const app = express();

// 監聽端口
app.listen(3000);

app.get("/", (request, response) => {
    response.write("test");
    response.write("test");
    response.write("test");
    response.end("test end");
});

應用生成器

通過應用生成器, express可以快速創建一個應用的骨架

  • 安裝
npm install express-generator --save
  • 查看幫助
express -h
  • 安裝所欲依賴包
npm install
  • 設置模板引擎
express --view=ejs
  • 啟動
set DEBUG=your-project-name  &  npm start
  • 生成后的目錄結構樹
|--bin              運行目錄
|--node_modules     依賴包存放目錄
|--public           靜態資源存放目錄
    |--images
    |--javascripts
    |--stylesheets
|--routes           路由文件存放目錄
    |--index.js
    |--user.js
|--views            模板文件存放目錄
    |--error.ejs
    |--index.ejs
|--app.js           入口文件
|--package.json
|--package-loack.json
  • app.js
let createError = require('http-errors');
let express = require('express');
let path = require('path');
let cookieParser = require('cookie-parser');
let logger = require('morgan');

// 導入路由文件
let indexRouter = require('./routes/index');
let usersRouter = require('./routes/users');

// 創建express對象
let app = express();

// 模板引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// 使用引入的包
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({extended : false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

// 讓用戶能夠訪問路由
app.use('/', indexRouter);
app.use('/users', usersRouter);

// 錯誤頁面
app.use(function (req, res, next) {
    next(createError(404));
});

// 錯誤處理
app.use(function (err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};

    // render the error page
    res.status(err.status || 502);
    res.render('error');
});

// 導出app對象
module.exports = app;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。