node.js学习笔记01-cmd0node0全局数据0异步事件

Author:Mr.柳上原

  • 付出不亚于任何的努力
  • 愿我们所有的努力,都不会被生活辜负
  • 不忘初心,方得始终

Nodejs
node规范:
CommonJS
CommonJS是一种规范,NodeJS是这种规范的实现

AMD
A-ajax,是CommonJS规范的延伸,是一种异步的,需要对应的模块支持(requirejs)

CMD
是CommonJS规范的延伸,模块的定义和引入

控制台的使用
cmd 打开控制台(黑窗口)

cmd命令:
ls(查看当前文件夹内的文件)
cd 文件名(进入此文件夹)

node命令:
node -v (Node版本号)
node 文件名(运行当前文件)
node ./文件名/文件名(运行当前文件夹的xxx文件夹下的xxx文件)

nodejs的使用
node的顶层对象是global(全局),不再是window

导入模块
文件一.js:
let obj1 = require("./文件二"); 
./表示当前目录,../表示上层目录,/表示根目录
注意点:导入的文件后缀为js的时候,.js可以不用写,导入文件时,文件名前面必须加./,只有node官方的核心模块和网上下载的模块可以不用加./

定义跨文件的全局变量
文件一.js:
console.log(global.xxx); // 123

文件二.js:
global.xxx = 123; 
把需要的属性挂载到global下面
node会把每个导入的文件包装到一个函数里function(){},所以导入的文件的数据都是局部数据

获取跨文件的数据
文件一.js:
console.log(obj1); // {123, function (){}}

文件二.js:
module.exports = {} 
module.exports里的值默认是对象,require导入的其实是文件里的module.exports的值

多个值的写法一:扩展属性或键值对
module.exports.num = 123;
module.exports.fn = function (){}
module.exports = {
num: 1,
fn: function (){}
}

多个值的写法二:exports
node底层global.exports = module.exports,exports = module.exports
exports.num = 123;
exports.fn = function (){}

nodejs的执行
文件一.js:
在控制台里,进入当前js所在的文件夹
node 文件一 回车 // 后缀.js可以不用写

nodejs把所有的行为抽象成为事件
nodejs用来执行代码的过程叫做事件循环
while(true){} 
相当于node在执行的开始生成了一个无限循环的while

node的异步事件处理:
setImmediate(() => { // setImmediate的回调函数是异步
console.log(1);
})
promise.resolve("2") // promise是同步
.then(res => { // then的回调函数是异步
console.log(res);
})
process.nextTick(() => { // process的回调函数是异步
consloe.log(3);
})
console.log(4); // 同步
js全部的代码都是同步的,真正的异步是事件的回调函数

事件队列
macro-task:script(全部的代码),setInterval,setTimeout,setImmediate,I/O // setInterval和setTimeout优先级相同,默认时间下谁先写随先执行

micro-task:process.nextTick,promise(then) // 优先级

第一步:script(全部的代码)
第二步:执行清空micro-task里的所有代码
第三步:执行macro-task的下一个代码
第四步:再次执行清空micro-task里的所有代码
第五步:执行macro-task的下下一个代码
第六步:再再次执行清空micro-task里的所有代码
......

你可能感兴趣的:(node.js学习笔记01-cmd0node0全局数据0异步事件)