使用 Mocha 和 Node.js自带的assert做单元测试,使用SuperTest做请求接口。Mocha 简介mocha 提供 TDD(测试驱动开发)、BDD (行为驱动开发) 和 exports 风格的接口。BDD是“行为驱动的开发”(Behavior-Driven Development)的简称。BDD认为,不应该针对代码的实现细节写测试,而是要针对行为写测试。BDD测试的是行为,即软件应该怎样运行。BDD接口提供以下方法:describe():测试套件 it():测试用例 before():所有测试用例的统一前置动作 after():所有测试用例的统一后置动作 beforeEach
admin 2021-01-17 Node.js 1743
NPM Package 学习,一个符合CommonJs规范的包,都可以成为一个Npm Package。一,创建一个包创建一个文件夹:good-helloworld添加如下文件:index.jsexports.helloWorld = function () { return "Hell World!"; } exports.你好世界 = function () { return "你好世界!"; } package.json{ "name": "good-helloworld", "version": "0.0.1", "private": false } README.
admin 2021-01-15 Node.js 1075
Sequelize 提供了一个方法 Model.bulkCreate,可以只用一次查询插入多条数据。bulkCreate(records, [options]) - Promise. Array. Instance 参数records Array 要创建实例的对象(键/值 对)列表 [options] Object [options.fields] Array 要插入的字段。默认全部 [options.validate=true] Boolean 插入每条记录前进行验证 [options.hooks=true] Boolean 在执行前/后创建钩子 [options.indi
admin 2021-01-14 Node.js 2148
安装 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);
admin 2021-01-14 Node.js 1144
tags字段是逗号隔开tag id。查询一select i.id, i.title, i.tags, (select GROUP_CONCAT(tb_tag.title SEPARATOR ',') from tb_tag where id in (i.tags) ) as tags_title from tb_item as i; 结果:查询二select i.id, i.title, i.tags, (select GROUP_CONCAT(tb_tag.title SEPARATOR ',') fro
admin 2021-01-13 MySQL 859
可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。与函数调用一起使用时,如果给定的函数不存在,则返回 undefined。之前:let nestedProp = obj.first && obj.first.second; 使用可选链操作符?.let nestedProp = obj.first?.second; 连用可选链操作符let
admin 2021-01-12 JavaScript 788
.head-section{ width: 100%; height: 360px; position: relative; z-index: -1; overflow: hidden; } .head-section::after{ content: ''; display: block; width: 160%; height: 200%; border-radius: 50%; position: absolute; left: 50%; top: -10
admin 2020-12-23 CSS 801
通常异常使用方式:try { JSON.parse(json); } catch (e) { // TODO } 但是这对于异步编程而言并不一定适应,下面的代码 catch 不会捕捉到异常,并导致程序退出:async function action(){ setTimeout(()= { throw new Error("发生了错误"); }, 1000); } try { action(); } catch (e){ console.log('catch: ', error.message); } 异步I/O的实现主要包含两个阶段:提交请求和处理结果。这
admin 2020-12-15 JavaScript Node.js 878
当内存中无法一次装下需要处理的数据时,或者一边读取一边处理更加高效时,我们就需要用到数据流。NodeJS中通过各种 Stream 来提供对数据流的操作。官方文档: http://nodejs.org/api/stream.html小文件拷贝fs.writeFileSync(dst, fs.readFileSync(src)); 大文件拷贝上边的程序拷贝一些小文件没啥问题,但这种一次性把所有文件内容都读取到内存中后再一次性写入磁盘的方式不适合拷贝大文件,内存会爆仓。对于大文件,我们只能读一点写一点,直到完成拷贝。因此上边的程序需要改造如下。fs.createReadStream(src).pi
admin 2020-12-15 Node.js 861
最终我选择使用了 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
admin 2020-12-14 Node.js 1157
Scoped Packages 范围包假如我们有一个项目需要使用 npm init 进行初始化,但是在 npm 注册的包名是唯一的,好名字都被别人起了,怎么办呢?之前很多人都是使用类似 koa-router、vue-cli 中线的方式。 还有类似这样的:@koa/router,这种形式叫做 Scoped Packages 范围包。@somescope/somepackagename每个npm用户可以有自己的 somescope使用的时候大概如下:var router = require("@koa/router"); 参考https://nitayneeman.com/posts/under
admin 2020-12-09 Node.js 949
安装包的时候提示如下:gyp WARN EACCES user "nobody" does not have permission to access the dev dir 或者gyp WARN EACCES user "root" does not have permission to access the dev dir 解决方法:npm install xxxx -g --unsafe-perm 有时候可以先执行:npm cache clean --force 参考:https://javascript.net.cn/article?id=657
admin 2020-11-02 Node.js 1140
这个属性可以取消 pading 和 border 宽度对盒装模型的影响。语法box-sizing: content-box|border-box|inherit;content-box 这是由 CSS2.1 规定的宽度高度行为。宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框。border-box 为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。inherit规定应从父元素继承 box-sizing 属性的值。
admin 2020-10-31 CSS 766
process.env 介绍process(进程)对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程。作为一个对象,它对于 Node.js 应用程序始终是可用的,无需使用 require()。process.env 属性会返回包含用户环境的对象。文档:http://nodejs.cn/api/process.html#process_process_env很明显的一个使用场景,依靠这个我们就可以给服务器上打上一个标签。这样的话,我们就能根据不同的环境,做一些配置上的处理。如何配置环境变量Windows临时配置直接在cmd环境配置即可,查看环境变量,添加环境变量
admin 2020-10-26 Node.js 1934
负载均衡的一般概念负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。一个没有负载均衡的 web 架构类似下面这样:在这里用户是直连到 web 服务器,如果这个服务器宕机了,那么用户自然也就没办法访问了。另外,如果同时有很多用户试图访问服务器,超过了其能处理的极限,就会出现加载速度缓慢或根本无法连接的情况。而通过在后端引入一个负载均衡器和至少一个额外的 web 服务器,可以缓解这个故障。通常情况下,所有的后端服务器会保证提供相同的内容,以便用户无论哪个服务器响应,都能收到一致的内容。从图里可以看到,用户访问负载均衡器,再由
admin 2020-10-13 Node.js 1661
PM2 配置文件: 生态系统文件 ecosystem.config.js当在多个服务器上部署或使用多个CLI参数时,使用生态系统文件来替代命令行启动应用,将会更加方便。生态系统文件的目的是收集应用所有的配置选项和环境变量。创建一个 ecosystem.config.js:pm2 init 这个命令会生成:module.exports = { apps: [{ script: 'index.js', watch: '.' }, { script: './service-worker/', watch: ['./service-worker'] }],
admin 2020-10-13 Node.js 3789
pm2 的日志模块默认是每一个服务进程都分配两个默认的日志文件,普通日志和错误日志。这两个日志文件存放于/root/.pm2/logs中,如果pm2管理5个服务,那么该文件夹下总共有10个日志文件,并且随着时间不断增加,很容易就会产生很多个上g的日志文件,导致了服务器的磁盘空间不足的问题清理日志在 pm2 运行时,如果手动删除日志文件,那么后续的日志不会被写入,需要重启pm2的进程。使用 pm2 flush 可以清理日志不需要重启。查看实时日志pm2 logs # only app logs pm2 logs app 日志文件配置可以自定义日志文件位置:module.exports =
admin 2020-10-13 Node.js 1355
简介:一个轻量级的参数验证工具,国人开发,非常符合我的口味。安装:npm install parameter --save 使用方法:constructor([options]) - new Class Parameter instanceoptions.translate - translate functionoptions.validateRoot - config whether to validate the passed in value must be a object, default to false.options.convert - convert primitive
admin 2020-10-13 Node.js 1674
简介触发器(Emitter)类型的对象会触发命名事件来调用函数(又称监听器,Listener)。所有能触发事件的对象都是 EventEmitter 类的实例。 这些对象有一个 eventEmitter.on() 函数,用于将一个或多个函数绑定到命名事件上。 事件的命名通常是驼峰式的字符串。当 EventEmitter 对象触发一个事件时,所有绑定在该事件上的函数都会被同步地调用。 被调用的监听器返回的任何值都将会被忽略并丢弃。例子,一个简单的 EventEmitter 实例,绑定了一个监听器。 eventEmitter.on() 用于注册监听器, eventEmitter.emit() 用于触
admin 2020-10-11 Node.js 865
本文为我的学习笔记,适合有 Vue.js 2.0 基础的人阅读。1,下载基础设置克隆Vue-next-Webpack-preview项目,它将为我们提供包括Vue 3在内的最小的Webpack设置。$ git clone https://github.com/vuejs/vue-next-webpack-preview.git vue3-experiment $ cd vue3-experiment $ npm install 2,添加sass 支持npm install --save-dev style-loader node-sass sass-loader 在webpack.co
admin 2020-09-09 JavaScript 948
随机推荐
Node.js 控制台进度条实现原理
如何使用命令修改 MySQL 数据库名称
curl 的用法指南
选择排序
Rollup 教程
如何使用 Photoshop 绘画像素风格图片
WordPress 主题激活和取消激活钩子
get_categories() 获取所有分类