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里的所有代码 ......

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维经验分享

Elasticsearch6.x之Kibana插件安装-yellowcong

12510
来自专栏机器之心

网络新闻真假难辨?机器学习来助你一臂之力

拥有超过一百万粉丝的认证用户的推特网络。圆圈(节点)代表用户,连接圆圈的线条代表一个用户「关注」另一个用户。颜色表示通过模块化聚类确定的类别。

13540
来自专栏汇智网教程

eosjs-ecc中文文档

eosjs-ecc是eos官方处理密钥和签名的javascript开发包。访问地址:eosjs-ecc中文手册。

34540
来自专栏运维经验分享

Prometheus+Grafana监控MySQL

$ yum install go $  go version go1.6.3 linux/amd64

31130
来自专栏C/C++基础

一致性Hash

Hash(哈希),亦称作散列或杂凑,指将输入通过散列算法变换成对应的散列值。这种转换是一种压缩映射,也就是说散列值的空间通常远小于输入的空间,不同的输入可能会散...

24810
来自专栏汇智网教程

EOS主网数据同步指南

本文以ubuntu16.04为例介绍EOS节点软件的安装方法,其他操作系统 可参考官网文档。

47210
来自专栏java一日一条

HashMap和TreeMap的内部结构

1、基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashM...

13830
来自专栏爱明依

java 泛型类的定义和封装实例

为了让一个java类 在不同的类型都能在程序中调用,我们常常会将此类定义为泛型类,重要特点是:类的作用是通用的,仅此我们需要传入的类型不一样。

30510
来自专栏前端杂货铺

一步步学会用docker部署应用(nodejs版)

docker是一种虚拟化技术,可以在内核层隔离资源。因此对于上层应用而言,采用docker技术可以达到类似于虚拟机的沙盒环境。这大大简化了应用部署,让运维人员无...

22730
来自专栏斜述视角

小世界网络

在网络理论 的研究中,复杂网络是由数量巨大的节点 和节点之间错综复杂的关系共同构成的网络 结构。用数学的语言来说,就是一个有着足够复杂的拓扑 结构特征的图 。复...

60220

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励