前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >node.js学习笔记01-cmd0node0全局数据0异步事件

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

作者头像
Mr. 柳上原
发布于 2019-04-09 02:47:10
发布于 2019-04-09 02:47:10
99100
代码可运行
举报
运行总次数: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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
导入模块
文件一.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里的所有代码 ......

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.03.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Node子进程async/await方法不正常执行的思考和解决
前段时间,我做了一个node模块node-multi-worker ,希望通过这个模块让node能够脱离单线程的限制,具体的使用可以看一下上面的链接。其思路就是注册任务后,分出子进程,然后在主进程需要执行任务时,向reactor子进程发送命令,而reactor收到命令后分配到worker子进程在执行完成后返回结果到主进程。这篇文章主要是为了跟大家分享一下我在开发过程中,遇到的一个问题,如何解决以及对相关知识的一个挖掘。
全栈程序员站长
2022/06/29
6890
js模块化编程之彻底弄懂CommonJS和AMD/CMD!(转)
答:因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套!
jojo
2019/03/12
1.8K0
多图详解不同环境下的EventLoop执行机制
也许对于浏览器中的 EventLoop 大多数开发者已经耳熟能详了,掌握 EventLoop 它对于每一个前端开发者的重要性不言而言。
19组清风
2022/03/25
6750
多图详解不同环境下的EventLoop执行机制
js线程机制的介绍和练习
给定的几行代码,我们需要知道其输出内容和顺序。JavaScript是一门单线程语言,但有其独特的线程机制 热身代码: setTimeout(function(){ console.log('定时器开始啦') }); new Promise(function(resolve){ console.log('马上执行for循环啦'); for(var i = 0; i < 10000; i++){ i == 99 && resolve(); } }).then(fu
卡少
2018/05/16
8560
JavaScript任务队列的执行
本文介绍了JavaScript任务队列的执行,包括事件循环(Event Loop)机制、JavaScript中的异步任务、JavaScript中的任务队列(Task Queue)以及JavaScript中的任务队列执行流程。同时,还探讨了JavaScript中的异步任务执行机制,包括定时器函数、Promise、MutationObserver、process.nextTick等,以及任务队列中的任务执行顺序。此外,还介绍了JavaScript中的任务队列管理机制,包括Macro-task和Micro-task以及UI Rendering。
IMWeb前端团队
2018/01/08
1.3K0
我已经迷失在事件环(event-loop)中了【Nodejs篇】
我第一次看到他事件环(event-loop)的时候,我是一脸懵,这是什么鬼,是什么循环吗,为什么event还要loop,不是都是一次性的吗?
小美娜娜
2019/04/04
8070
【前端】Node.js学习笔记
只是改变了形参exports的引用(/指向),而实际的module.exports还是指向空对象{}
zhaokang555
2023/10/17
1470
一杯茶的时间,上手 Node.js
Node.js 太火了,火到几乎所有前端工程师都想学,几乎所有后端工程师也想学。一说到 Node.js,我们马上就会想到“异步”、“事件驱动”、“非阻塞”、“性能优良”这几个特点,但是你真的理解这些词的含义吗?这篇教程将带你快速入门 Node.js,为后续的前端学习或是 Node.js 进阶打下坚实的基础。
一只图雀
2020/04/07
1.1K0
Vue异步更新队列及nextTick
vue通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM。Vue的dom更新是异步的,当数据发生变化,vue并不是里面去更新dom,而是开启一个队列。跟JavaScript原生的同步任务和异步任务相同。
wade
2020/04/24
8010
面试题:说说事件循环机制(满分答案来了)
JavaScript代码的执行过程中,除了依靠函数调用栈来搞定函数的执行顺序外,还依靠任务队列(task queue)来搞定另外一些代码的执行。整个执行过程,我们称为事件循环过程。一个线程中,事件循环是唯一的,但是任务队列可以拥有多个。任务队列又分为macro-task(宏任务)与micro-task(微任务),在最新标准中,它们被分别称为task与jobs。
winty
2020/03/19
4.1K0
面试题:说说事件循环机制(满分答案来了)
Node.js学习笔记(二)——Node.js模块化、文件读写、环境变量
(1)、在浏览器端使用var或不使用关键字定义的变量属于全局作用域,也就是可以使用window对象访问。
张果
2022/09/28
6.4K0
Node.js学习笔记(二)——Node.js模块化、文件读写、环境变量
基础 | 深入核心,详解事件循环机制
作者|波同学 原文|http://www.jianshu.com/p/12b9f73c5a4f JavaScript的学习零散而庞杂,因此很多时候我们学到了一些东西,但是却没办法感受到自己的进步,甚至过了不久,就把学到的东西给忘了。为了解决自己的这个困扰,在学习的过程中,我一直试图在寻找一条核心的线索,只要我根据这条线索,我就能够一点一点的进步。 前端基础进阶正是围绕这条线索慢慢展开,而事件循环机制(Event Loop),则是这条线索的最关键的知识点。所以,我就马不停蹄的去深入的学习了事件循环机制,并总结
用户1097444
2022/06/29
6680
基础 | 深入核心,详解事件循环机制
并发模型与事件循环
默认安装到项目目录下,-g安装到全局,-save在package.json写入dependencies字段,-save-dev相应写入devDependencies字段。
gojam
2019/09/09
8040
并发模型与事件循环
小白理解 JavaScript 执行机制
所以,为了避免复杂性,从一诞生,JavaScript就是单线程,这已经成了这门语言的核心特征,将来也不会改变。
前端魔法师
2021/01/27
6390
JavaScript——事件循环机制
JavaScript的任务分为两种同步和异步,它们的处理方式也各自不同,同步任务是直接放在主线程上排队依次执行,异步任务会放在任务队列中,若有多个异步任务则需要在任务队列中排队等待,任务队列类似于缓冲区,任务下一步会被移到调用栈然后主线程执行调用栈的任务。
思索
2024/08/16
1850
JavaScript——事件循环机制
JavaScript中的Event Loop
首先 创建Promise实例(executor)是同步执行的,Promise.then是异步执行的。
上山打老虎了
2022/06/14
3270
JavaScript中的Event Loop
破阵九解:Node和浏览器之事件循环/任务队列/异步顺序/数据结构
浏览器中,涉及的异步API有:Promise, setTomeOut,setImmediate
啦啦啦321
2019/10/23
1.2K0
破阵九解:Node和浏览器之事件循环/任务队列/异步顺序/数据结构
深入理解JavaScript的Event-Loop机制
JavaScript 是单线程的,只有JS引擎线程执行事件队列的事件。为了防止代码阻塞,JavaScript使用了异步执行机制。
伯爵
2019/10/14
6610
【读书笔记】《深入浅出 Node.js》
[《深入浅出 Node.js》] 读书笔记。 # 缘起 最初的目标是写一个基于事件驱动、非阻塞 I/O 的 Web 服务器。考虑高性能、符合事件驱动、没有历史包袱选择了 JavaScript。 # 特点 异步 I/O 事件与回调函数 事件优势:轻量级、松耦合、只关注事务点 单线程 优点 无需像多线程在意状态同步问题,没有死锁的存在 无线程上下文交换带来的性能上的开销 弱势 无法利用多核 CPU 错误会引起整个应用退出,应用的健壮性值得考验 大量计算占用 CPU 导致无法继续调用异步 I/O Node
Cellinlab
2023/05/17
8720
【读书笔记】《深入浅出 Node.js》
前端模块化-CommonJS,AMD,CMD,ES6
随着 JavaScript 工程越来越大,团队协作不可避免,为了更好地对代码进行管理和测试,模块化的概念逐渐引入前端。模块化可以降低协同开发的成本,减少代码量,同时也是“高内聚,低耦合”的基础。
李振
2021/11/26
4270
相关推荐
Node子进程async/await方法不正常执行的思考和解决
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档