Atwood定律:凡是能用JavaScript写出来的,最终都会用JavaScript写出来

 

Node.js 递归遍历目录

遍历目录遍历目录是操作文件时的一个常见需求。比如写一个程序,需要找到并处理指定目录下的所有JS文件时,就需要遍历整个目录。递归算法遍历目录时一般使用递归算法,否则就难以编写出简洁的代码。递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题。以下示例说明了这种方法。function factorial(n) { if (n === 1) { return 1; } else { return n * factorial(n - 1); } } 上边的函数用于计算 N 的阶乘(N!)。可以看到,当 N 大于 1 时,问题简化为计算 N 乘以 N-1 的阶乘。当 N 等于 1 时
ngtwewy 2020-04-06    Node.js   

Sequelize 事务的使用与Transaction类

Transaction是Sequelize中用于实现事务功能的子类,通过调用Sequelize.transaction()方法可以创建一个该类的实例。在Sequelize中,支持自动提交/回滚,也可以支持用户手动提交/回滚。 事务的使用 1.1 受管理的事务(auto-callback) 1.2 不受管理的事务(then-callback) 1.3 并行/部分事务 1.4 隔离级别 1.5 选项参数 Transaction类 2.1 访问与初始化 2.2 实例方法 1. 事务的使用 Sequelize有两种使用事务的方式:
ngtwewy 2019-07-17    Node.js   

Node.js 编码规范

