1.__filename
解析:__filename表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不一定相同。如果在模块中,返回的值是模块文件的路径。

2.__dirname
解析:__dirname表示当前执行脚本所在的目录。

3.setTimeout(cb, ms)
解析:setTimeout(cb,ms)全局函数在指定的毫秒(ms)数后执行指定函数(cb)。:setTimeout()只执行一次指定函数。返回一个代表定时器的句柄值。

4.clearTimeout(t)
解析:clearTimeout(t)全局函数用于停止一个之前通过setTimeout()创建的定时器。参数t是通过setTimeout()函数创建的定时器。

5.setInterval(cb, ms)
解析:setInterval(cb,ms)全局函数在指定的毫秒(ms)数后执行指定函数(cb)。返回一个代表定时器的句柄值。可以使用clearInterval(t)函数来清除定时器。setInterval()方法会不停地调用函数,直到clearInterval()被调用或窗口被关闭。

6.process
解析:process是一个全局变量,即global对象的属性。Process也提供了很多有用的属性。

7.Node对象
解析:
常用属性,如下所示:

  • childNodes:返回节点的子节点的节点列表
  • firstChild:返回节点的首个子节点
  • lastChild:返回节点的最后一个子节点
  • parentNode:返回节点的父节点
  • nextSibling:返回节点之后紧跟的同级节点
  • previousSibling:返回节点之前紧跟的同级节点
  • nodeName:返回节点的名称,根据其类型
  • nodeType:返回节点的类型
  • nodeValue:设置或返回节点的值,根据其类型

常用方法,如下所示:

  • createElement():创建元素节点
  • createAttribute():创建属性节点
  • appendChild():向节点的子节点列表的结尾添加新的子节点
  • cloneNode():复制节点
  • insertBefore():在指定的子节点前插入新的子节点
  • removeChild():删除(并返回)当前节点的指定子节点
  • replaceChild():用新节点替换一个子节点
  • getAttribute():返回指定的属性值
  • setAttribute():把指定属性设置或修改为指定的值

8.async本质
解析:async应该是目前nodejs里最简单直白的异步方案了,async函数实际上就是generator函数的语法糖,省掉了callback的回调地狱,generator的yieldnext,promise的.then.catch,使代码看起来更像是同步流程方案,更扁平化。
说明:在async函数中,如果有多个await关键字时,有一个await的状态变成了rejected,那么后面的操作都不会继续执行。await用来串行的执行异步操作,实现并行可以考虑promise.all。

9.Promise
解析:Promise对象代表一个未完成、但预计将来会完成的操作。它有以下三种状态:[1]pending初始值,不是fulfilled,也不是rejected;[2]fulfilled代表操作成功;[3]rejected:代表操作失败。如下所示:

//构建Promise
var promise = new Promise(function (resolve, reject) {if (/* 异步操作成功 */) {resolve(data)} else {/* 异步操作失败 */reject(error)}
})

说明:resolve函数的作用:在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用:在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
Promise实例生成以后,可以用then方法指定resolved状态和reject状态的回调函数,如下所示:

promise.then(onFulfilled, onRejected)promise.then(function(data) {// do something when success
}, function(error) {// do something when failure
})

then方法会返回一个Promise。它有两个参数,分别为Promise从pending变为fulfilled和rejected时的回调函数[第二个参数非必选]。这两个函数都接受Promise对象传出的值作为参数。简单来说,then就是定义resolve和reject函数。

10.Node.js目录
解析:新建项目结构,如下所示:

[1]bin:项目的启动文件,也可以放其它脚本。
[2]node_modules:用来存放项目的依赖库。
[3]public:用来存放静态文件[css、js、img]。
[4]routes:路由控制器。
[5]views:视图目录[相当于MVC中的V]。
[6]app.js:项目入口及程序启动文件。
[7]package.json:包描述文件及开发者信息。
[8]models:数据模型[相当于MVC中的M]。
[9]controllers:控制器,对请求的操作[相当于MVC中的C]。
[10]tools:工具库。
[11]config:配置目录。
[12]test:测试目录。
[13]README.md:项目说明文件。

11.seneca
解析:seneca是一个nodejs微服务工具集,它赋予系统易于连续构建和更新的能力。

12.moment时间加减
解析:

moment().add(7,'years'); // 加7年
moment().add(7,'month');// 加7个月
moment().add(7,'days'); // 加7天
moment().add(7,'hours'); // 加7小时
moment().add(7,'minutes');// 加7分钟
moment().add(7,'seconds');// 加7秒钟moment().subtract(7,'years'); // 减7年
moment().subtract(7,'month');// 减7个月
moment().subtract(7,'days'); // 减7天
moment().subtract(7,'hours'); // 减7小时
moment().subtract(7,'minutes');// 减7分钟
moment().subtract(7,'seconds');// 减7秒钟

说明:getTime()函数把日期转换成时间戳。

13.Sequelize类库
解析:Sequelize是一个Node.js平台基于Promise的ORM。可以操作管理Mysql、Postgres、SQLite等关系型数据库。

14.SPM编码
解析:用来跟踪页面模块位置的编码,标准spm编码由4段组成,采用a.b.c.d的格式[建议全部使用数字],比如xTao合作伙伴[a=2014]中某个外站appkey为123456789[b=123456789],频道ID为1[c=1],页面ID为2[d=2],那么spm=2014.123456789.1.2,就唯一标识外站123456789的频道1上的页面2,从这个页面点击出去的链接,后面都应该携带spm=2014.123456789.1.2的参数串。这样微商货源网,通过这个编码,就能唯一的定位到一个url是由外站中哪个具体页面点击生成的。

15.__proto__和prototype[通用规则]
解析:在js中所有的对象都有proto属性[对象,函数],指向构造该对象的构造函数的原型。只有函数function才具有prototype属性。
[1]对象有__proto__属性,函数有prototype属性
[2]对象由函数生成
[3]生成对象时,对象的__proto__属性指向函数的prototype属性

16.__proto__和prototype[通用规则]
解析:

创建空对象时,实际上是用Object函数来生成对象的:
>var o = {}
>o.__proto__ === Object.prototype
true也可以显式的使用Object函数来创建对象:
>var o = Object()
o.__proto__ === Object.prototype
true当使用函数来创建自定义的对象时,上面的规则同样适用:
>function MyObj(){}
>typeof MyObj
"function"
>var mo = new MyObj()
>mo.__proto__ === MyObj.prototype
true

17.__proto__和prototype[函数对象]
解析:函数自然也是对象的一种,对于函数作为对象来说,上面的规则同样适用:

函数对象都是由Function函数生成的:
>function fn(){}
>fn.__proto__ === Function.prototype
true

把函数当做对象时,生成它的函数就是Function函数。那Function函数本身呢?同样适用:

Function函数本身作为对象时,生成它的函数是它自身
>Function.__proto__ === Function.prototype
true

Object函数也是一个函数对象,同样符合上面的规则:

Object函数既然是函数,那生成它的函数自然是Function函数咯:
>Object.__proto__ === Function.prototype
true

18.__proto__和prototype[prototype是谁]
解析:
对象的__proto__属性是从生成它的函数的prototype那里得来的,那函数的prototype又是谁?

一般函数默认的prototype是系统自动生成的一个对象:
>function fn(){}
>typeof fn.prototype
"object"
>fn.prototype
{constructor: ƒ}constructor: ƒ fn()__proto__: Object>fn.prototype.constructor === fn
true
>fn.prototype.__proto__ === Object.prototype
true

一般函数默认的prototype是一个类型为"object"的对象,它有两个属性:constructor和__proto__。其中constructor属性指向这个函数自身,__proto__属性指向Object.prototype,这说明一般函数的prototype属性是由Object函数生成的。

19.__proto__和prototype[特殊情况]
解析:
特殊情况主要指的是Object函数和Function函数。Object.prototype如下所示:

>typeof Object.prototype
"object"
>Object.prototype
{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}constructor: ƒ Object()hasOwnProperty: ƒ hasOwnProperty()isPrototypeOf: ƒ isPrototypeOf()propertyIsEnumerable: ƒ propertyIsEnumerable()toLocaleString: ƒ toLocaleString()toString: ƒ toString()valueOf: ƒ valueOf()__defineGetter__: ƒ __defineGetter__()__defineSetter__: ƒ __defineSetter__()__lookupGetter__: ƒ __lookupGetter__()__lookupSetter__: ƒ __lookupSetter__()get __proto__: ƒ __proto__()set __proto__: ƒ __proto__()

