【利用AI让知识体系化】入门Express框架(二)

简介: 【利用AI让知识体系化】入门Express框架

【利用AI让知识体系化】入门Express框架(一)https://developer.aliyun.com/article/1426061


2. 路由模块化

当我们的应用程序变得比较大时,所有的路由定义可能会变得混乱和不易维护。因此,我们可以使用路由模块化来改善这种情况。

首先,在routes目录下创建一个专门用于存放路由的文件,例如users.js。接着,我们在users.js文件中定义路由,如下所示:

const express = require('express');
const router = express.Router();
router.get('/', function(req, res) {
    res.send('Get all users');
});
router.post('/', function(req, res) {
    res.send('Create a user');
});
module.exports = router;

在上面的例子中,我们定义了两个路由,一个是GET方法的路由"/“,另一个是POST方法的路由”/",最后使用module.exports导出路由模块。

接着,在应用程序中,我们可以使用app.use()来向Express应用程序注册该路由模块,如下所示:

const usersRouter = require('./routes/users');
app.use('/users', usersRouter);

在上面的例子中,我们首先使用require()函数导入路由模块,然后在应用程序中使用app.use()方法来注册路由模块。注意,在注册路由模块时,第一个参数"/users"代表的是路由模块的根路径。

这样,我们就成功地将路由定义模块化,并将其注册到应用程序中。

3. 异步路由

在Express应用程序中,我们还可以使用异步函数来实现异步路由。例如,下面的示例演示如何使用async/await来实现异步路由:

app.get('/async', async function(req, res) {
    const result = await someAsyncFunction();
    res.send('Async result: ' + result);
});

在上面的例子中,我们使用async来修饰路由处理函数,然后使用await关键字调用异步函数。当异步函数执行完毕后,我们将其返回值与字符串拼接后发送给客户端。

总的来说,路由在Express应用程序中是非常灵活和强大的,可以帮助我们定义应用程序的功能,提高代码的可读性和可维护性。

控制器的使用

在 Express 框架中,控制器通常指的是处理特定请求的函数,它们通常被称为路由处理程序 (route handlers)。控制器是为了提高应用程序的可维护性和可读性,将具体的业务逻辑和路由操作分离开来,从而使得每个路由处理程序只需要关注其自身的业务逻辑,而不用承担额外的业务职责。通常,使用控制器可以使得代码更具有可重用性,以及更容易进行调试和测试。

下面是在 Express 中创建一个控制器的一般步骤:

1. 创建路由。在你的 Express 应用程序中创建一个路由,用于处理 HTTP 请求。

const express = require('express');
const router = express.Router();

2. 编写控制器函数。编写具体的业务逻辑,并将其封装在一个函数中。

const myController = (req, res) => {
  // 处理业务逻辑
  res.send('Hello World!');
}

3. 将控制器函数绑定到路由。将你编写的控制器函数挂载到刚刚创建的路由中。

router.get('/myRoute', myController);

4. 在应用程序中使用该路由。将你创建的路由挂载到你的 Express 应用程序中。

const app = express();
app.use('/api', router);

这样,当你的应用程序接收到 GET /api/myRoute 的请求时,会自动调用 myController 函数来处理这个请求,并返回 'Hello World!' 给客户端。

请注意,这只是一个简单的示例。在实际使用中,你可能需要更多的控制器函数,并在应用程序中使用多个路由。此外,你可以在控制器函数中使用模型和数据库等数据操作,以执行更复杂的操作。

第四章:模板引擎

EJS模板引擎

EJS 是一种基于 JavaScript 的模板引擎,它允许你使用 JavaScript 代码在 HTML 中嵌入动态内容。

下面是在 Express 中使用 EJS 模板引擎的一般步骤:

1. 安装 EJS。从 npm 上安装 EJS 模板引擎。

npm install ejs

2. 配置 Express 应用程序。在你的 Express 应用程序中设置 EJS 作为视图引擎。

const express = require('express');
const app = express();
// 设置 EJS 视图引擎
app.set('view engine', 'ejs');

3. 创建一个 EJS 视图。在你的应用程序中创建一个 EJS 视图,用 EJS 语法编写你的 HTML 模板。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title><%= pageTitle %> - My App</title>
</head>
<body>
  <h1>Welcome to <%= appName %>!</h1>
</body>
</html>

4. 在路由控制器中使用 EJS 模板。在路由控制器中调用 res.render() 函数来使用 EJS 视图,并将需要动态替换的数据传递给视图。

app.get('/', (req, res) => {
  res.render('index', { pageTitle: 'Home', appName: 'My App' });
});

