ngtwewy

介绍一个 Koa.js 的 SESSION 的中间件安装npm install koa-session 例子const session = require('koa-session'); const Koa = require('koa'); const app = new Koa(); app.keys = ['some secret hurr']; const CONFIG = { key: 'koa:sess', //cookie key (default is koa:sess) maxAge: 86400000, // cookie的过期时间 maxA

2021-05-09    Node.js    220
ngtwewy

介绍koa-body 是一个可以帮助解析 http 中 body 的部分的中间件,包括 json、表单、文本、文件等。还有一个常用的类似扩展 koa-bodyparser对比其中,koa-bodyparser 不可以直接处理文件,需要上传文件的时候,还需要引用另外一个中间件 koa-multer,项目地址和使用数量如下:koa-body Used by 31.6khttps://github.com/dlau/koa-bodykoa-bodyparser Used by 73.1k https://github.com/koajs/bodyparser代码示例// 初始化 const koa

2021-05-08    Node.js    214
ngtwewy

简介Node.js 的 JSON Web Token 模块有很多,我选择使用 jsonwebtoken。项目地址: https://www.npmjs.com/package/jsonwebtoken安装npm install jsonwebtoken --save 用法const jwt = require("jsonwebtoken") const secret = "some word"; let payload = {}; payload.data = data || {}; //token 中包含的数据 payload.ctime = (new Date()

2021-05-06    Node.js    223
ngtwewy

简介Nodemailer 是一个简单易用的 Node.JS 邮件发送模块(通过 SMTP,sendmail,或者 Amazon SES),支持 unicode,你可以使用任何你喜欢的字符集。安装npm install nodemailer --save 代码示例:const nodemailer = require('nodemailer'); const config = { smtp: { host: "smtp.163.com", username: "123123123@163.com", password: "123123123" } }; fu

2021-05-06    Node.js    207
ngtwewy

常用的Node.js图片处理模块,有node-image、sharp和jimp。node-image很轻量,但是处理gif有点问题,更新还有点慢了。sharp跨操作系统部署的时,常常还需要编译一下。所以,jimp也是一个很好的选择。介绍:An image processing library for Node written entirely in JavaScript, with zero native dependencies.看这个官方介绍也说了,完全使用Node写的的库,无原生依赖。 支持图片类型bmp、gif、jpeg、png和tiff。安装:npm install --save j

2021-05-05    Node.js    332
ngtwewy

简介:cheerio 是一个HTML解析器,cheerio实现了核心jQuery的子集。常用来解析采集来的HTML数据。安装:npm install cheerio 基础使用:const cheerio = require('cheerio'); var htmlString = ` 苹果 橙子 梨 `; $ = cheerio.load(htmlString); $('.apple', '#fruits').text() //=> 苹果 $('ul .pear').attr('class') //=> 梨 $('li[class=orange]').ht

2021-05-03    Node.js    195
ngtwewy

Node.js系统 application 应用将代码送到V8处理引擎处理js,其他io操作通过nodejs bindings 内部封装的 os operation。 llibuv是一个调度系统,本身不处理底层api,只负责接住从nodejs传过来的事件,剩下的事情由操作系统处理,操作系统处理事件的时候 worker threads 等待处理结果。 V8的线程是程序调起来的,当执行程序的时候,就会拉起nodejs的进程,工作进程也是主进程。 libuv 异步机制和调用系统两个作用。 什么是V8引擎v8引擎是一种JavaScript引擎的实现。JavaScript引擎是执行JavaScript代

2021-05-03    Node.js    213
ngtwewy

ctx.request.ip请求远程地址。 当 app.proxy 设置为 true 时,支持 X-Forwarded-Host。1, 在 Nginx 反向代理配置 proxy_pass 的部分添加这样一行。 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2, 在 Koa 应用里设置 app.proxy 为 true。X-Forwarded-For 定义X-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首

2021-04-14    Node.js    195
ngtwewy

1,cheerio 获取一个文本节点,该节点没有html标签,比如想获取html中的“猪突猛进” 猪突猛进 2021年3月12日 var text = $("#itemInfo").contents().filter(function () { return this.nodeType === 3; }).text(); 2,Node.js 获取 IP V6 内容出现超时问题的解决方法本地是IP V4,获取IP V6内容的时候,提示:Error: connect ETIMEDOUT 172.67.215.xxx:80 at TCPConnectWrap.

2021-03-19    Node.js    244
ngtwewy

项目需要采集日文网站,该日文网站编码是 EUC-JP。原采集函数是:// 下载指定页面 HTML function getHtml(url) { var hp = http; if(url.substr(0,5) == "https"){ hp = https; } return new Promise(function (resolve, reject) { hp.get(url, function (res) { var html = ''; res.on('data', function (data) {

2021-03-11    Node.js    222
ngtwewy

最初是 TJ 2013年写的模块。可以使用redis或者内存模式。当一定的时间内请求次数超过阀值,返回429错误。可以参考 API Rate Limiting 限速 https://javascript.net.cn/article?id=623,这个是基于IP的。在nginx做代理的情况下,还可以基于IP或者请求再次限流 https://javascript.net.cn/article?id=753Installation 安装# npm $ npm install koa-ratelimit # yarn $ yarn add koa-ratelimit Example 例子Wi

2021-01-23    Node.js    757
ngtwewy

跨域脚本攻击 XSS 是最常见、危害最大的网页安全漏洞。XSS:Cross Site Scrit 跨站脚本攻击(为与 CSS 区别,所以在安全领域叫 XSS)。攻击原理是代码被恶意注入到页面中(例如评论),然后其他用户在访问页面时,浏览器执行了代码逻辑。为了防止它们,要采取很多编程措施,非常麻烦。很多人提出,能不能根本上解决问题,浏览器自动禁止外部注入恶意脚本?这就是"网页安全政策"(Content Security Policy,缩写 CSP)的来历。CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提

2021-01-23    Node.js    288
ngtwewy

assert 模块assert模块是Node的内置模块,主要用于断言。如果表达式不符合预期,就抛出一个错误。该模块提供11个方法,但只有少数几个是常用的。assert(value[, message])value 检查是否为真的输入。message | assert.ok() 的别名。assert.ok(value[, message])如果 value 不是真值,则抛出 AssertionError,并将 message 属性设置为等于 message 参数的值。 如果未定义 message 参数,则会分配默认错误消息。 如果 message 参数是 Error 的实例,则它将被抛出而不

2021-01-18    Node.js    362
ngtwewy

使用 Mocha 和 Node.js自带的assert做单元测试,使用SuperTest做请求接口。Mocha 简介mocha 提供 TDD(测试驱动开发)、BDD (行为驱动开发) 和 exports 风格的接口。BDD是“行为驱动的开发”(Behavior-Driven Development)的简称。BDD认为,不应该针对代码的实现细节写测试,而是要针对行为写测试。BDD测试的是行为,即软件应该怎样运行。BDD接口提供以下方法:describe():测试套件 it():测试用例 before():所有测试用例的统一前置动作 after():所有测试用例的统一后置动作 before

2021-01-17    Node.js    541
ngtwewy

Sequelize 提供了一个方法 Model.bulkCreate,可以只用一次查询插入多条数据。bulkCreate(records, [options]) -> Promise.> 参数records Array 要创建实例的对象(键/值 对)列表 [options] Object [options.fields] Array 要插入的字段。默认全部 [options.validate=true] Boolean 插入每条记录前进行验证 [options.hooks=true] Boolean 在执行前/后创建钩子 [options.individualHooks=false

2021-01-14    Node.js    700
ngtwewy

安装 node-xlsxnpm install node-xlsx --save读取 Excelvar xlsx = require('node-xlsx'); // 解析得到文档中的所有 sheet var sheets = xlsx.parse('test.xls'); // 遍历 sheet sheets.forEach(function(sheet){ console.log(sheet['name']); // 读取每行内容 for(var rowId in sheet['data']){ console.log(rowId);

2021-01-14    Node.js    279
ngtwewy

通常异常使用方式:try { JSON.parse(json); } catch (e) { // TODO } 但是这对于异步编程而言并不一定适应。异步I/O的实现主要包含两个阶段:提交请求和处理结果。这两个阶段中间有事件循环的调度,两者彼此不关联。异步方法则通常在第一个阶段提交请求后立即返回,因为异常并不一定发生在这个阶段,try/catch的功效在此处不会发挥任何作用。异步方法的定义如下:try{ process.nextTick(callback); }catch(e){ //todo... } 调用async()方法后,callback被存放起

2020-12-15    Node.js    296
ngtwewy

当内存中无法一次装下需要处理的数据时,或者一边读取一边处理更加高效时,我们就需要用到数据流。NodeJS中通过各种 Stream 来提供对数据流的操作。官方文档: http://nodejs.org/api/stream.html小文件拷贝fs.writeFileSync(dst, fs.readFileSync(src)); 大文件拷贝上边的程序拷贝一些小文件没啥问题,但这种一次性把所有文件内容都读取到内存中后再一次性写入磁盘的方式不适合拷贝大文件,内存会爆仓。对于大文件,我们只能读一点写一点,直到完成拷贝。因此上边的程序需要改造如下。fs.createReadStream(src).pi

2020-12-15    Node.js    286
随机推荐
ThinkPHP 5.0 原生查询分页
vue-cli引用第三方框架
MySQL数据库日志处理
MAC 升级 Nodejs 和 Npm 到最新版
使用Keytools生成安卓证书
如何使用 Photoshop 设计 APP UI
HTML,CSS,font-family:中文字体的英文名称
Javascript循环
Javascript去字符串前后空格5种实现方法及比较
PDO预处理语句和存储过程