nodejs和javascript差异

  1. js中的顶层对象:window
  2. node中顶层对象:global

nodejs中的模块

一个文件就是一个模块,每个模块都有自己的作用域。我们使用var来声明的变量并不是全局的,而是属于当前模块下。

1
2
3
4
## index.js
var a = 100;
global.a = 200;
console.log(a); //100

__filename:

当前文件被解析过后的绝对路径。eg: e:/web/index.js

该属性并非全局属性,属于模块作用域

__dirname

当前文件所在目录被解析过后的绝对路径。eg: e:/web

该属性并非全局属性,属于模块作用域

路径

绝对路径

相对路径:不加.的话是加载核心模块;./相同目录下的

首先按照加载的模块的文件名称查找,如果没找到会在模块名称后加上.js的后缀进行查找

require(“./3”)–>是否有3–>是否有3.js–>3.json–>3.node

process

是一个全局对象:process==global.process, 对当前运行的程序的进程进行访问和控制

返回的是module.exports

node.js:单线程 异步 驱动

php运行:本身不支持多线程,服务器Apache支持:初始化150个线程给php ,一万人访问,去线程池拿线程,用完放回,别人再拿

nodejs运行:单线程,那一万人访问怎么办?采用异步的方式

第一个人操作DB,就在内存中开辟一块空间,主线程到第二个人,上传

async

框架:express,koa,hapi

assert模块提供了一系列的断言测试

assert.equal(actual, expected[, message])

判断实际值 actual 和期望值 expected 是否相等。