在这个例子中,EJS 变量 <%= pageTitle %><%= appName %> 将会被动态替换为 'Home''My App'。最终客户端将会看到一条欢迎语句和一个页面标题。

这只是一个简单的例子。使用 EJS 模板引擎,你可以轻松地创建更复杂的视图和交互元素,例如表格、表单、按钮等等。

Pug模板引擎

Pug(以前称为Jade)是一种基于缩进的模板引擎,它使用一种简洁的、类似于 Python 的语法来描述 HTML 的结构和内容。

下面是在 Express 中使用 Pug 模板引擎的一般步骤:

1. 安装 Pug。从 npm 上安装 Pug 模板引擎。

npm install pug

2. 配置 Express 应用程序。在你的 Express 应用程序中设置 Pug 作为视图引擎。

const express = require('express');
const app = express();
// 设置 Pug 视图引擎
app.set('view engine', 'pug');

3. 创建一个 Pug 视图。在你的应用程序中创建一个 Pug 视图,用 Pug 语法编写你的 HTML 模板。

<!DOCTYPE html>
html
  head
    meta(charset='UTF-8')
    title=pageTitle + ' - My App'
  body
    h1 Welcome to #{appName}!

4. 在路由控制器中使用 Pug 模板。在路由控制器中调用 res.render() 函数来使用 Pug 视图,并将需要动态替换的数据传递给视图。

app.get('/', (req, res) => {
  res.render('index', { pageTitle: 'Home', appName: 'My App' });
});

在这个例子中,Pug 变量 #{appName} 将会被动态替换为 'My App'。最终客户端将会看到一条欢迎语句和一个页面标题。

使用 Pug 模板引擎,你可以轻松地创建更复杂的视图和交互元素,例如表格、表单、按钮等等。

Mustache模板引擎

Mustache 是一种简单、轻量的模板引擎,可以应用于多种编程语言中。

它提供了一个非常简单的模板语言,用于将数据渲染HTML、XML 或纯文本

在 Express 中使用 Mustache 模板引擎的一般步骤为:

1. 安装 Mustache。从 npm 上安装 Mustache 模板引擎。

npm install mustache

2. 配置 Express 应用程序。在你的 Express 应用程序中设置 Mustache 作为视图引擎。

const express = require('express');
const app = express();
// 设置 Mustache 视图引擎
app.engine('mustache', require('mustache-express')());
app.set('view engine', 'mustache');
app.set('views', __dirname + '/views');

3. 创建一个 Mustache 视图。在你的应用程序中创建一个 Mustache 视图,用 Mustache 语法编写你的 HTML 模板。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>{{pageTitle}} - My App</title>
</head>
<body>
  <h1>Welcome to {{appName}}!</h1>
</body>
</html>

4. 在路由控制器中使用 Mustache 模板。在路由控制器中调用 res.render() 函数来使用 Mustache 视图,并将需要动态替换的数据传递给视图。

app.get('/', (req, res) => {
  res.render('index', { pageTitle: 'Home', appName: 'My App' });
});

在这个例子中,Mustache 变量 {{appName}} 将会被动态替换为 'My App'。最终客户端将会看到一条欢迎语句和一个页面标题。

使用 Mustache 模板引擎,你可以轻松地创建更复杂的视图和交互元素,例如表格、表单、按钮等等。

第五章:文件上传和下载

文件上传的原理和实现

文件上传通常涉及到两个部分:客户端和服务端

在Web应用中,我们通常使用HTTP协议进行文件传输

客户端:用户在页面上选择要上传的文件后,浏览器会将该文件通过HTTP协议传输到服务端。通常情况下,我们会使用HTML表单来生成上传控件,然后通过JavaScript监听表单提交事件,在提交前获取文件数据并使用FormData对象创建一个上传请求,再通过XMLHttpRequestfetch API将请求发送到服务端。

服务端:服务器接收到文件上传的请求后,通常会使用服务器端编程语言(如Node.js中的express框架)来处理请求,并将文件保存到服务器的指定目录中。在express框架中,可以使用multer中间件来处理文件上传的请求。multer支持多种上传方式,如多文件上传、限制文件大小等,并且提供了一些有用的API,如req.file和req.files,用于获取上传的文件数据

下面是一个使用express和multer实现文件上传的示例代码:

// 引入multer库
const multer = require('multer');
// 创建multer实例,指定上传目录和上传方式
const upload = multer({ dest: 'uploads/' });
// 处理POST请求
app.post('/upload', upload.single('file'), (req, res) => {
  // req.file是上传的文件对象
  console.log(req.file);
  res.status(200).send('上传成功');
});