一,空格与格式 缩进 采用2个空格缩进,而不是tab缩进。 空格在编辑器中与字符是等宽的,而tab可能因编辑器的设置不同。2个空格会让代码看起来更紧凑、明快。 变量声明 永远用var声明变量,不加var时会将其变成全局变量,这样可能会意外污染上下文,或是被意外污染。 在ECMAScript 5的strict模式下,未声明的变量将会直接抛出ReferenceError异常。 需要说明的是,每行声明都应该带上var,而不是只有一个var,示例代码如下: var assert = require('assert'); var fork = require('child_proce
ngtwewy 2019-07-17    Node.js   

Express.js 日志模块

安装 npm install --save-dev morgan 使用 var express = require('express'); var app = express(); // 设置日志 var fs = require("fs"); var path = require('path'); var morgan = require('morgan'); // create a write stream (in append mode) var accessLogStream = fs.createWriteStream(path.join(__dirn
ngtwewy 2019-07-02    Node.js   

Node.js 获取文件上传进度 progress-stream

安装使用progress-stream 即可 var fs = require('fs'); var express = require('express'); var multer = require('multer'); var progressStream = require('progress-stream'); var app = express(); var upload = multer({ dest: 'upload/' }); app.post('/upload', function (req, res, next) { // 创建progress
ngtwewy 2019-06-25    Node.js   

Node.js 文件系统

File System(文件系统)NodeJS 通过 fs 内置模块提供对文件的操作。fs 模块提供的 API 基本上可以分为以下三类:1,文件属性读写。其中常用的有 fs.stat、fs.chmod、fs.chown 等等。2,文件内容读写。其中常用的有 fs.readFile、fs.readdir、fs.writeFile、fs.mkdir 等等。3,底层文件操作。其中常用的有 fs.open、fs.read、fs.write、fs.close 等等。官方文档: http://nodejs.org/api/fs.html异步和同步Node.js 文件系统(fs 模块)模块中的方法均有异步和
ngtwewy 2019-06-19    Node.js   

Node.js Buffer(缓冲区)

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。在引入 TypedArray 之前,JavaScript 语言没有用于读取或操作二进制数据流的机制。 Buffer 类是作为 Node.js API 的一部分引入的,用于在 TCP 流、文件系统操作、以及其他上下文中与八位字节流进行交互。现在可以使用 TypedArray, Buffer 类以更优化和更适合 Node.js 的方式实现了 Uint8Array API。Buff
ngtwewy 2019-06-19    Node.js   

async/await 中实现 sleep()

数据采集时,有时候需要延时操作,实现类似sleep()这样的函数: function sleep(ms) { return new Promise((resolve) => { setTimeout(() => { resolve('sleep for ' + ms + ' ms'); }, ms); }); } async function main() { await sleep(1500); ... }
ngtwewy 2019-06-04    Node.js   

Node.js API Mocha 单元测试

一,什么是单元测试 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 二,为什么要进行单元测试 先说为什么浏览器可以直接访问,但为什么还要单元测试?第一浏览器访问其实是手工操作,简单的页面当然访问一下就好了,可是如果你要测的功能很复杂
ngtwewy 2019-05-26    Node.js   

重写了自己的 Node.js 爬虫

重写了爬虫,程序逻辑如下: 1,爬虫抓取文章列表第一页。 2,获取文章列表。 3,遍历文章。 4,把文章列表中文章的缩略图下载保存。 5,把文章内容中的图片全部下载保存,并用图片新路径,替换文章内容中的图片地址。 6,保存文章内容到数据库。 7,处理完文章列表后,递归执行下一页文章列表。 var http = require('http'); var http = require('https'); var fs = require('fs'); var cheerio = require('cheerio'); var po
ngtwewy 2019-05-03    Node.js   

Node.js 数据验证器 validator.js 类似Laravel和ThinkPHP

https://github.com/skaterdav85/validatorjs 这个貌似是github上星数,最高的验证器了。 果然没有让我失望,很类似Laravel和ThinkPHP中的数据验证器。唯一的缺陷,是没有场景这种功能。 let Validator = require('validatorjs'); let data = { name: '', myemail: 'johndoe@sss.ss', age: 12 }; let rules = { name: 'required', myemail: 'required|e
ngtwewy 2019-04-25    Node.js   

Node.js i18n 国际化实现语言切换

安装 npm install i18n --save i18n.js var i18n = require('i18n'); i18n.configure({   locales: ['en-US', 'zh-CN'],  // setup some locales - other locales default to en_US silently   // defaultLocale: 'zh-CN',   defaultLocale: 'en-US',   directory: __dirname + '/locales',     updateFiles: fal
ngtwewy 2019-04-25    Node.js   

Node.js 数据验证 Validator.js

在前端,可以考虑使用Validate.js ,后端使用 express-validator。 https://github.com/chriso/validator.js express-validator https://express-validator.github.io/docs/check-api.html https://github.com/express-validator/express-validator Validator Description contains(str, seed) check if the s
ngtwewy 2019-04-20    Node.js   

Node.js ORM 框架 Sequelize.js 教程

一,简介 ORM 是"对象-关系映射"(Object/Relational Mapping) 的缩写,就是通过实例对象的语法,完成关系型数据库的操作的技术。面向对象编程把所有实体看成对象(object),关系型数据库则是采用实体之间的关系(relation)连接数据。很早就有人提出,关系也可以用对象表达,这样的话,就能使用面向对象编程,来操作关系型数据库。 ORM 把数据库映射成对象: 数据库的表(table) --> 类(class) 记录(record,行数据)--> 对象(object) 字段(field)--> 对象的属性(attribute) 二,举例 举
ngtwewy 2019-04-19    Node.js   

Electron 简介

简介:Electron 可以让你使用纯 JavaScript 调用丰富的原生(操作系统) APIs 来创造桌面应用。 你可以把它看作一个 Node. js 的变体,它专注于桌面应用而不是 Web 服务器端。这不意味着 Electron 是某个图形用户界面(GUI)库的 JavaScript 版本。 相反,Electron 使用 web 页面作为它的 GUI,所以你能把它看作成一个被 JavaScript 控制的,精简版的 Chromium 浏览器。从开发的角度来看, Electron application 本质上是一个 Node. js 应用程序。 与 Node.js 模块相同,应用的入口是
ngtwewy 2019-04-02    Node.js