独行侠_阿涛
2015年211院校毕业,于2020年考取软考高级证书-系统架构设计师,高分通过(61-64-52)。毕业前6年,一直专注于技术全面开花,有python/Node/Java/Elk系列等项目开发经验;熟悉搜索引擎解决海量数据搜索问题,Node代替Java开发服务后端,python自动化程序编写。目前持续沉淀过去的知识,陆续推出前端0+1专栏,容器技术等专栏,目前正在更新ELK7.2。
展开
-
KOA框架编程26 拦截器使用(非常有参考意义)
目录1 全局拦截器1.1 express1.2 koa2 全局异常拦截2.1 express2.2 koa下面的内容,作者是亲身经历和编写的代码,投产过,所以具有严格的生产意义。1 全局拦截器1.1 expressexpress里头的拦截器比较简单哈,比如一个全局的拦截器用来处理跨域:let app = express();/** * 全系统允许跨域处理 这段配置要再new出express实例的时候就要设置了,放在所有的api前面,不然没有效果 *.原创 2022-05-01 16:57:15 · 768 阅读 · 0 评论 -
KOA框架编程25 文件下载
目录1 前言2 文件下载1 前言koa这个框架确实好玩,跟express相比有比较大的不一样,express更像是一个大杂烩,所有的功能都冗杂在一块,而koa更像是一个灵活性很高个体,所有的功能都以独立组件的形式存在。2 文件下载express里头如果要下载文件需要使用:res.download('/report-12345.pdf'); res.download('/report-12345.pdf', 'report.pdf'); res.download(原创 2022-05-01 16:40:12 · 638 阅读 · 0 评论 -
KOA框架编程24 在线聊天室(非常有价值的文章)
目录1 前言2 功能介绍3 前端代码3.1 代码结构3.2 源码下载3.3 难点分析4 后端代码4.1 代码结构4.2 源码下载4.3 难点分析-长链接监听4.3.1 单独监听4.3.2 共用http监听4.3.2 共用https监听1 前言3年前,就想把这个简单的案例更新上来,但是那会把内容放到草稿箱里头就忘记了,一直到今天才...下面直接上案例吧!!!2 功能介绍在线聊天室实现了实时群聊的功能,以及文件上传下载的功能。文件上传.原创 2022-05-01 16:32:54 · 410 阅读 · 0 评论 -
KOA框架编程23 静态文件目录
express框架里头设置静态目录的方式如下:app.use(express.static(path.join(__dirname, 'public')));app.use("/public",express.static(path.join(__dirname, 'public')));上面和下面的区别是下面的方式在访问的时候,要在url里头添加上/public,而上面的不需要。而koa里头的静态文件目录的设置方式是:安装插件:npm install koa-static然后原创 2022-05-01 14:44:14 · 726 阅读 · 0 评论 -
KOA框架编程22 使用qq邮箱发送邮件
安装依赖包:npm install nodemailer编写发送邮件的工具类:const nodemailer = require("nodemailer")const transporter = nodemailer.createTransport({ // host: 'smtp.163.com', service: "qq", //邮箱类型 例如service:'163' secure: true, //是否使用安全连接,对https协议的 // p原创 2022-05-01 09:15:23 · 501 阅读 · 0 评论 -
KOA框架编程21 使用redis缓存数据库
Node.js连接redis显示Client is ClosedNode连接redis的代码如下:const redis = require('redis');const client = redis.createClient(6379, 'localhost');// const client = redis.createClient();//获取当前db中所有的key// function getdbnamelist(){// // 相当于命令(keys *), 返回li原创 2022-05-01 09:15:03 · 515 阅读 · 0 评论 -
KOA框架编程20-多文件上传-④-服务端实现
目录背景服务端-框架工具类效果展示背景前面已经完成了4种上传文件的前端方案。这四种方案都没有分享后台的代码给大家。下面分享下服务端代码。注意下面的服务端代码均适用于前面这四种前端方案。服务端-框架服务端使用koa框架编码,如果没有node编程基础可能会看不懂。app.js的代码:let koa = require('koa')let app = new koa()app.use(require('koa-cors')())let router = requ原创 2021-07-24 15:34:17 · 172 阅读 · 1 评论 -
KOA框架编程19-多文件上传-③-el-upload插件下
背景上篇文章介绍了,el-upload的官方默认的实现方案以及我们改写成一键上传的方案。不过这种一键上传只是表象,实际网络层的活动还是多次的上传动作。这篇文章分享如何改写el-upload的上传事件,实现一次请求,上传多个文件。原理改造的原理其实非常简单,紧紧抓住一条主线,我们要做什么?---一次上传多个文件,所以我们只要确保在我们点击上传的时候可以获取到最新的文件列表即可了。因此查看el-upload,其中有两个监听器非常有用:on-change // 文件状态改变时的钩子,添加文件原创 2021-07-24 15:34:07 · 131 阅读 · 0 评论 -
KOA框架编程18-多文件上传-③-el-upload插件上
目录背景el-upload一键上传-(假象,因为网络层还是多个上传请求)代码实现htmljs背景上一篇文章已经讲解了如何基于ajaxfileupload来实现文件上传。这篇文章讲解下基于elementui的el-upload插件实现文件上传。主要讲解el-upload的流程以及如何实现。el-uploadel-upload是elementui的内容,所以使用了elementui就可以直接使用了。官网已经有成熟的案例了。不过官网的案例是选择一个文件就立马上传一个原创 2021-07-24 15:33:40 · 88 阅读 · 0 评论 -
KOA框架编程17-多文件上传-②-ajaxfileupload.js
背景上一篇文章已经详细解释了如何基于axios来实现多文件上传,这种方式的优点非常明显:易用、支持跨域、灵活性高。但是还是有很多人依赖徘徊在jquery的ajaxfileupload.js插件。这个插件,时至今日,已经有非常多的版本了,基本上都是市面上开发爱好者,根据原理,自己写的,然后流传到市面上的。所以,很多人会反映,为啥我的这个不能用,为啥我的会报错。其实,ajaxfileupload的使用缺点也是非常明显的:难用、不支持跨域,不灵活,但是因为有人用,所以下面还是解释下ajaxfileupload原创 2021-07-23 09:59:05 · 101 阅读 · 0 评论 -
KOA框架编程16-多文件上传-①-拖拽上传 + axios
背景文件上传在实际的项目中用的还是比较频繁的,方式比较多。在未来的三篇文章里头,我们分别介绍下三种方式实现多文件上传。然后服务端都是使用koa作为基础。拖拽上传 + axios前端使用axios进行文件上传。这个过程主要是构建FormData来装载多个文件。然后示例的场景是拖拽(类比qq邮箱里头添加附件)。本篇案例是在vue + elementui的基础上来编写的,大家在普通的h5里头也是同样做法。1) 拖拽物的容器-textarea任意一个标签都可以充当容器,用来装载被拖拽进来文件原创 2021-07-23 09:53:27 · 270 阅读 · 0 评论 -
KOA框架编程15-跨域处理
目录背景koa跨域处理-方式一(有兼容性问题)koa跨域处理-方式二背景了解或者学习过express框架的同学都知道,express里头处理跨域一般如下即可:app.use(async (req, resp, next)=> { resp.header.set('Access-Control-Allow-Origin', '*'); resp.header.set('Access-Control-Allow-Headers', '*'); resp原创 2021-07-23 09:49:22 · 164 阅读 · 0 评论 -
KOA框架编程14-定时任务的使用
目录背景node-schedule安装node-schedule 定时任务定义cron解释常见拓展-支持基于date定义时间node-schedule任务启动背景学过其他编程语言的同学,应该或多或少都有学过或者用过定时任务吧。而使用KOA框架编程同样有这个诉求。下面介绍如何通过node-schedule模块实现KOA的定时任务。node-schedule安装npm install node-schedulenode-schedule 定时任务定义l原创 2021-07-23 09:47:34 · 884 阅读 · 0 评论 -
KOA框架编程13-层级路由的使用
背景使用过exrepss框架的同学,是否还记得,我们当时对路由的引用是分层两个步骤的,先定义路由,再在app.js里头引用路由。这个过程koa其实也是这么过来的。但是不同的是,express里头,我们在引用路由的时候都会指定路由的一级uri,用来区分每个路由之间的入口的不一样。比如:user路由,我们会指定/user作为路由前缀class路由,我们会指定/class作为路由前缀这样子,在不同的路由文件里头,我们指定uri就不用当心二级uri相同造成冲突的问题。而在前面KOA的例子里头原创 2021-07-23 09:44:05 · 207 阅读 · 0 评论 -
KOA框架编程12-同时开启http和https服务
目录背景http + https背景前面我们已经讲解过了如何单独使用http或者https来对外提供服务。但是通常,http是对开发环境的手段,而https是生产的手段,而生产环境,为了跳过域名解析等过程,生产环境的多个服务之间的通信也会采用http + localhost域名。因此一个系统http和https服务同时对外提供是很有必要的。http + https通常,不同协议,占据的端口是不一样的。因此我们约定:http占用的端口是3000,https占用的端口是3001。通常原创 2021-07-23 09:41:18 · 619 阅读 · 0 评论 -
KOA框架编程11-实现服务端发起请求
目录背景superagentget类型请求post类型请求响应对象属性背景一个系统,正常的请求流向是从前端(客户端)到服务端。而通常一个系统在没有办法完成全部业务的时候需要多系统协作的时候,那么就需要多系统之间联动,所以就出现请求流向是从服务端到服务端的场景。koa里头实现服务端到服务端的通信,得益于js的功效,所以实现起来也是比较简单的。superagent首先需要认识一个第三方的包superagent,这个包已经封装好了端对端请求的api,包括对请求头的设置,请求原创 2021-07-23 09:40:09 · 363 阅读 · 0 评论 -
KOA框架编程10-https编程
目录背景https通信https证书编程背景前面已经讲解过了KOA的基础编程技巧。但是都是基于http的通信,现在讲究安全,而最简单的安全手段就是https。KOA如何实现呢?https通信KOA实现https通信需要依赖几个包:https koa-sslify fs分别安装。https证书证书是这个环节里头最麻烦的动作,企业开发的话,公司都会提供给你企业的证书。需要注意的是,证书类型有很多,比如java通常使用的是.keystore类型的证书,而n原创 2021-07-23 09:32:30 · 147 阅读 · 0 评论 -
KOA框架编程9-sequelize-auto实现model自动生成
目录背景sequelize-auto安装自动生成model背景之前我们讲解了sequelize实现koa编程的orm。但是呢,对一个稍微大一点的项目而言,表结构肯定不会少,这个时候,如果手工根据表结构生成model,相信会让很多程序员叫苦不迭。因此,本篇文章引入了sequelize-auto来解决model生成的问题。sequelize-auto基于node的一个自动化生成所有Models,或指定数据表安装因为这是一个通用的工具,所以建议是全局安装。npm原创 2021-07-23 09:28:29 · 580 阅读 · 0 评论 -
KOA框架编程8-自动扫描并导入所有Model
背景上一篇已经完成了sequelize的所以讲解了。但是难免会遇到一个问题,那就是随着业务的壮大。系统的model会变的非常多。这个时候,如何引用也是一件麻烦事。本篇文章分享如何实现自动扫描所有model并导入。自动扫描并导入在存放model的文件夹里头新建一个文件module.js。输入:const fs = require('fs');const path = require('path') let files = fs.readdirSync(__dirname);原创 2021-07-23 09:25:03 · 179 阅读 · 0 评论 -
KOA框架编程7-sequelize事务和多表查询
背景上一篇文章已经讲解了基于模型的数据库单表增删改查。这节课就来分享一下多表查询和事务。Sequelize支持两种事务使用方式:托管(Managed) - 一种将基Pomise链的结果自动提交或回滚事务,并且(如果启用了CLS)将事务传递给回调中的所有调用非托管(Unmanaged) - 不会自动提交、回滚并将事务交由用户控制这边只分享托管的方式。托管事务(auto-callback)类比mybatis里头的@transition(callback=Exception.clas原创 2021-07-22 00:18:29 · 498 阅读 · 0 评论 -
KOA框架编程6-sequelize模型使用
目录背景find - 搜索数据库中一个特定元素findOrCreate - 搜索一个特定元素不存在时则新建findAndCountAll - 搜索数据库中多个元素,同时返回数据和总数findAll - 搜索数据库中多个元素复合过滤 / OR / NOT 查询对数据集使用limit、offset、order和group原始查询count - 统计数据库中元素数max - 获取表中特定属性的最大值min - 获取表中特定属性的最小值sum - 对特定属性的值求原创 2021-07-22 00:12:23 · 160 阅读 · 0 评论 -
KOA框架编程5-sequelize框架详解
目录背景sequelize概念安装建立连接测试连接关闭对表建模修改默认模型选项模型与数据库同步查询Promise与async/await方言(Dialects)数据类型(Datatypes)Model背景注意:本篇文章要求具备node开发经验,同时对orm有一定了解的同学看,不然会很吃力。默认情况下,我们使用开源mysql提供的包来操作数据库,但是这种方式编写的代码就比较底层、原始。如:connection.query('SELE原创 2021-07-22 00:12:12 · 116 阅读 · 0 评论 -
KOA框架编程4-sequelize+mysql2实现数据库增删改查
目录背景安装sequelize定义配置文件创建一个sequelize对象实例定义模型User,告诉Sequelize如何映射数据库表通过模型操作数据库测试背景这块内容,其实并非是KOA所特有的,而是在地方也可以使用,比如express框架里头我们也可以这么来用。这部分内容的提出,主要是针对基于node的编程,操作数据库是比较繁琐的,一般我们都是基于开源的mysql包来操作的,为了对标java里头的orm框架,比如mybatis,hibernate等,所以提出来基于se原创 2021-07-22 00:12:05 · 183 阅读 · 0 评论 -
KOA框架编程3-ctx的使用
目录背景ctx的使用概念APIctx.requestctx.responsectx.throw([status], [msg], [properties])Request 别名Response 别名背景上一篇文章,我们讲解了路由的基本使用,但是大家肯定非常疑惑,为啥没有演示参数的获取,以及更多的其他的跟路由相关的内容。其实这块内容非常多,而且都是跟ctx强相关,所以笔者单独起一篇文章来写。ctx的使用概念上下文(Context)就是ctx。Ko原创 2021-07-22 00:11:58 · 277 阅读 · 0 评论 -
KOA框架编程2-路由使用
目录背景创建路由路由中间件注册测试背景上一篇文章已经完成了KOA骨架的搭建。这节课来讲解下如何添加路由。大家都知道,路由其实就是用来标识应用上的唯一的一个接口,所以接口通常又被称为资源。在express的使用过程大家都知道我们可以借用express-router来实现路由编程。那么在KOA里头同样有这么一个包,称为koa-router,这个包在上一节课里头,我已经提前安装。创建路由在项目根目录下新建文件夹routers,所有的路由文件我们都放在这个文件夹里头(沿用ex原创 2021-07-22 00:11:50 · 259 阅读 · 0 评论 -
KOA框架编程1-项目初始化
目录背景项目初始化npm初始化koa核心包安装koa-入口文件app.js背景学过express框架的同学,一定听过KOA框架,那么再来学习KOA框架,就没什么压力了。因为如初一则,只是部分的语法更高级了。仅此而已。项目初始化项目开发,选用webstorm软件为开发工具。npm初始化新建项目目录比如:race-2020,该目录作为项目根目录打开terminal,输入:npm initkoa核心包安装继续在terminal上顺序执行如下命令:原创 2021-07-22 00:11:44 · 214 阅读 · 2 评论