在上面的代码中,我们首先引入了multer库,然后使用multer.create()方法创建一个multer实例,传入一个对象作为参数,其中dest属性指定了上传文件的保存目录。

然后,在处理POST请求的回调函数中,使用upload.single()方法指定了文件的上传方式,这里使用的是单文件上传。最后,我们通过req.file获取上传的文件对象,将其保存到指定的目录中,并返回上传成功的消息。


【利用AI让知识体系化】入门Express框架(三)https://developer.aliyun.com/article/1426063

相关文章
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
DiffSensei:AI 漫画生成框架,能生成内容可控的黑白漫画面板,支持多角色和布局控制
DiffSensei 是一个由北京大学、上海AI实验室及南洋理工大学共同推出的AI漫画生成框架,能够生成可控的黑白漫画面板。该框架整合了基于扩散的图像生成器和多模态大型语言模型(MLLM),支持多角色控制和精确布局控制,适用于漫画创作、个性化内容生成等多个领域。
53 17
DiffSensei:AI 漫画生成框架,能生成内容可控的黑白漫画面板,支持多角色和布局控制
|
1天前
|
机器学习/深度学习 人工智能
Leffa:Meta AI 开源精确控制人物外观和姿势的图像生成框架,在生成穿着的同时保持人物特征
Leffa 是 Meta 开源的图像生成框架,通过引入流场学习在注意力机制中精确控制人物的外观和姿势。该框架不增加额外参数和推理成本,适用于多种扩散模型,展现了良好的模型无关性和泛化能力。
26 11
Leffa:Meta AI 开源精确控制人物外观和姿势的图像生成框架,在生成穿着的同时保持人物特征
|
6天前
|
人工智能 API 语音技术
TEN Agent:开源的实时多模态 AI 代理框架,支持语音、文本和图像的实时通信交互
TEN Agent 是一个开源的实时多模态 AI 代理框架,集成了 OpenAI Realtime API 和 RTC 技术,支持语音、文本和图像的多模态交互,具备实时通信、模块化设计和多语言支持等功能,适用于智能客服、实时语音助手等多种场景。
76 15
TEN Agent:开源的实时多模态 AI 代理框架,支持语音、文本和图像的实时通信交互
|
7天前
|
人工智能 安全 PyTorch
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
SPDL是Meta AI推出的开源高性能AI模型数据加载解决方案,基于多线程技术和异步事件循环,提供高吞吐量、低资源占用的数据加载功能,支持分布式系统和主流AI框架PyTorch。
36 10
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
|
1天前
|
机器学习/深度学习 人工智能 算法
AI框架的赢者法则:生态繁荣的昇思MindSpore,成为大模型时代的新选择
2024年被视为大模型应用的元年。昇思MindSpore AI框架凭借其强大的开源社区和技术创新,在全球范围内迅速崛起。截至2024年11月,该框架的下载量已超过1100万次,覆盖130多个国家和地区的2400多个城市,拥有3.7万名贡献者。昇思MindSpore不仅在人才培养和社区治理方面表现出色,还在大模型的开发、训练和应用中发挥了关键作用,支持了50多个主流大模型,覆盖15个行业。随着其市场份额预计达到30%,昇思MindSpore正逐步成为行业共识,推动大模型在各领域的广泛应用。
24 12
|
2月前
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
2月前
|
开发框架 JavaScript 前端开发
使用 Node.js 和 Express 构建 Web 应用
【10月更文挑战第2天】使用 Node.js 和 Express 构建 Web 应用
|
24天前
|
缓存 负载均衡 JavaScript
构建高效后端服务:Node.js与Express框架实践
在数字化时代的浪潮中,后端服务的重要性不言而喻。本文将通过深入浅出的方式介绍如何利用Node.js及其强大的Express框架来搭建一个高效的后端服务。我们将从零开始,逐步深入,不仅涉及基础的代码编写,更会探讨如何优化性能和处理高并发场景。无论你是后端新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
26天前
|
JavaScript
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
47 1
|
1月前
|
JavaScript 中间件 关系型数据库
构建高效的后端服务:Node.js 与 Express 的实践指南
在后端开发领域,Node.js 与 Express 的组合因其轻量级和高效性而广受欢迎。本文将深入探讨如何利用这一组合构建高性能的后端服务。我们将从 Node.js 的事件驱动和非阻塞 I/O 模型出发,解释其如何优化网络请求处理。接着,通过 Express 框架的简洁 API,展示如何快速搭建 RESTful API。文章还将涉及中间件的使用,以及如何结合 MySQL 数据库进行数据操作。最后,我们将讨论性能优化技巧,包括异步编程模式和缓存策略,以确保服务的稳定性和扩展性。

热门文章

最新文章