恭喜你,Node后端学习经验值+1

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 遇到很多都是模块化的写法,之前自己写的时候确实这方面不是很注重,因为自己写自己看,当然怎么舒服怎么来了,它提醒我要**优雅一点~**,但是确实,这么写之后香的一批~

前言

这次整理了一些写node中遇到的知识点呀,查缺补漏,才能让自己成长的更稳哦!

最近有在参加蓝桥杯web方向的模拟赛哦,来抓一波也在参加的小伙伴~

感想

遇到很多都是模块化的写法,之前自己写的时候确实这方面不是很注重,因为自己写自己看,当然怎么舒服怎么来了,它提醒我要优雅一点~,但是确实,这么写之后香的一批~

一些工具知识

Koa初始化

1.1 全局安装脚手架工具
cnpm install -g koa-generator 
# or 
yarn global add koa-generator 
1.2 进入到项目文件夹目录,执行生成命令
# koa2+项目名
koa2 manager-server
1.3 安装依赖
npm install 
# or
cnpm install
# or
yarn

使用pm2部署Koa项目并实现启动、关闭、自动重启

1. 全局安装

npm install -g pm2

2. 启动项目

进入项目目录,然后使用pm2启动项目。这里要特别注意:启动 单文件时用(app.js是项目文件名)
pm2 start app.js       #启动单文件
但是在koa2中需要这样启动:
pm2 start ./bin/www #启动koa2项目

3. pm2自动重启

把pm2的服务先停下,然后起来的时候带上–watch就可以了
pm2 start ./bin/www --watch

4. pm2相关命令(www是项目名)

pm2 list           #查看所用已启动项目
pm2 start          #启动
pm2 restart www    #重启
pm2 stop www       #停止
pm2 delete www     #删除

以下为封装的两个工具函数

利用log4js封装日志输出

首先在utils文件夹中建好你的log4j.js文件,引入log4js

    const log4js = require('log4js')

下面是定义的level等级,截止到目前只用到了三种,但是教程里定义的确实是很多,可能是我没用到。

const levels = {
    'trace':log4js.levels.TRACE,
    'debug':log4js.levels.DEBUG,
    'info':log4js.levels.INFO,
    'warn':log4js.levels.WARN,
    'error':log4js.levels.ERROR,
    'fatal':log4js.levels.FATAL,
}

接下来就是要用log4js.configure去添加一些配置。

appenders: 追加器
    appenders:{
        console:{ type: 'console' },
        info:{
            type:'file',
            filename:'logs/all-logs.log'
        },
        error:{
            type: 'dateFile',
            filename:'logs/log',
            pattern:'yyyy-MM-dd.log',
            alwaysIncludePattern:true // 设置文件名称是filename+pattern
        }
    },

可以看到我们在追加器上,让info和error的日志输出都存到文件里,方便我们查阅和记录,其中error的日志我们用当天的年月日来作为记录,info的日志我们用一个文件来存储就好

categories: 输出种类
    categories:{
        default: { appenders: ['console'], level: 'debug' },
        info:{
            appenders: ['info','console'],
            level: 'info'
        },
        error:{
            appenders: ['error','console'],
            level: 'error'
        }
    }

default默认,这个单词都很熟悉了,默认输出level就是debug,我们自己用来打印东西用的一个输出等级

我们要注意一下,此时appenders里的我们只能添加上面appenders里定义好的东西。

下面是三个函数,分别为debug、error、info,将他们导出出去方便使用:

exports.debug = (content) =>{
    let logger = log4js.getLogger()
    logger.level = levels.debug
    logger.debug(content)
}

exports.error = (content) =>{
    let logger = log4js.getLogger('error')
    logger.level = levels.error
    logger.error(content)
}

 exports.info = (content) =>{
    let logger = log4js.getLogger('info')
    logger.level = levels.info
    logger.info(content)
}

随后我们去app.js里将原本的日志输出换成我们写好的。位置大约一个在logger那,一个在error那。分别换上我们的info和error就行啦。

记得先引入log4js!

封装工具函数

工具函数目前具有的功能:

  • 成功或者失败返回状态码
  • 初步的分页结构

先来定义我们的状态码:

const CODE = {
    SUCCESS:200,
    PARAM_ERROR:10001, //参数错误
    USER_ACCOUNT_ERROR:20001, //账号或者密码错误
    USER_LOGIN_ERROR:30001, //用户未登录
    BUSINESS_ERROR:40001, //业务请求失败
    AUTH_ERROR:50001, //认证失败或者TOKEN过期
}
下一个肯定是60001,别猜,我说哒!
下面函数均用 module.exports导出:
   success(data='',msg='',code=CODE.SUCCESS){
        log4js.debug(data);
        return{
            code,data,msg
        }
    },
    fail(msg='',code=CODE.ERROR){
        log4js.debug(msg);
        return{
            code,data,msg
        }
    }

我这里特意将之前日志输出的函数引入过来,在此打印方便我们调试,如果成功的话,应该重点看返回的数据,如果失败的话,我们肯定不返回数据,重点要看当时的msg,查明失败原因。

    pager({pageNum=1,pageSize=10}){
        pageNum*=1;
        pageSize*=1;
        const skipIndex = (pageNum-1)*pageSize;
        return{
            page:{
                pageNum,
                pageSize
            },
            skipIndex
        }
    },

这个函数是分页结构的函数,默认一页是十条数据,利用算数将pageNum和pageSize转换成number类型。

skipIndex是我们用来查索引的,这里来解释一下:一页十条数据,假如我们现在是第三页,(3-1) * 10=20,所以我们下一个索引就从20开始查起就好了。

写在最后

1024马上就到了呀,祝愿天下的程序员最近的bug都少一点,头发都多一点!

点个赞,一起努力加油吧♥

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
55 1
|
2月前
|
存储 JavaScript 前端开发
深入浅出Node.js后端开发
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将以Node.js为例,深入探讨其背后的哲学思想、核心特性以及在实际项目中的应用,旨在为读者揭示Node.js如何优雅地处理高并发请求,并通过实践案例加深理解。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和思考。
|
2月前
|
Web App开发 开发框架 JavaScript
深入浅出Node.js后端开发
本文将带你领略Node.js的魅力,从基础概念到实践应用,一步步深入理解并掌握Node.js在后端开发中的运用。我们将通过实例学习如何搭建一个基本的Web服务,探讨Node.js的事件驱动和非阻塞I/O模型,以及如何利用其强大的生态系统进行高效的后端开发。无论你是前端开发者还是后端新手,这篇文章都会为你打开一扇通往全栈开发的大门。
|
2月前
|
Web App开发 开发框架 JavaScript
深入浅出Node.js后端开发
在这篇文章中,我们将一起探索Node.js的奇妙世界。无论你是刚接触后端开发的新手,还是希望深化理解的老手,这篇文章都适合你。我们将从基础概念开始,逐步深入到实际应用,最后通过一个代码示例来巩固所学知识。让我们一起开启这段旅程吧!
|
1月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
本文将带领读者从零基础开始,一步步深入到Node.js后端开发的精髓。我们将通过通俗易懂的语言和实际代码示例,探索Node.js的强大功能及其在现代Web开发中的应用。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的见解和技巧,让你的后端开发技能更上一层楼。
|
2月前
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
本文旨在揭示Node.js的核心特性之一——事件循环,并探讨其对后端开发实践的深远影响。通过剖析事件循环的工作原理和关键组件,我们不仅能够更好地理解Node.js的非阻塞I/O模型,还能学会如何优化我们的后端应用以提高性能和响应能力。文章将结合实例分析事件循环在处理大量并发请求时的优势,以及如何避免常见的编程陷阱,从而为读者提供从理论到实践的全面指导。
|
2月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
本文将带你走进Node.js的世界,从基础到进阶,逐步解析Node.js在后端开发中的应用。我们将通过实例来理解Node.js的异步特性、事件驱动模型以及如何利用它处理高并发请求。此外,文章还会介绍如何搭建一个基本的Node.js服务器,并探讨如何利用现代前端框架与Node.js进行交互,实现全栈式开发。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和深入的理解。
40 4
|
1月前
|
存储 缓存 负载均衡
后端开发中的性能优化策略
本文将探讨几种常见的后端性能优化策略,包括代码层面的优化、数据库查询优化、缓存机制的应用以及负载均衡的实现。通过这些方法,开发者可以显著提升系统的响应速度和处理能力,从而提供更好的用户体验。
57 4
|
10天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
111 18
|
22天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
70 3
下一篇
开通oss服务