专栏首页菜鸟前端工程师node.js学习笔记01-cmd0node0全局数据0异步事件

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 条评论
登录 后参与评论

相关文章

  • JavaScript学习笔记017-数值方法0Math0定时器

    Mr. 柳上原
  • JavaScript学习笔记023-对象方法0包装对象0静态属性

    Mr. 柳上原
  • JavaScript学习笔记019-原生js运动框架0时间运动框架

    Mr. 柳上原
  • 解决linux系统中运行node进程却无法杀死进程的问题

    下面先给大家介绍下linux系统中运行node进程无法杀死进程,具体内容如下所示:

    砸漏
  • node.js调用webservice遇到的问题

    Marser
  • Node.js 开发者,新年快乐!

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时

    五月君
  • 打开文件open()函数的使用方法详解

    头文件:#include <sys/types.h>    #include <sys/stat.h>    #include <fcntl.h> 定义函数...

    _gongluck
  • mac里为什么我设置标签的文件不显示在相应标签…

    我之前用“OSCleaner”清理了一下mac,标签里的文件都消失了,但是文件显示的是标记过的后来我在mac里标记了一个文件到蓝色标签“视频素材”里,但是进了那...

    砸漏
  • Deno 1.0 发布了,它用 Rust 写就

    作为开发发 Node.js 的大神程序员 Ryan,最近又推出了一个新的框架叫做 Deno,它的名字简写自 Destroy Node。从名字上就可以看出来,这个...

    程序员LIYI
  • Linux:chattr命令和chgrp命令

    文 | 云豆 图 | 来源网络 云豆贴心提醒,本文阅读时间5分钟,文末有秘密! Linux chattr命令 Linux chattr命令用于改变文件...

    小小科

扫码关注云+社区

领取腾讯云代金券