Express

Express

  • 安装
  • Hello World
  • 基本路由
    • 介绍
    • demo
  • 处理静态资源
  • 路由
    • 路由方法
    • 路由路径
    • 动态路由

安装

# 创建并切换到 myapp 目录
mkdir myapp
cd myapp

# 初始化 package.json 文件
npm init -y

# 安装 express 到项目中
npm i express

参考文档:http://expressjs.com/en/starter/installing.html

Hello World

// 0. 加载 Express
const express = require("express");

// 1. 调用 express() 得到一个 app
//    类似于 http.createServer()
const app = express();

// 2. 设置请求对应的处理函数
//    当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get("/", (req, res) => {
  res.send("hello world");
});

// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log("app listening on port 3000!"));

参考文档:http://expressjs.com/en/starter/hello-world.html

基本路由

介绍

路由(Routing)是由一个 URI(或者叫路径标识)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何处理响应客户端请求。

每一个路由都可以有一个或者多个处理器函数,当匹配到路由时,这个/些函数将被执行。

路由的定义的结构如下:

app.METHOD(PATH, HANDLER);

其中:

  • app 是 express 实例
  • METHOD 是一个 HTTP 请求方法
  • PATH 是服务端路径(定位标识)
  • HANDLER 是当路由匹配到时需要执行的处理函数

demo

  • Respond with Hello World! on the homepage:
// 当你以 GET 方法请求 / 的时候,执行对应的处理函数
app.get("/", function(req, res) {
  res.send("Hello World!");
});
  • Respond to POST request on the root route (/), the application’s home page:
// 当你以 POST 方法请求 / 的时候,指定对应的处理函数
app.post("/", function(req, res) {
  res.send("Got a POST request");
});
  • Respond to a PUT request to the /user route:
app.put("/user", function(req, res) {
  res.send("Got a PUT request at /user");
});
  • Respond to a DELETE request to the /user route:
app.delete("/user", function(req, res) {
  res.send("Got a DELETE request at /user");
});

处理静态资源

// 开放 public 目录中的资源
// 不需要访问前缀
app.use(express.static("public"));

// 开放 files 目录资源,同上
app.use(express.static("files"));

// 开放 public 目录,限制访问前缀
app.use("/public", express.static("public"));

// 开放 public 目录资源,限制访问前缀
app.use("/static", express.static("public"));

// 开放 publi 目录,限制访问前缀
// path.join(__dirname, 'public') 会得到一个动态的绝对路径
app.use("/static", express.static(path.join(__dirname, "public")));

参考文档:http://expressjs.com/en/starter/static-files.html

路由

基础路由

var express = require("express");
var app = express();

// respond with "hello world" when a GET request is made to the homepage
app.get("/", function(req, res) {
  res.send("hello world");
});

路由方法

// GET method route
app.get("/", function(req, res) {
  res.send("GET request to the homepage");
});

// POST method route
app.post("/", function(req, res) {
  res.send("POST request to the homepage");
});

路由路径

  • This route path will match requests to the root route, /.
app.get("/", function(req, res) {
  res.send("root");
});
  • This route path will match requests to /about
app.get("/about", function(req, res) {
  res.send("about");
});
  • This route path will match requests to /random.text.
app.get("/random.text", function(req, res) {
  res.send("random.text");
});
  • This route path will match acd and abcd.
app.get("/ab?cd", function(req, res) {
  res.send("ab?cd");
});
  • This route path will match abcd, abbcd, abbbcd, and so on.
app.get("/ab+cd", function(req, res) {
  res.send("ab+cd");
});
  • This route path will match abcd, abxcd, abRANDOMcd, ab123cd, and so on.
app.get("/ab*cd", function(req, res) {
  res.send("ab*cd");
});
  • This route path will match /abe and /abcde.
app.get("/ab(cd)?e", function(req, res) {
  res.send("ab(cd)?e");
});
  • This route path will match anything with an “a” in the route name.
app.get(/a/, function(req, res) {
  res.send("/a/");
});
  • This route path will match butterfly and dragonfly, but not butterflyman, dragonflyman, and so on.
app.get(/.*fly$/, function(req, res) {
  res.send("/.*fly$/");
});

动态路由

Route path: /users/:userId/books/:bookId
Request URL: http://localhost:3000/users/34/books/8989
req.params: { "userId": "34", "bookId": "8989" }

你可能感兴趣的:(express,前端,javascript)