基于node.js开发的文章生成器(六、网页版本的文章生成器--工整优化篇)

简介: # 引言前面我们已经学完了基于express框架下服务器的启动,get请求的接收与处理还有post请求的接收与处理。同时我们使用接口测试工具完成了接口的测试,响应值和接受值返回值都是正常的。那么为什么还有这一章节呢?# 问题的提出原来我们之前对于get请求和Post请求的接受与处理,虽然可以实现其功能,但是整体代码都是写在一个js文件中的,这就导致我们js文件很臃肿,很难看,维护和开发成本都会大大的提高。那么我们有没有一种方法,让我们的代码工整性和复用性都大大提高呢?# 解决的思路我的解决方案是:抽成模块,进行模块化开发。# 实例还是拿我们之前的cs.js作为讲解。

引言

前面我们已经学完了基于express框架下服务器的启动,get请求的接收与处理还有post请求的接收与处理。同时我们使用接口测试工具完成了接口的测试,响应值和接受值返回值都是正常的。那么为什么还有这一章节呢?

问题的提出

原来我们之前对于get请求和Post请求的接受与处理,虽然可以实现其功能,但是整体代码都是写在一个js文件中的,这就导致我们js文件很臃肿,很难看,维护和开发成本都会大大的提高。

那么我们有没有一种方法,让我们的代码工整性和复用性都大大提高呢?

解决的思路

我的解决方案是:抽成模块,进行模块化开发。

实例

还是拿我们之前的cs.js作为讲解。

原本的cs.js中的代码

import express from 'express';

const app = express();
app.use(express.urlencoded({extended:false}));
app.get('/getmethod',(req,resp)=>{
    console.log('get')
    resp.send("这是一个get请求");
})

app.post('/postmethod',(req,resp)=>{
    console.log('post')
    resp.send("这是一个post请求");
})

app.post('/postcs',(req,resp)=>{
    const result = req.body;
    console.log(result);
    resp.send('成功了');
})

app.listen(6666,()=>{
    console.log('serve is running at http://localhost:6666');
})

当然上面我们的代码还是不够多,当一个复杂的业务出现时,如果把所有的请求都挂在一个js文件中,就会导致文件变得非常臃肿。而且代码的复用性很差。

这里我们采取模块化的开发方法。

在目录下创建 router文件夹和router_handle这两个文件夹。

接下来我们利用到下面几个知识点完成模块的抽出

Router

express中的Router作用就是为了方便我们更好的根据路由去分模块。避免将所有路由都写在入口文件中。

使用之前我们通过const router = express.Router();完成创建router

router文件夹

我们在router文件夹下创建ceshi.js文件,然后首先导入'express'模块

import express from 'express';
const router = express.Router();

...//暂时省略的部分

export default router;

完成上述代码后,我们就已经成功将router下的ceshi.js抽成了一个module并导出了。

router_handle文件夹

该目录下同样创建一个ceshi.js,这里用来写代码层面上的真正的功能上的实现。

function postMethod(req,resp){
    const result = req.body;
    console.log(result.ceshi);
    resp.send('post method success');
}
export {postMethod};

最后的整合及测试

router和router_handle的整合

接下来我们来整合router文件夹和router_handle文件夹,上面说过,中间router文件夹中省略了一部分代码,省略的这部分代码就是import router_handle中的实现的代码 并use上。

import express from 'express';
const router = express.Router();

import {postMethod} from '../router_handle/ceshi.js';

router.post('/postMethodCeshi',postMethod);

export default router;

上述就是router目录下的ceshi.js全部代码,先是常规的 ES Moudle标准的导入所需的模块,然后创建router,然后导入写好的实现文件---即:router_handle目录下的ceshi.js文件。

接下来将引入的router_handle挂载到router.post()下,最后作为modle导出。

整合到cs.js中使用

上面说到,这次我们的主入口是cs.js文件,接下来我们要在cs.js中使用这个模块。

import express from 'express';

import router from './router/ceshi.js'
const app = express();
app.use(express.urlencoded({extended:false}));

app.use(router);

app.listen(6666,()=>{
    console.log('serve is running at http://localhost:6666');
})

