Express 框架
按照 14nodejs(7天)
教程推进到第4天,开始利用框架逐步简化之前原生的 Node 开发
Express4.16.3 ,官方介绍为 ”基于 Node.js 平台,快速、开放、极简的 Web 开发框架“
安装与使用
前提是您得电脑中已经安装有 Node.js ,按照官方的快速入门步骤如下:
$ mkdir myapp
$ cd myapp
$ npm init // npm init -y 快速初始化
创建目录并进入,初始化项目 npm init
或 npm init -y (快速初始化)
之后安装 express 即可
$ npm install express --save
关于使用,目前教程涉及的 API 主要用以取代 Node 核心组件 http,使用方法如下:
-
引入组件并初始化
var express = require('express') var app = express()
通过
.get
响应 GET 请求(目前无法完成响应 POST 请求,将在下篇文章说明)app.get('/', (req, res) => res.send('Hello World!'))
-
绑定端口号
app.listen(3000, () => console.log('Example app listening on port 3000!'))
-
.redirect('重定向路径')
通过redirect
可以轻而易举的实现页面的重定向,与之前原生方法对比// 原生 Node res.statusCode = 302 // 声明 302 状态码 res.setHeader('Location', '/') // 添加请求头 // Express res.redirect('/') // Express 会自动添加重定向 302 状态码以及请求头
-
.use(express.static('public'))
提供对静态资源文件的服务,使用 Express 内置的中间函数express.static,在 path 上安装中间件,如果 path 没有被设定,那么默认为/
app.use(express.static('public')); // 如果前台想请求后台public目录下images/08.jpg静态的图片资源 // 通过:http://localhost:3000/images/08.jpg
通过多次使用 express.static中间件来添加多个静态资源目录
app.use(express.static('public')); app.use(express.static('file'));
为了给静态资源文件创建一个虚拟的文件前缀(文件系统中不存在),可以使用 express.static 函数指定一个虚拟的静态目录
app.use('/static', express.static('public'))
app.use 和 app.get 的区别
路由规则是 app.use(path,router)
定义的, router
代表一个由 express.Router()
创建的对象,在路由对象中可定义多个路由规则
可是如果我们的路由只有一条规则时,可直接接一个回调作为简写,也可直接使用 app.get
或 app.post
方法
在 app.use(path, callback)
中 callback 既可以是 router 对象又可以是函数
而 app.get(path, callback)
中的 callback 只能是函数
与 get
、post
不同,app.use
的网址不是精确匹配的
比如:http://localhost:3000/admin/user
var express = require("express");
var app = express();
app.use('/admin', (req, res) => {
console.log(req.originalUrl);
console.log(req.baseUrl);
console.log(req.path);
});
app.listen(3000);
结果为
admin/user
admin
user
Express-art-template
Express-art-template
是专门用来使 Express 中支持 template 模板引擎的第三方组件
安装与使用
npm i art-template
Express-art-template
无需通过 require
引入,而是通过配置自动引用,配制如下
app.engine('art', require('express-art-template'))
此段代码中 art
为预期读取的文件后缀,在这里我们的模板文件为 .html
,故此需要将其改为 'html'
Express
为路由响应 Response
对象提供了 render
方法,用于更便捷的渲染目录
res.render('html模版名', {模板数据对象})
首位参数为静态模板的文件名,默认认定该静态模板位于根目录中 views
中
如需修改默认静态模板目录,可运行下方代码
app.set('views', 静态模板文件路径)
Nodemon
截止到此,之前的任何操作都需要打断 cmd 重新执行 Node.js 才可以看到修改后的效果
这里可以通过第三方组件 nodemon
实现修改文件自动刷新
安装方法:
npm install --global nodemon // 全局安装 nodemon
使用方式:
// 将之前运行代码的 node demo.js 更改为
nodemon demo.js
即可实现自动刷新
文章已同步我的个人博客:《Node学习笔记 express、express-template、nodemon》
资料参考:
- [Node.js v12.13.1 文档]
- [Express 框架]
本篇文章由一文多发平台ArtiPub自动发布