可以看到Object函数的prototype属性也是一个类型为"object"的对象,但和一般函数的默认prototype属性不一样的是,它多了一大堆方法,这些方法都是JavaScript对象的系统默认方法。Object函数的prototype属性里没有__proto__属性,试着把它的__proto__属性打出来看看:

>Object.prototype.__proto__
null

Object.prototype.__proto__===null,这就是JavaScript原型链的终点了。为什么要这样设定呢?
typeof Object.prototype===“object”,说明它是一个Object对象,如果它由Object函数生成,于是按照上面的通用规则,就该是Object.prototype.__proto__===Object.prototype。这样问题就出现了,Object.prototype.__proto__属性指向了它自身,这样以__proto__属性构成的原型链就再也没有终点。所以为了让原型链有终点,在原型链的最顶端,JavaScript规定了Object.prototype.__proto__===null
接下来看看Function函数,如下所示:

>typeof Function.prototype
"function"

Function函数的prototype属性是一个"function"类型的对象,而不像其它函数是类型为"object"的对象。那是个什么样的函数呢?

>Function.prototype
ƒ () { [native code] }

函数内部是[nativecode],也就是系统编译好的二进制代码函数,这就暂时没法深究了。现在来看看最关心的__proto__属性:

>Function.prototype.__proto__
{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}constructor: ƒ Object()hasOwnProperty: ƒ hasOwnProperty()isPrototypeOf: ƒ isPrototypeOf()propertyIsEnumerable: ƒ propertyIsEnumerable()toLocaleString: ƒ toLocaleString()toString: ƒ toString()valueOf: ƒ valueOf()__defineGetter__: ƒ __defineGetter__()__defineSetter__: ƒ __defineSetter__()__lookupGetter__: ƒ __lookupGetter__()__lookupSetter__: ƒ __lookupSetter__()get __proto__: ƒ __proto__()set __proto__: ƒ __proto__()

看起来很像是Object.prototype,验证如下所示:

>Function.prototype.__proto__ === Object.prototype
true

按照最开始提出的通用规则,一个"function"类型的对象,应该是由Function函数生成的,那它的prototype属性应该指向Function.prototype,也就是Function.prototype.__proto__===Function.prototype。和Object函数同样的问题出现了:循环引用。所以JavaScript规定Function.prototype.__proto__===Object.prototype,这样既避免了出现循环引用,又让__proto__构成的原型链指向了唯一的终点:Object.prototype.__proto__===null

20.JavaScript原型链系统图
解析:

21.ObjectId构成
解析:MongoDB采用了一个称之为ObjectId的类型来做主键。ObjectId是一个12字节的BSON类型字符串。按照字节顺序,如下所示:
[1]4字节:UNIX时间戳
[2]3字节:表示运行MongoDB的机器
[3]2字节:表示生成此_id的进程
[4]3字节:由一个随机数开始的计数器生成的值

22.splice()
解析:splice()方法向/从数组中添加/删除项目,然后返回被删除的项目。语法如下所示:

arrayObject.splice(index,howmany,item1,.....,itemX)

说明:splice()方法可删除从index处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从arrayObject中删除了元素,则返回的是含有被删除的元素的数组。

23.cheerio.load
解析:var $ = cheerio.load(html,{decodeEntities:false});如下所示:
[1]可以创建一个和jQuery选择器用法差不多的选择器$。
[2]load函数的第一个参数html就是之前http.get方法中所获得的数据;第二个参数可选,主要是用来设置格式,比如decodeEntities:false设置了不会出现中文乱码。

24.PEM
解析:PEM是OpenSSL和许多其它SSL工具的标准格式,OpenSSL使用PEM文件格式存储证书和密钥。

25.pm2 status
解析:PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。如下所示:
[1]启动一个应用:pm2 start app.js
[2]停止:pm2 stop app_name|app_id
[3]删除:pm2 delete app_name|app_id
[4]重启:pm2 restart app_name|app_id
[5]停止所有:pm2 stop all
[6]查看所有进程:pm2 list
[7]查看所有进程状态:pm2 status
[8]查看某一个进程信息:pm2 describe app_name|app_id

