共计 3520 个字符,预计需要花费 9 分钟才能阅读完成。
一、基本概念
Express 是一个简洁而灵活的 node.js Web 应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站,它有一套健壮的特性,可用于开发单页、多页和混合 Web 应用。
二、快速开始
1. 首先假设你已经安装了 Node.js(若未安装,请先安装 Node.js), 接下来创建一个工作目录。
$ mkdir express-start
$ cd express-start
2. 通过 npm init 命令为你的应用创建一个 package.json 文件(若不了解 package.json, 请自行百度)。
$ npm init
注意: 此命令会要求你输入几个参数,例如此应用的名称和版本。你可以直接按“回车”键接受大部分默认设置即可,下面这个除外:输入 app.js
或者你所希望的名称,这是当前应用的入口文件。如果你希望采用默认的 index.js
文件名,只需按“回车”键即可。
entry point: (index.js)
3. 在 express-start 目录下安装 Express 并将其保存到依赖列表中。
npm install express --save
4. 项目的跟目录下创建 app.js(第二步中注意的地方,入口文件设置的什么名字,这个文件就叫什么名字),下面是 app.js 文件内容:
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(3000, () => console.log('Example app listening on port 3000!'))
5. 启动项目,然后访问 http://localhost:3000/
node app.js
三、Express 应用程序生成器
通过应用生成器工具 express-generator 可以快速创建一个应用的骨架,express-generator 包含了 express 命令行工具。
1. 安装 express-generator:
npm install express-generator -g
-h 参数可以列出所有可用的命令行参数:
$ express -h
Usage: express [options] [dir]
Options:
-h, --help 输出使用方法
--version 输出版本号
-e, --ejs 添加对 ejs 模板引擎的支持
--hbs 添加对 handlebars 模板引擎的支持
--pug 添加对 pug 模板引擎的支持
-H, --hogan 添加对 hogan.js 模板引擎的支持
--no-view 创建不带视图引擎的项目
-v, --view <engine> 添加对视图引擎(view)<engine> 的支持 (ejs|hbs|hjs|jade|pug|twig|vash)(默认是 jade 模板引擎)-c, --css <engine> 添加样式表引擎 <engine> 的支持 (less|stylus|compass|sass)(默认是普通的 css 文件)--git 添加 .gitignore
-f, --force 强制在非空目录下创建
2. 新建一个工程,运行如下命令:
express project-name // 简单的创建工程
express --css=less --view=pug project-name // 带参数创建工程
运行结果如下:
3. 根据指示继续操作
cd express-start // 进去到项目路径
npm install // 安装依赖包
npm start // 启动项目
访问 http://localhost:3000/,将会看到如下界面。
四、工程结构讲解
我们回头看看生成的工程目录里面都有什么,打开我们的 express-start 文件夹,里面如图所示
bin:存放可执行文件
node_modules:存放 package.json 中安装的模块,当你在 package.json 添加依赖的模块并安装后,存放在这个文件夹下。
public:存放 image、css、js 等文件
routes:存放路由文件
views:存放视图文件或者说模版文件
app.js:启动文件,或者说入口文件
package.json:存储着工程的信息及模块依赖,当在 dependencies 中添加依赖的模块时,运行 npm install,npm 会检查当前目录下的 package.json,并自动安装所有指定的模块
打开 app.js, 让我们看看里面究竟有什么:
var createError = require('http-errors');
var express = require('express'); // 加载 express 模块
var path = require('path'); // 路径模块
var cookieParser = require('cookie-parser'); // 这就是一个解析 Cookie 的工具。通过 req.cookies 可以取到传过来的 cookie,并把它们转成对象。var logger = require('morgan'); // 在控制台中,显示 req 请求的信息
// 路由信息(接口地址),存放在 routes 的根目录
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/person');
var app = express();
// view engine setup 模板开始
app.set('views', path.join(__dirname, 'views')); // 设置视图根目录
app.set('view engine', 'jade'); // 设置视图格式
// 载入中间件
app.use(logger('dev')); // 日志中间件
app.use(express.json()); // 解析 json 的中间件。app.use(express.urlencoded({ extended: false})); // 解析 urlencoded 请求体的中间件
app.use(cookieParser()); // 解析 cookie 的中间件
// 设置 public 文件夹为存放静态文件的目录
app.use(express.static(path.join(__dirname, 'public')));
// 配置路由,('自定义路径',上面设置的接口地址)app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler 错误处理
app.use(function(req, res, next) {next(createError(404));
});
// error handler
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 || 500);
res.render('error');
});
module.exports = app;
五、Express 使用 html 模板
1. 安装 ejs
npm install ejs --save
2. 引入 ejs
var ejs = require('ejs');
3. 使用
app.set('views', path.join(__dirname, 'views'));
app.engine('html', ejs.__express);
app.set('view engine', 'html');
替换
app.set('views', path.join(__dirname, 'views')); // 设置视图根目录
app.set('view engine', 'jade'); // 设置视图格式
4. 原.jade 文件改为.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Express</title>
<link rel="stylesheet" type="text/css" href="css/home.css">
</head>
<body>
<h1>Welcome to <%= title%></h1>
</body>
</html>