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    76
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    81
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    161
ngtwewy

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

2021-01-23    Node.js    112
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    155
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    131
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    177
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    102
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    144
ngtwewy

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

2020-12-15    Node.js    134
ngtwewy

最终我选择使用了 sharp https://github.com/lovell/sharp基本用法:var images = require("images"); images("input.jpg") //Load image from file //加载图像文件 .size(400) //Geometric scaling the image to 400 pixels width //等比缩放图像到400像素宽 .draw(images("l

2020-12-14    Node.js    146
ngtwewy

process.env 介绍process(进程)对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程。作为一个对象,它对于 Node.js 应用程序始终是可用的,无需使用 require()。process.env 属性会返回包含用户环境的对象。文档:http://nodejs.cn/api/process.html#process_process_env很明显的一个使用场景,依靠这个我们就可以给服务器上打上一个标签。这样的话,我们就能根据不同的环境,做一些配置上的处理。如何配置环境变量Windows临时配置直接在cmd环境配置即可,查看环境变量,添加环境变量

2020-10-26    Node.js    439
ngtwewy

负载均衡的一般概念负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。一个没有负载均衡的 web 架构类似下面这样:在这里用户是直连到 web 服务器,如果这个服务器宕机了,那么用户自然也就没办法访问了。另外,如果同时有很多用户试图访问服务器,超过了其能处理的极限,就会出现加载速度缓慢或根本无法连接的情况。而通过在后端引入一个负载均衡器和至少一个额外的 web 服务器,可以缓解这个故障。通常情况下,所有的后端服务器会保证提供相同的内容,以便用户无论哪个服务器响应,都能收到一致的内容。从图里可以看到,用户访问负载均衡器,再由

2020-10-13    Node.js    182
ngtwewy

PM2 配置文件: 生态系统文件 ecosystem.config.js当在多个服务器上部署或使用多个CLI参数时,使用生态系统文件来替代命令行启动应用,将会更加方便。生态系统文件的目的是收集应用所有的配置选项和环境变量。创建一个 ecosystem.config.js:pm2 init 这个命令会生成:module.exports = { apps: [{ script: 'index.js', watch: '.' }, { script: './service-worker/', watch: ['./service-worker'] }],

2020-10-13    Node.js    448
ngtwewy

pm2 的日志模块默认是每一个服务进程都分配两个默认的日志文件,普通日志和错误日志。这两个日志文件存放于/root/.pm2/logs中,如果pm2管理5个服务,那么该文件夹下总共有10个日志文件,并且随着时间不断增加,很容易就会产生很多个上g的日志文件,导致了服务器的磁盘空间不足的问题清理日志在 pm2 运行时,如果手动删除日志文件,那么后续的日志不会被写入,需要重启pm2的进程。使用 pm2 flush 可以清理日志不需要重启。查看实时日志pm2 logs # only app logs pm2 logs app 日志文件配置可以自定义日志文件位置:module.exports =

2020-10-13    Node.js    258
随机推荐
在 CentOS 8 上使用 DNF 管理软件包
Javascript去字符串前后空格5种实现方法及比较
macOS卸载Android Studio
原生javascript左右滚动特效
Node.js ORM 框架 Sequelize.js 教程
文件的上传与无刷新上传
Mac下用命令行压缩和解压rar文件的方法
20190104 手绘口罩女
nginx 代理
PHP ExcelReader使用教程