node
养只猫
这个作者很懒,什么都没留下…
展开
-
0-1项目脚手架命令行生成项目目录
前端基建原创 2023-08-15 20:44:14 · 180 阅读 · 0 评论 -
nestjs任务调度的使用
这个任务调度并不是因为node是js就草率的认为是settimeout或setinterval这样的。node的任务调度会开启一个node的子进程,在子进程中进行任务调度。当然nestjs已经帮我们封装好了相关的功能。第二种'45 * * * * *'意思是每分钟的底45秒执行一次。第一种为预设的CronExpression来定义间隔,下方的例子就是每10个小时执行一次。前端出身的我经常开会的时候会听到其他后端在说定时任务,现在写node也用到了任务调度。一个简单的任务调度的例子就完成了。原创 2022-09-27 11:25:46 · 1770 阅读 · 3 评论 -
nestjs中使用redis数据缓存
redis/node/nest/typescriptnestjs中使用redis数据缓存原创 2022-09-26 20:14:56 · 1096 阅读 · 0 评论 -
commonjs和es module对定义变量被改变的分析
commonjs和es module都是js模块化机制,commonjs一般用于服务端写nodejs而es module是用与web浏览器js开发。这篇文章主要说的是在两种不用的模块化机制中对于定义的变量改变的区别commonjs:commonjs 引用的js文件中的变量被改变是其他地方引用相同的文件的变量不会被改变文件test1const {a, afn} = require('./testmodule')console.log(a, '进来了')afn()setTimeout(fun原创 2022-03-28 16:43:34 · 808 阅读 · 0 评论 -
0-1搭建ts-node项目编译处理路径简写问题
背景:随着react的使用我俨然已经成为了ts的深度使用者,时下react+ts+webpack的组合拳简直不要太香。作为把手伸向服务端的前端来说node是必不可少的一部分伴随着这个想法ts-node也被我提上了日程。问题:webpack中的alias给我们提供了路径简写并在打包的时候替我们寻找文件因此我们不需要去担心打包之后的路径问题。但是ts-node我并不是通过webpack进行搭建的,因此在设置了tsconfig.json的paths路径简写在ts编译成js之后原...原创 2021-09-20 09:46:00 · 1103 阅读 · 0 评论 -
typescript中d.ts文件使用外部定义的typescript类型
在写ts的时候遇到这样的一个情况:我需要将mongodb链接的实例对象挂载到node全局上,这个时候如果直接将类型设置为any的话在编写业务的时候回少掉很多语法提示,因此我需要在我的types.d.ts上给node全局变量的设置相关的类型。/// <reference types="node" />// 会导致types.d.ts文件失效// import GriFiled from 'gridfs-stream'declare interface nameType { na原创 2021-07-01 15:30:01 · 3032 阅读 · 2 评论 -
node连接mysql及其相关的注意事项
都说node和mongodb更配但是趋势来说的话mysql在当下会更主流,于是就去做了一些相关的demo。node要操作mysql数据库要安装mysql插件npm install mysql这里我考虑的不单单是操作完数据库就完事了,我想的是直接能在整个项目架构中将msyql相关的增删改查等一系列操作封装到一个文件中直接引用并且解决在数据库操作回调中不能直接返回前端参数问题。封装项目...原创 2019-10-31 14:34:14 · 286 阅读 · 2 评论 -
两种websocket实现的方案(html+node,vue+node)
自定的学习计划中终于到了websocket这一块了,其实很早就像搞这一块但是之前堆积了一堆其他更重要的东西。以前对于即时聊天的实现思路就是轮询后端的接口,这样的方式是一种“假即时聊天”,websocket才是最佳的方式。前端出身的我自然是用node作为服务端。那么我们开始吧!!!方案一(html+node)这种方式适用于原生的js+html项目。客户端直接使用原生的WebSocket对象这...原创 2019-10-23 16:56:47 · 1163 阅读 · 0 评论 -
node异常处理
每种语言都有它的优点和缺点,node也不例外。作为单线程的运行的node,非阻塞io将每个请求的处理放到回调中可以大大提高程序的并发性能,但是如果一旦node进程中有一处错误发生并且没有做相应的处理那么这将会使整个服务进程陷入崩溃的状态,尤其是在服务器上发生的时候将会是一场灾难。因此及时捕捉错误并处理是非常重要的。这里我在网上找到了一些处理异常的方法https://segmentfault.c...转载 2019-03-11 10:34:53 · 188 阅读 · 0 评论 -
koa框架使用graphQL管理api
首先说说graphQL。这是一个用来管理api接口的工具。应用场景如下:项目一期首页初始化接口A需要数据B和数据C两个参数到了项目二期首页初始化接口A需要的数据多了数据D少了数据B。这样后端接口A要相应的增加数据D和删除数据B,前端也要做相应的修改。多次迭代可能有需要加回数据B这样会做大量的无用功。graphQL能让后端添加需要新增的字段而不用删除不需要的字段并且前端只拿需要用的字段。这样前...原创 2019-03-12 14:54:02 · 1179 阅读 · 1 评论 -
node多线程方案
作为单线程事件驱动的node来说拥有非阻塞I/O快速开发等诸多有点,但是node并不完美对于cpu密集型这样的任务并不适合node。在这个硬件设备越来越好的时代,动不动就是4核8线程但是node却不能很好的利用这些高性能硬件的优势。对于node我还是比较喜欢的,因此去网上查找了各种node实现多线程的资料。threads_a_gogo这个中间件是可以实现node多线程的但是对于wind...原创 2019-03-18 18:17:36 · 2891 阅读 · 0 评论 -
通过nginx代理实现koa在请求中携带cookie
最近在测试关于身份验证的实现过程和思路。之前的博客写的是使用token的方法将token存到redis数据库中。但是在几个github开源项目中看到有用cookie验证的于是就开始新的征程了...跨域(!!!ctx.headers.origin ctx.set('Access-Control-Allow-Credentials', 'true')必须设置)app.use(async (c...原创 2019-03-29 17:32:23 · 2496 阅读 · 2 评论 -
node操作redis轻量级数据库
虽然身为前端但是目标为全栈的我,在做项目的时候后端经常会返回一个token给我作为每个接口的秘钥。一开始觉得token没有什么,但是闲下来的时候就会去思考这个东西。因为对服务端还有客户端的session的认识并不是很深(本人起步晚没办法有些东西没来的急学)因此不去考虑这个东西。想法一:请求登录接口会生成一个token并存起来,token是会变的不可能每生成的一个token都适用于这个用户这不...原创 2019-03-28 10:43:06 · 552 阅读 · 1 评论 -
node爬虫(牛刀小试)
新建一个js文件引入相关的插件superagent、cheerio、superagent-charset。通过cheerio可以使用jq获取dom的方法来处理请求到的爬虫数据const koaRequest = require('koa2-request') //koa封装的请求第三方接口的方法const cheerio = require('cheer...原创 2019-05-27 23:09:54 · 164 阅读 · 0 评论 -
miniprogram-automator微信小程序自动化工具
最近没啥事然后有个不是需求的需求。老大突然间看到了小程序自动化工具,于是让我研究一下。微信官方的文档真的是很简洁。感觉好多地方都没说清楚。。。小程序自动化官方文档闲话不多说首先我们要先安装自动化插件npm i miniprogram-automator --save-dev任意打开一个小程序进入到微信开发者工具->设置->安全->选择开启服务端口->重新打开...原创 2019-10-09 16:24:51 · 10518 阅读 · 8 评论 -
mongoose的联表存储和查询
数据库简单的增删改查是很容易但是真正到了项目中有些地方就需要两张甚至多张表进行关联,这样的话难度瞬间上了一个档次。mongoose给了我们很好地解决办法。模型层因为要联表所以要建立两个模型,这边我们要做的是通过order表去查询user表的参数orderconst Mongoose = require('mongoose')const order = new Mongoos...原创 2019-03-01 18:15:38 · 1940 阅读 · 0 评论 -
mongoose连接mongodb数据库
node通过mongoose连接mongodb数据库安装npm install mongoose --saveconst Mongoose = require('mongoose')Mongoose.connect('mongodb://localhost:27017/KoaMongoose',{ auth: { "authSource": "admin" },//对应...原创 2019-03-01 14:01:15 · 820 阅读 · 3 评论 -
koa2脚手架之koa-generator
vue-cli脚手架能很好地帮我们搭建好vue项目目录结构,同样的koa-generator脚手架可以帮我们快速搭建koa2框架的目录结构。包括接口路由koa-router和一些基本的配置安装npm install koa-generator -g安装脚手架目录koa2 server安装依赖npm install进入到server文件夹中启动nodemon app.js...原创 2018-11-18 14:13:14 · 3390 阅读 · 0 评论 -
http请求头中的application/x-www-form-urlencoded和application/json
最近在学习node遇到了一个问题写好的接口get和post的请求方式get不会发送预请求,post会发送预请求。什么是预请求呢?我点击了一次添加操作请求了一次接口发送一次请求但是谷歌network中却出现了两条请求这两条请求中200的是请求成功,204就我所说的预请求,由于跨域的问题存在会发送请求前会先发送一次预请求OPTIONS来确保请求的安全性。这个请求虽然不会造成程序上的错误但是...原创 2019-01-25 18:15:02 · 10607 阅读 · 3 评论 -
node相关的框架koa2
最近学习了node相关的框架koa2先来看看目录结构吧 之前有学过一点php相关的知识,node也可以分离出路由(routerIndex.js)、入口文件(index.js)、模型层(model)和控制层(contrallers)。node的语法是js并完美兼容es6语法(文件都是.js结尾),koa2最常用的有async,await。控制层控制层里面是每个接口的方法(export...原创 2019-02-23 17:27:01 · 171 阅读 · 2 评论 -
node.js加密token(jsonwebtoken)
每一个app都要有用户,而有用户就要有每个用户单独的token。jsonwebtoken是一个可以加密生成token和解密token的中间件。npm install jsonwebtoken --save安装我将这个过程封装到了一个中间件中并通过个koa2框架使用const jwt = require('jsonwebtoken')module.exports =...原创 2019-02-23 17:54:16 · 1832 阅读 · 0 评论 -
node请求外部接口的方法
在学习node的过程中一开始都是在处理外部的请求,但是如果碰到第三方接口的请求怎么办呢?这里有两种方法。一种是node原生request请求一种是引用koa2-request中间件的方法。node原生request请求这里我们分为get请求和post请求(原生node的request是需要手动引入的)get请求有以下两种,第一种直接将要的参数全部写到url里面;第二种将要传的参数写...原创 2019-02-23 18:22:57 · 8635 阅读 · 0 评论 -
node.js路由中间件koa-router
node.js后端的每一个路由就是一个接口。koa2框架结合koa-router中间件,使路由更加简介明了。这次讲讲koa-router的简单使用安装koa-routernpm install koa-router --save//在每个路由文件中引入const Router = require('koa-router')const router = new Router()...原创 2019-02-28 16:44:56 · 418 阅读 · 0 评论 -
node常用的中间件
在node的学习过程中积累了许多好用的中间件。这些中间件大部分要个koa配合使用1、koa-bodyparser这个插件使用来解析前端post请求带来的参数的//入口文件const bodyParser = require('koa-bodyparser');app.use(bodyParser({//设置可以接收的数据类型 enableTypes:['json', 'f...原创 2019-02-28 17:15:32 · 2951 阅读 · 1 评论 -
koa2完美支持async await
async await应该算是es7的东西了吧,在express和koa1中处理异步的方法都是yeild和generator等方式来处理异步看起来代码显得臃肿还有各种缺点(反正不用也没去深入了解)。koa2最新的node框架推出后直接完美支持async await,使得node能更加优雅的处理异步请求,在koa2的框架中会大量的用到这个方法。异步中的同步await必须依赖于async,...原创 2019-02-28 18:11:42 · 1298 阅读 · 2 评论 -
node存储文件的方式
作为后台语言接收保存文件也是必备的技巧。前端代码(vue)<input value="上传" ref="file" type="file" multiple @change="getFiles"> getFiles () { var that = this var FormDataImg = new FormData() ...原创 2019-03-01 10:06:19 · 2068 阅读 · 0 评论 -
mongodb数据库(window)
学了node肯定会想去学一下mongodb这个数据库。数据库之间的对比我就不多说了选一个自己喜欢的就行了。mongodb的安装http://www.runoob.com/mongodb/mongodb-window-install.html配置数据库安装好后的目录是没有上图的MongoDB这个文件夹的,这个是后面手动添加上去的,MongoDB文件夹的目录是这样的data对应...原创 2019-03-01 11:01:58 · 252 阅读 · 0 评论 -
koa框架中的mongoose
node中引入mongoose后创建数据库对应的模型层,控制层目录结构(php也是类似的结构)模型层在模型层中建立.js文件。const Mongoose = require('mongoose')var user = new Mongoose.Schema({//Schema要实例化mongoose user: String, age: { t...原创 2019-03-01 14:46:49 · 508 阅读 · 0 评论 -
mongoose的增删改查
数据库的4大基本操作增删改查。先定义好模型const Mongoose = require('mongoose')var user = new Mongoose.Schema({//Schema要实例化mongoose user: String, age: { type: Number, validate: {//验证器 ...原创 2019-03-01 15:18:18 · 1027 阅读 · 2 评论 -
mongoose绑定静态和动态方法
mongoose可以通过实例化Schema绑定动态和静态方法模型const Mongoose = require('mongoose')var user = new Mongoose.Schema({ //在Schema实例上static绑定静态方法,model不同实例化就能直接使用 user.statics = { staticTest () ...原创 2019-03-01 15:29:30 · 908 阅读 · 0 评论 -
mongoose的钩子方法
现在用的vue有生命周期钩子,指定vue实例在每个生命周期的操作。那么mongoose的钩子也是一样的意思。mongoose的钩子是在Schema实例中设置的分为前置钩子和后置钩子,即执行前和执行后要进行的操作。模型const Mongoose = require('mongoose')var user = new Mongoose.Schema({ // pre前置中间件...原创 2019-03-01 16:43:17 · 1567 阅读 · 0 评论 -
es6异步之await和async异步
手上的项目写好的接口已经对接完了。最近闲下来了,上家公司的主管跟我提起了前端和node.js。node必定是以后前端的一项重要技术。这次不再看视频从基础开始了,直接看自己需要的东西。说到异步就会想到promise,在es6中的await和async也是异步操作。await 和 async是建立在 promise机制之上的。不能说有了await和async就不要promise。async...原创 2018-11-18 14:02:26 · 281 阅读 · 0 评论