目录
A. 简介
Express 是一个基于 Node.js 平台的极简、灵活的 Web 应用开发框架,它提供了一系列强大的功能来构建 Web 应用程序和 API。
一、Express 的基本特点
- 简洁的路由系统:
- Express 的路由系统允许开发者轻松地定义不同的 HTTP 请求路径和对应的处理函数。
- 中间件支持:
- 中间件是在请求和响应处理过程中的函数,它们可以执行各种任务,如日志记录、请求解析、身份验证等。Express 允许轻松地添加和使用中间件。
改核心请求处理逻辑的情况下,添加各种通用的功能模块,提高了代码的可扩展性和可维护性。
二、Express 在 Web 应用开发中的作用
- 快速构建 Web 应用和 API:
- Express 提供了一套简洁而高效的工具集,使得开发者能够快速搭建 Web 应用程序的基础架构。通过定义路由和处理函数,可以快速响应不同的 HTTP 请求并返回相应的内容。例如,在构建一个简单的博客应用时,可以使用 Express 定义文章列表页面、文章详情页面、评论提交等不同的路由和处理逻辑。对于构建 API 来说,Express 也非常方便.
- 与前端框架集成:
- Express 可以很好地与前端框架(如 React、Vue.js 等)进行集成。它可以作为后端服务器,为前端应用提供数据接口和服务。例如,在一个使用 Vue.js 的单页应用(SPA)项目中,Express 可以作为后端 API 服务器,提供用户认证、数据存储和获取等服务。前端应用通过 AJAX 请求与 Express 服务器的 API 进行通信,获取所需的数据并更新页面。
三、Express 的优势与应用场景
-
优势:
- 灵活性:Express 具有高度的灵活性,开发者可以根据项目需求选择和组合不同的中间件和插件。例如,可以选择不同的模板引擎(如 Pug、EJS 等)来生成动态的 HTML 页面,也可以选择不同的数据库驱动和 ORM(Object-Relational Mapping)库来与数据库进行交互。这种灵活性使得 Express 适用于各种类型的 Web 应用开发,从简单的静态网站到复杂的企业级应用都能胜任。
- 轻量级:与一些大型的全栈框架相比,Express 是轻量级的,它只提供了核心的 Web 应用开发功能,不包含过多的额外功能和复杂性。这使得开发者能够更好地理解和控制框架的行为,同时也减少了项目的依赖和资源占用。对于一些资源受限的环境或需要快速开发的小型项目来说,Express 的轻量级特性是一个很大的优势。
- 社区支持和丰富的插件生态:Express 拥有庞大的社区和丰富的插件生态系统。开发者可以在社区中找到大量的教程、示例代码和解决方案,遇到问题时能够快速得到帮助。同时,各种功能的插件(如身份验证插件、日志插件等)使得开发者可以很容易地为应用程序添加额外的功能,而不需要从头开始编写代码。
-
应用场景:
- Web 应用开发:无论是构建企业内部的管理系统、电子商务网站还是社交网络平台等,Express 都可以作为后端服务器框架提供强大的支持。例如,在一个电商网站中,Express 可以处理用户注册和登录、商品展示和搜索、购物车管理、订单处理等各种业务逻辑,同时与数据库进行交互来存储和获取数据。
- API 开发:随着前后端分离的开发模式越来越流行,Express 在构建 RESTful API 和 GraphQL API 等方面得到了广泛的应用。许多移动应用和前端单页应用都依赖于后端提供的 API 来获取数据和实现业务功能。例如,一个移动天气应用可以通过调用 Express 构建的天气 API 来获取实时的天气数据,并在移动应用中展示给用户。
- 实时应用:对于需要实时数据更新和交互的应用,如在线聊天应用、实时协作工具等,Express 可以与 WebSocket 等技术结合使用,实现实时的双向通信。例如,在一个在线聊天应用中,Express 可以作为服务器端的基础框架,处理用户的连接请求,同时使用 WebSocket 来实现实时的消息推送和接收,使得用户能够实时看到其他用户发送的消息。
总之,Express 作为一个功能强大且灵活的 Node.js Web 应用开发框架,在 Web 应用开发、API 开发和实时应用等领域都有着广泛的应用和重要的作用。它的特点和优势使得开发者能够高效地构建各种类型的网络应用程序
B. 下载,安装
选择文件夹输入下面命令, 然后一路空格
npm init
就会在当前文件 创建一个 package.json
然后导入框架
npm install express
会生成一个node_moodules文件夹,里边放着我们引用的第三方的库
创建启动文件
要和配置文件里面的名字相同
const express = require('express')
const app = express()
app.get('/',(req,res)=>{
res.send('hello,world')
})
const PORT = 3000
app.listen(PORT,()=>{
console.log(`express start in ${PORT}`)
})
编写代码
启动
node app.js
C. 启动服务,查看文件结构
npm start
my-express-app/
├── app.js
├── package.json
├── package-lock.json
├── public/
│ ├── css/
│ │ └── styles.css
│ ├── images/
│ │ └── logo.png
│ └── js/
│ └── script.js
├── routes/
│ ├── index.js
│ └── users.js
└── views/
├── index.ejs
└── layout.ejs
一、顶层文件和目录
app.js
:- 这是应用程序的主要入口文件。在这里,你会初始化 Express 应用,配置中间件,定义路由,以及设置应用的监听端口等。例如:
const express = require('express');
const app = express();
const port = 3000;
// 配置中间件、路由等
app.listen(port, () => {
console.log(`Server running at port ${port}`);
});
package.json
和package-lock.json
:package.json
定义了项目的元数据,包括项目名称、版本、依赖项等。它还包含了一些脚本命令,用于项目的开发、测试和部署等操作。package-lock.json
是在安装依赖项时自动生成的文件,它准确记录了安装的每个依赖项的版本和依赖关系树,以确保在不同环境中安装的一致性。
二、public
目录
css
文件夹:
- 用于存放 CSS 样式文件。例如
styles.css
可以包含应用程序的全局样式定义,用于美化网页的外观。images
文件夹:
- 存储项目中使用的图片资源,如
logo.png
可能是应用程序的标志图片。js
文件夹:
- 放置 JavaScript 脚本文件。比如
script.js
可能包含一些客户端脚本,用于增强网页的交互性等功能。
三、routes
目录
index.js
:- 通常定义了应用程序的默认路由或首页路由。例如,处理根路径(
/
)的请求,可能会渲染首页视图等操作。
- 通常定义了应用程序的默认路由或首页路由。例如,处理根路径(
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.render('index'); // 假设使用了视图引擎,渲染 index 视图
});
module.exports = router;
users.js
:- 可以定义与用户相关的路由,比如用户注册、登录、用户信息管理等路由。例如:
const express = require('express');
const router = express.Router();
router.post('/register', (req, res) => {
// 处理用户注册的逻辑
});
router.post('/login', (req, res) => {
// 处理用户登录的逻辑
});
module.exports = router;
四、views
目录
index.ejs
:- 这是一个视图文件,可能是应用程序的首页视图模板。例如,如果使用 EJS 模板引擎,这个文件可以包含 HTML 结构以及 EJS 的语法,用于动态地插入数据到网页中。
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
<link rel="stylesheet" href="/css/styles.css">
</head>
<body>
<h1>Welcome to My App</h1>
<% if (user) { %>
<p>Hello, <%= user.name %>!</p>
<% } else { %>
<p>Please log in or register.</p>
<% } %>
</body>
</html>
layout.ejs
:- 布局视图文件,它可以定义整个应用程序页面的通用结构,其他视图可以继承这个布局。例如,它可能包含网页的头部、底部等通用部分,中间的内容部分可以在其他视图中动态填充。
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel="stylesheet" href="/css/styles.css">
</head>
<body>
<header>
<nav>
<a href="/">Home</a>
<a href="/users">Users</a>
</nav>
</header>
<main>
<%= body %>
</main>
<footer>
© 2024 My App
</footer>
</body>
</html>
当然,实际的 Express 项目文件结构可以根据项目的具体需求和规模进行调整和扩展。但这个基本的结构提供了一个良好的起点,有助于组织和管理 Express 应用程序的代码和资源。