前端需要去了解的nodejs知识(express应用搭建)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 这是一个使用typescript和express的应用框架,快速搭建服务端项目。主要模块可以拆分为入口、路由、数据、工具、服务、业务。

网络异常,图片无法展示
|


前言


这是一个使用typescript和express的应用框架,快速搭建服务端项目。主要模块可以拆分为入口、路由、数据、工具、服务、业务。

  • 应用整体入口:对整个应用的一个初始化化
  • 路由模块:路由的注册
  • 数据库模块:数据库连接,Model定义
  • 业务功能模块:对应业务模块的逻辑处理
  • 公共服务模块:提供一些公共服务,如邮件发送、excel处理等
  • 帮助模块:一些工具函数,日志处理,以及环境变量

模块


此框架用到的基础依赖如下:

  • typescript
  • eslint:代码格式校验
  • node/ts-node: 动态编译typescript代码
  • nodemon:监听文件变化重启服务
  • mongoose:数据库连接
  • pm2:生产环境部署,方便服务的重启,以及在线日志的查看

入口

入口文件主要是对整个应用的一个初始化化,包括以下内容:

  • 初始化数据库:引入数据模块,进行数据库连接。
  • 初始化应用成中间件:使用app.use()注册全局中间件
  • 初始化路由:引入路由模块,以及路由404捕获。
  • 全局异常捕获: 在文件的最后注册错误捕获中间件函数。
import express from 'express';
import config from './helper/config';
// 数据库初始化
import './database/mongo';
const app = express();
app.use(express.json());
//文档地址
app.use('/documents',express.static(__dirname+'/documents'))
// 404路由捕获
app.get('*', function (req, res) {
  console.log('Not Found');
  res.sendStatus(404);
});
// 全局错误处理
app.use((err, req, res, next) => {
  if (res.headersSent) {
    return next(err);
  }
  res.status(500);
  res.render('error', { error: err });
});
****

帮助文件

  • 全局的环境配置:数据库host、port,应用的host,一些其他和环境相关的配置
  • 日志处理,使用nodejs的插件log4js来处理日志,将日志按日期和类型保存在不同的文件中
  • 工具函数,定义一些全局的工具函数
  • 中间件,定义一些应用层面的中间件

路由

路由是整个express项目的骨架,从路由的定义中应该能够看出整个项目的业务结构。

  • 路由注册,根据业务需求定义路由路径
  • 路由嵌套根据业务拆分不同路由模块定义在不同的文件中,路由嵌套的设计在express是我们对大型项目解耦的最优方式。
//user.ts
const express = require('express');
const router = express.Router();
const app = express();
router.get('/list',(req,res,next)=>{
});
router.post('/info',(req,res,next)=>{
});
export default router
import express from 'express';
import userRouter from './user';
const router = express.Router();
router.use('/user',userRouter);
router.get('/demo',(req,res,next)=>{
});
export default router

数据库

  • 数据库连接,通过mongoose与数据库创建连接
import mongoose from "mongoose";
import config from '../helpper/config';
const env = process.env.NODE_ENV;
const url = `${config[env].mongo_host}:${config[env].mongo_port}`
mongoose.connect(url,***)
******
  • 数据模型定义,业务对应的数据模型定义

业务模块

拆分不同的业务模块文件,用来处理客户端的请求

import userModel from '../database/model/user';
const createUser = (req,res,next)=>{
        *******
}
export default {createUser,***}

开发及部署


本地开发

  • 安装应用的npm依赖后可通过运行npm run start
pnpm install
npm run start
  • 设置环境变量,使用插件nodemon和ts-node来启动服务(监听文件变化重启服务)
set NODE_ENV=dev&&nodemon --watch *.ts --exec \"ts-node\" index.ts

生产部署

  • 全局安装pm2
pnpm install pm2 -g
  • 编译typescript代码并设置环境变量
  • 使用pm2启动服务
set NODE_ENV=pro&& pm2 start ./dist/index.js

总结


