NodeJs
文章平均质量分 55
Always--Learning
选择远远大于努力
展开
-
Koa的洋葱模型到底是什么?
什么是Koa?Koa是一个精简的node框架,被认为是第二代Node框架,其最大的特点就是独特的中间件流程控制,是一个典型的洋葱模型,它的核心工作包括下面两个方面:将node原生的req和res封装成为一个context对象。基于async/await的中间件洋葱模型机制。Koa1和Koa2在源码上的区别有何不同?Koa1是使用generator、yield的模式。Koa2使用的是async/await + Promise的模式。什么是洋葱模型?Koa的洋葱模型是以next()原创 2022-04-14 08:05:55 · 4217 阅读 · 0 评论 -
在Egg.js中格式化日期
将时间戳格式化为时分秒在app文件夹下创建文件夹extend,然后在extend文件夹下创建helper.jsconst sd = require('silly-datetime');module.exports = { formatTime(unix) { return sd.format(new Date(unix * 1000),'YYYY-MM-DD HH:mm'); }}将时间戳修改为时分秒helper.formatTime(list[i].addTime)原创 2022-01-03 10:18:37 · 917 阅读 · 0 评论 -
带你从零学会---基于JWT的接口权限验证
服务端配置JWT的方法安装jsonwebtoken第三方工具包npm i jsonwebtoken引入jwtvar jwt = require('jsonwebtoken');在控制器中生成token,并进行返回router.get('/login', function (req, res, next) { var token = jwt.sign({ uid: '1', username: "zhangsan" }, 'this is sign', { expire原创 2021-12-29 08:47:54 · 747 阅读 · 0 评论 -
Egg.js中合成图片二维码的方法
借助qr-image实现生成二维码引入qr-image包const qr = require('qr-image');在service中定义获取二维码的函数 async getQrImage(qrText) { return new Promise((resolve,reject) => { try { const qrImage = qr.image(qrText,{type: 'png'}); resolve(qrImage)原创 2021-12-28 08:06:28 · 584 阅读 · 0 评论 -
Egg.js中配置跨域与路由分组
一、跨域配置egg.js中实现跨域主要是通过egg-cors这个插件,更多信息可以通过npm官网去查看这个插件的用法。安装插件cnpm i egg-cors --save在plugin.js中配置 cors: { enable: true, package: 'egg-cors' }在config.default.js中配置config.cors = { origin: '*', allowMethods: 'GET,PUT,POST,原创 2021-12-09 08:09:30 · 858 阅读 · 0 评论 -
Egg.js中封装Ajax,异步改变数据状态与分页功能的实现
实现点击页面上的符号即修改数据库中的数据并进行显示静态页面设置<td class="text-center chStatus" data-adminPath="<%=adminPath%>" data-id="<%=list[i].id%>" data-model="Product" data-field="status"><%if(list[i].status == 1){%> <img src="/public/admin/images/y原创 2021-12-05 07:57:26 · 380 阅读 · 0 评论 -
Egg.js中使用富文本编辑器的方法
通过wysiwyg-editor实现wysiwyg-editor的主要参考文档包括下面两个:Github官方文档:https://github.com/froala/wysiwyg-editor配置参考文档:https://froala.com/wysiwyg-editor/docs/options方式一:通过CDN引入在需要使用富文本编辑器的页面,通过下面的cdn进行引入。<link href="https://cdn.jsdelivr.net/npm/froala-edit原创 2021-11-24 08:11:54 · 335 阅读 · 0 评论 -
Egg.js上传图片到对象存储COS并按照日期存储图片
上传到COS上的参考文档可以参考官方的文档:https://cloud.tencent.com/document/product/436/8629#.E4.B8.8A.E4.BC.A0.E5.AF.B9.E8.B1.A1上传图片到腾讯云的COS上控制器中写法async doAdd() { const { ctx } = this; const body = ctx.request.body; const file = ctx.request.files[0]; .原创 2021-11-22 07:47:51 · 830 阅读 · 0 评论 -
Egg.js中实现单文件上传、多文件上传、按照日期存储
上传功能的实现将上传表单的类型置为file.注意:name属性不可缺少。<li>菜品图片:<input type="file" name="picUrl" /></li>配置文件上传的模式 // 配置文件上传的模式 config.multipart = { mode: 'file' };配置csrf属性enctype属性不可缺少。 <form action="/<%=adminPath%>/pro原创 2021-11-21 07:55:16 · 1141 阅读 · 0 评论 -
在Egg.js中实现RBAC权限管理
什么是RBAC?RBAC是基于角色的权限访问控制,在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限,也就是说权限是和角色绑定在一起的。RBAC权限管理树形图角色管理增加角色静态页面中通过post进行提交的时候,需要配置csrf<input type="hidden" name="_csrf" value="<%=csrf%>" />在增加角色的控制器中首先获取到请求的角色名,如果角色名为空,则渲染基类控制器中的错误提示,如果不原创 2021-11-17 08:17:33 · 1928 阅读 · 0 评论 -
Egg.js创建基类、配置公共的页面、后台地址与退出登录
通过HTML的meta标签实现指定时间后的页面跳转<meta http-equiv="refresh" content="3;url=http://www.baidu.com"> 创建基类为什么要创建基类?之所以要创建基类,是因为我们希望复用一些通用的逻辑,比如登录成功如何操作,登录出现错误如何操作,这就是我们为什么要创建基类的根本原因。实现方法首先在控制器下创建一个base.js文件在文件中定义需要被复用的异步函数。'use strict';const C原创 2021-11-14 08:26:52 · 663 阅读 · 0 评论 -
Egg.js中复用静态页面逻辑、局部刷新架构、生成验证码
配置ejs模板引擎安装插件npm i egg-view-js在plugin.js中添加下列代码module.exports = { // had enabled by egg static: { enable: true }, ejs: { enable: true, package: 'egg-view-ejs' }}在config.default.js中添加下列代码const userConfig = { view: {原创 2021-11-13 08:04:36 · 1365 阅读 · 0 评论 -
Egg中使用Sequelize ORM框架操作MySQL--关联查询
一、Sequelize自定义表名只需在定义model的时候,加入tableName字段即可。module.exports = app => { const { STRING, INTEGER, DATE } = app.Sequelize; const User = app.model.define('user', { id: { type: INTEGER, primaryKey: true, autoIncrement: true }, username: STR原创 2021-11-12 10:09:45 · 1088 阅读 · 0 评论 -
Egg.js中间件进行登录鉴权的核心思路
无论是在实际项目中还是在面试中,只要涉及到项目的问题,注册登录如何验证的问题,总是面试官的宠儿,这一次让我们来系统性的梳理如何完成一次登录的验证。(注意:项目实现的基础是以Egg.js作为后台实现的)第一步:配置中间件在middleware下创建adminAuth.js文件中间件中需要配置csrf全局变量,让表单post的数据能够正常的到达控制器login.js通过url模块拿到用户不带请求参数的请求路径首先判断session中userinfo是否存在,并且username是否存在,两个.原创 2021-11-09 07:40:24 · 551 阅读 · 0 评论 -
Egg.js中定时任务的核心用法
一、定时任务的基本使用在app文件夹下新建一个schedule文件夹,并在下面建立一个watchfile.js(可以自定义)const Subscription = require('egg').Subscription;let i = 0;class WatchFile extends Subscription { static get schedule() { return { interval: '1s', type: 'all' // 指原创 2021-10-30 14:54:30 · 1717 阅读 · 0 评论 -
Egg.js中控制器基类的简明用法
一、指定时间后跳转到指定页面通过meta标签<meta http-equiv="refresh" content="3;url=/">二、控制器基类BaseController可以通过自定义Controller基类的方式封装应用中常用的方法。在app文件夹下新建文件夹core,并在其中新建base.js'use strict';const Controller = require('egg').Controller;class BaseController ex原创 2021-10-30 10:33:14 · 281 阅读 · 0 评论 -
Egg.js中路由的核心用法
一、路由的几种写法一般写法router.get('/news', controller.news.index);带有中间件的写法const auth = app.middleware.auth();router.get('/news', auth,controller.news.index);包含名字的路由写法相当于给路由起一个名字,直接访问/news还是正常的。router.get('新闻','/news', controller.news.index);二、路由重原创 2021-10-30 09:16:24 · 448 阅读 · 0 评论 -
Egg.js中间件的核心用法
一、在应用中使用中间件在app/middleware文件夹下新建一个auth2.jsmodule.exports = (option,app) => { return async function auth2(ctx,next) { console.log(new Date); // 下面的这个语句很重要,如果没有下面这个语句,线程执行到这里就要终止了 await next(); }}注册中间件在config.default.js中进行注册。原创 2021-10-28 16:38:02 · 633 阅读 · 0 评论 -
Egg.js中使用extend、Cookie、Session的基本方式
一、初始化项目初始化egg-init spider --type=simple安装依赖npm i运行测试项目npm run dev配置模板引擎npm i egg-view-ejs 找到app/config/plugin.jsexports.ejs = { enable: true, package: 'egg-view-ejs'};找到app/config/config.default.jsconfig.view = { m原创 2021-10-28 09:56:58 · 689 阅读 · 0 评论 -
Express_02--处理表单的POST请求
express处理表单的post请求需要我们注意的是express内置了获取get请求体的API(req.query),但是并没有内置获取post请求体的API,所以需要我们手动的去配置中间件。配置body-parser中间件1. 安装npm install body-parser2. 导入并配置const bodyParser = require('body-parser')app.use(bodyParser.urlencoded({ extended: false }))app.原创 2021-10-24 08:04:38 · 670 阅读 · 0 评论 -
【青训营】- Node.js基础入门笔记2
模块化机制CommonJS规范加载方式加载内置模块require(‘fs’)加载相对或绝对路径的文件模块require(’/User/…’)加载npm包 require(‘lodash’)npm包查找原则当前目录的node_modules文件夹如果没有,沿着路径向上递归,直到根目录下的node_modules找到之后会加载package.json 中main属性指向的文件,如果没有package.json则依次查找index.js、index.json、index.node原创 2021-08-20 15:58:34 · 184 阅读 · 0 评论 -
【青训营】- Node.js基础入门笔记1
1. Node.js简介Node是一个基于Chrome V8引擎、跨平台的JS运行环境,注意是环境。版本管理载体同一个设备可以通过下面的版本管理工具来切换node的版本。n: 一个npm全局的开源包,是依赖npm来全局安装、使用的。fnm: 快速简单,兼容性支持nvm: 独立的软件包。(Node Version Manager)Node的特点异步I/O当Node执行IO操作时,会在响应返回并恢复操作,而不是阻塞线程并浪费CPU循环等待。单线程Node保持了JS在浏览器中单原创 2021-08-19 18:18:30 · 222 阅读 · 0 评论 -
使用Npm本地运行Html文件
1:在指定文件夹下初始化npm init2:使用cnpm安装lite-servercnpm install lite--server --save-dev3:使用编译器修改下面两处4:开始运行npm start 此时会完成跳转到浏览器原创 2021-01-10 13:30:35 · 3754 阅读 · 0 评论