接下来我们打开接口测试工具,按照之前测试接口,发现没有问题。优化完成。

相关文章
|
9天前
|
Web App开发 缓存 JavaScript
深入浅出Node.js后端开发
【9月更文挑战第26天】本文将引导你了解Node.js的基本原理,并通过实际案例展示如何在后端开发中应用它。我们将从Node.js的核心概念讲起,逐步深入到构建一个完整的后端服务,最后探讨如何优化你的Node.js应用。准备好让你的开发技能更上一层楼了吗?让我们一起潜入Node.js的世界!
|
11天前
vite.config.js中vite.defineConfig is not defined以及创建最新版本的vite项目
本文讨论了在配置Vite项目时遇到的`vite.defineConfig is not defined`错误,这通常是由于缺少必要的导入语句导致的。文章还涉及了如何创建最新版本的Vite项目以及如何处理`configEnv is not defined`的问题。
25 3
vite.config.js中vite.defineConfig is not defined以及创建最新版本的vite项目
|
11天前
|
移动开发 前端开发 JavaScript
JS配合canvas实现贪吃蛇小游戏_升级_丝滑版本_支持PC端和移动端
本文介绍了一个使用JavaScript和HTML5 Canvas API实现的贪吃蛇游戏的升级版本,该版本支持PC端和移动端,提供了丝滑的转向效果,并允许玩家通过键盘或触摸屏控制蛇的移动。代码中包含了详细的注释,解释了游戏逻辑、食物生成、得分机制以及如何响应不同的输入设备。
27 1
JS配合canvas实现贪吃蛇小游戏_升级_丝滑版本_支持PC端和移动端
|
12天前
|
JavaScript 前端开发 API
深入浅出Node.js后端开发
【9月更文挑战第23天】在这篇文章中,我们将探索Node.js的世界,了解它如何改变后端开发的面貌。通过实际案例和代码示例,我们不仅学习Node.js的核心概念,还会深入探讨它的高级特性,如异步编程、事件驱动模型以及微服务架构的应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和实用技能,帮助你构建更高效、可扩展的后端系统。
44 19
|
9天前
|
JavaScript 开发者
深入理解Node.js事件循环及其在后端开发中的应用
【8月更文挑战第57天】本文将带你走进Node.js的事件循环机制,通过浅显易懂的语言和实例代码,揭示其背后的工作原理。我们将一起探索如何高效利用事件循环进行异步编程,提升后端应用的性能和响应速度。无论你是Node.js新手还是有一定经验的开发者,这篇文章都能给你带来新的启发和思考。
|
7天前
|
Web App开发 JavaScript 前端开发
探索现代JavaScript开发:ECMAScript提案的未来
JavaScript是最受欢迎的编程语言之一,其发展迅速。ECMAScript(JS的标准化版本)的提案和更新为其带来了诸多新特性和改进。本文将介绍值得关注的ECMAScript提案,如可选链、空值合并运算符、逻辑赋值运算符、类字段和顶级Await,并展示如何利用这些新特性提升开发效率和代码质量。通过关注TC39提案流程、使用Babel和TypeScript等工具,开发者可以提前体验并利用这些新特性。随着JavaScript的不断进步,未来将有更多令人期待的功能加入。
|
9天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【9月更文挑战第25天】本文将带你了解Node.js的基本概念和核心优势,同时提供一些实际的代码示例来加深理解。无论你是初学者还是有一定经验的开发者,都能通过本文获得有价值的信息和技巧。让我们一起探索Node.js的世界吧!
|
20天前
|
JavaScript Linux 开发者
一个用于管理多个 Node.js 版本的安装和切换开源工具
【9月更文挑战第14天】nvm(Node Version Manager)是一个开源工具,用于便捷地管理多个 Node.js 版本。其特点包括:版本安装便捷,支持 LTS 和最新版本;版本切换简单,不影响开发流程;多平台支持,包括 Windows、macOS 和 Linux;社区活跃,持续更新。通过 nvm,开发者可以轻松安装、切换和管理不同项目的 Node.js 版本,提高开发效率。
|
9天前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
8天前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)
下一篇
无影云桌面