持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情
往期推荐
# 走进 node.js
# 走进 node.js - 起步
# 走进 node.js - 模块
# 走进node.js - NPM
# 走进node.js - package.json
# 走进node.js - 文件
# 走进node.js - 服务端开发
# 走进node.js - 服务端开发2
# 走进node.js - Web
走进node.js - Express 学习目标
- 使用 Express 处理静态资源
- Express 路由的基本使用
- 模板引擎概念
- 模板引擎的基本使用
- Express 中间件执行模型
- Express 重写留言本案例
- 基于文件的增删改查
原生的 http 模块在某些方面表现不足以应对我们的开发需求,所以我们就需要使用框架来加快我们的开发效率,框架的目的就是提高效率,让我们的代码更统一。在 Node 中,有很多 Web 开发框架,我们这里以学习
Express 为主。
Express
- Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架。
- 作者:tj
- tj 个人博客
- 知名的开源项目创建者和协作者
- Express、commander、ejs、co、Koa...
- 已经离开 Node 社区,转 Go 了
- 丰富的 API 支持,强大而灵活的中间件特性
- Express 不对 Node.js 已有的特性进行二次抽象,只是在它之上扩展了 Web 应用所需的基本功能
- 有很多流行框架基于 Express
- Express 官网
- Express 中文文档(非官方)
- Express GitHub 仓库
安装
# 创建并切换到 myapp 目录
mkdir myapp
cd myapp
# 初始化 package.json 文件
npm init -y
# 安装 express 到项目中
npm i express
-
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!"));
模板引擎
我们可以使用模板引擎处理服务端渲染,但是 Express 为了保持其极简灵活的特性并没有提供类似的功能。
同样的,Express 也是开放的,它支持开发人员根据自己的需求将模板引擎和 Express 结合实现服务端渲染的能力。
配置使用 art-template 模板引擎
这里我们以 art-template 模板引擎为例演示如何和 Express 结合使用。
安装:npm install art-template express-art-template
配置:app.engine("html", require("express-art-template"));
使用
app.get("/", function(req, res) {
// render 方法默认会去项目的 views 目录中查找 index.html 文件
// render 方法的本质就是将读取文件和模板引擎渲染这件事儿给封装起来了
res.render("index.html", {
title: "hello world"
});
});
如果希望修改默认的 views
视图渲染存储目录,可以: app.set("views", 目录路径);
常见模板引擎
JavaScript 模板引擎有很多,并且他们的功能都大抵相同,但是不同的模板引擎也各有自己的特色。
大部分 JavaScript 模板引擎都可以在 Node 中使用,下面是一些常见的模板引擎。
- ejs
- handlebars
- ade
- 后改名为 pug
- nunjucks
中间件函数可以执行以下任何任务:
- 执行任何代码
- 修改 request 或者 response 响应对象
- 结束请求响应周期
- 调用下一个中间件
分类
- 应用程序级别中间件
- 路由级别中间件
- 错误处理中间件
- 内置中间件
- 第三方中间件