为了方便日后的开发,根据自己几年express的使用经验对整个应用框架进行的整理。按照高内聚,低耦合的标准进行功能模块和目录的拆分。有兴趣的可以一起维护下,目前准备发到npm。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
17天前
|
缓存 前端开发 jenkins
Serverless 应用引擎产品使用合集之前端的项目部署在镜像里时,页面总是自动刷新,是什么导致的
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
8天前
|
人工智能 前端开发 搜索推荐
人工智能(AI)在前端设计中的创新应用
人工智能(AI)在前端设计中的创新应用
29 4
|
14天前
|
前端开发 持续交付 开发工具
详细介绍Git的基本原理、在前端开发中的应用以及如何使用Git来优化团队协作
【6月更文挑战第14天】Git是前端开发中的必备工具,它通过分布式版本控制管理代码历史,支持分支、合并和冲突解决,促进团队协作。在前端开发中,Git用于代码追踪、版本控制、代码审查和持续集成部署,优化团队协作。制定分支策略、编写清晰提交信息、定期合并清理分支以及使用Git钩子和自动化工具能进一步提升效率。理解并善用Git,能有效提升前端项目的质量和开发效率。
28 3
|
19天前
|
前端开发 算法 JavaScript
优化算法在前端性能提升中的应用
随着互联网应用的日益复杂,前端性能优化成为开发者关注的焦点。本文探讨了优化算法在前端性能提升中的重要作用,包括对JavaScript代码的优化、资源加载的算法选择以及页面渲染的优化策略。通过合理应用优化算法,可以有效提升前端应用的性能和用户体验。
|
19天前
|
存储 前端开发 API
大型前端应用如何做系统融合?
【6月更文挑战第8天】在数字化时代,大型前端应用需与多系统融合以增强功能和体验。融合的关键步骤包括:清晰规划和设计,深入理解各系统,统一数据模型,设计稳定接口,确保安全性与稳定性,以及团队协作。通过这些方法,实现系统间的无缝衔接,提升服务质量和应用价值。示例代码展示了前端应用与外部系统数据交互。在不断变化的技术环境中,持续创新融合策略至关重要。
27 3
|
19天前
|
前端开发 JavaScript 云计算
未来趋势下的前端开发:探索WebAssembly的应用
在移动端和云计算时代的背景下,前端开发正逐渐走向更高效、更强大的WebAssembly技术。本文将深入探讨WebAssembly在前端开发中的应用和未来发展趋势,带您领略前端技术的新风貌。
|
21天前
|
JavaScript 应用服务中间件 Apache
Node.js 创建第一个应用
Node.js 创建第一个应用
16 1
|
21天前
|
JavaScript 前端开发 中间件
Express框架搭建项目 node.js
【6月更文挑战第3天】这篇文章是关于使用Express框架构建Node.js Web应用的教程。Express是一个轻量级、功能丰富的框架,特点包括简洁灵活的核心、强大的中间件支持、灵活的路由系统和模板引擎兼容性。文章介绍了如何安装Express,并通过一个简单的示例展示了如何创建一个基本的Web服务器。最后,鼓励读者继续学习和实践,以充分利用Express和Node.js的能力。
27 1
|
21天前
|
SQL JavaScript 前端开发
简单用Nodejs + express 编写接口
【6月更文挑战第3天】该文介绍了如何在Node.js和Express中创建GET和POST接口。首先,简要提到了准备工作,建议查阅上一篇文章。接着展示了GET接口的示例,说明可以直接在浏览器中请求。然后,详细解释了POST接口的步骤,包括引入Express模块、设置路由处理程序、解析请求体及处理请求。最后,强调了编写接口时应注意错误处理、安全性、中间件使用、路由组织、日志记录、性能优化和测试等关键点。作者以肥晨的身份结尾,鼓励关注其分享的前端学习资料和技术动态。
21 1
|
21天前
|
JavaScript NoSQL 数据库连接
使用Nodejs + express连接数据库mongoose
【6月更文挑战第3天】这篇文章介绍了如何在Express应用中使用Mongoose连接MongoDB数据库。首先,需要创建一个`db.js`文件,然后通过`npm install mongoose`安装Mongoose驱动。接着,在应用中引入MongoDB模块,建立到数据库的连接。创建一个Mongoose schema定义数据模型,如用户信息表。最后,执行数据库操作,包括查询、插入、更新和删除文档,并在完成后关闭数据库连接。文中还提供了相关代码示例。
13 1