参考文献:
[1]JavaScript标准库:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects
[2]Moment.js[JavaScript日期处理类库]:http://momentjs.cn/
[3]pm2:http://pm2.keymetrics.io/
[4]Moment.js文档:http://momentjs.cn/docs/

Node.js学习日记3相关推荐

  1. node.js学习笔记

    # node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...

  2. node.js学习笔记14—微型社交网站

    node.js学习笔记14-微型社交网站 1.功能分析 微博是以用户为中心,因此需要有注册和登录功能. 微博最核心的功能是信息的发表,这个功能包括许多方面,包括:数据库访问,前端显示等. 一个完整的微 ...

  3. Node.js学习笔记8

    Node.js学习笔记8 HTTP服务器与客户端 Node.js的http模块,封装了一个高效的HTTP服务器和一个简易的HTTP客户端 http.server是一个基于事件的HTTP服务器,核心由N ...

  4. node.js学习笔记5——核心模块1

    node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...

  5. 《写给PHP开发者的Node.js学习指南》一2.2 预定义的PHP变量

    本节书摘来自异步社区<写给PHP开发者的Node.js学习指南>一书中的第2章,第2.1节,作者[美]Daniel Howard,更多章节内容可以访问云栖社区"异步社区" ...

  6. node.js学习总结:node.js的内置模块,模块化,npm与包 express,前后端身份认证 JWT认证机制

    node.js学习总结 什么是node.js node.js的内置模块 fs系统模块 path路径模块 http模块 模块化 npm与包 express express路由 express+mysql ...

  7. node.js 学习笔记(二)模板引擎和C/S渲染

    node.js 学习笔记(二)模板引擎和C/S渲染 文章目录 node.js 学习笔记(二)模板引擎和C/S渲染 一.初步实现Apache功能 1.1 使用模板引擎 1.2 在 node 中使用模板引 ...

  8. Node.js 学习 ——nodemon 运行报错解决

    Node.js 学习 --nodemon 运行报错解决 报错记录 nodemon : 无法加载文件 C:\Users\Administrator.DESKTOP-0RUBNO7\AppDat on.p ...

  9. 千锋Node.js学习笔记

    千锋Node.js学习笔记 文章目录 千锋Node.js学习笔记 写在前面 1. 认识Node.js 2. NVM 3. NPM 4. NRM 5. NPX 6. 模块/包与CommonJS 7. 常 ...

最新文章

  1. linux fedor 安装 gcc,fedora中如何安装gccsense
  2. 铁线蕨算法(Adiantum)为低端智能手机提供磁盘加密服务
  3. Activity平移动画
  4. 数据结构 树的链式存储(二叉表示法)
  5. Netty入门系列(1) --使用Netty搭建服务端和客户端
  6. jasper(二):制作饼状图和柱状图
  7. 运用PFA的路灯指示牌GUI程序
  8. LeetCode OJ -Happy Number
  9. 分布式离线计算—HiveSQL
  10. php面试中的问题,十个值得深思的PHP面试问题
  11. WebView退出时停止视频播放
  12. 18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理
  13. java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码
  14. mkdir: Permission denied: user=root, access=WRITE
  15. JPA 多条件、多表查询
  16. 设计素材|美丽的几何和多边形背景纹理
  17. net core 通过js打印集合(创建树)
  18. Vmware报错 This product may not be installed on a computer that has Microsoft HyperV installed. 解决
  19. 1965: 求矩阵中最小元素及其位置
  20. 好用的python工具_Python哪些工具好用?老男孩Python开发

热门文章

  1. 什么是高防CDN?高防CDN有哪些作用?
  2. 京东安联臻爱无限2020,可以带“病”投保的百万医疗险!
  3. 汽车DC/DC简单介绍
  4. kafka高性能的原因
  5. 实在智能RPA学院|切切切词!算法TopWORDS的原理及实现
  6. python多用户B2C商城系统毕业设计开题报告
  7. 2022 极术通讯-搭载“星辰”处理器的聆思科技CSK6视觉AI开发套件开发概览
  8. tuxera NTFS2022让磁盘读写管理格式化更轻松
  9. Draggable拖拽+Collapse使用(不一样的手风琴)
  10. OneNet数据可视化View页面上的数据过滤器使用介绍