.js文件怎么打开(不会还在用浏览器查看console吧利用Node运行JS)

知识储备JS是单线程语言 JS是单线程的脚本语言,即在同一时间只能做一件事。为了协调时间/用户交互/脚本/UI渲染和网络处理等行为,防止主线程堵塞,这才有了事件循环机制。 JS作为主要运行...

不会还在用浏览器查看console吧?利用Node运行JS,助力**效率

知识储备JS是单线程语言

JS是单线程的脚本语言,即在同一时间只能做一件事。为了协调时间/用户交互/脚本/UI渲染和网络处理等行为,防止主线程堵塞,这才有了事件循环机制。

JS作为主要运行在浏览器的脚本语言,主要的工作之一就是操作DOM。若JS有两个线程的话,那么如果这两个线程对同一DOM进行操作,这样浏览器就会错乱,无法判断这两个线程的优先级。

因为JS是单线程语言,当遇到多个任务时,不可能一直等待任务完成,这会造成巨大的资源浪费。

执行栈

所有任务都在主线程上执行,形成执行栈

任务队列

存放异步任务的运行结果

new Promise是同步任务

Promise.resolve().then()是微任务

macro-task(宏任务)

scripsetTimeoutsetIntervalsetImmediateI/O操作UI 渲染

micro-task(微任务)

process.nextTickPromiseAsync/AwaitMutationObserver主线程

主线程规定了要执行执行栈中的哪个事件

利用Node运行JS,助力**效率

众所周知,Node 是一个JS运行**,浏览器也是一个运行**,JS代码写好之后需要放到浏览器里面去运行,脱离了浏览器是没有办法运行的。

但是,现在不仅浏览器能运行JS,Node也能运行JS。

新建一个obj.js文件,在里面写JS代码:

// JS复制或删除对象的部分属性const { console } = require("console")// 需求:数据复制功能,新的数据只需要源数据的部分属性。// 以月度目标为例,源数据为:let monthlyTarget = { life: 'keep early hours', work: 'increase of efficiency', sport: 'Half an hour a day', read: 'an hour a day', food: 'cook by yourself'}// 先复制所有字段,再删除不要的字段// 注意:复制时不要直接用 monthlyTarget=newMonthlyTarget ,这样删除newMonthlyTarget的属性时,monthlyTarget的属性也会被删除。const newMonthlyTarget = { ...monthlyTarget }console.log(newMonthlyTarget)delete newMonthlyTarget.foodconsole.log("newMonthlyTarget",newMonthlyTarget)

打开终端输入运行命令即可。

像平时写练手的 Demo 就可以直接新建一个.js文件,然后用 Node 去运行,就不需要去浏览器查阅了。

不会还在用浏览器查看console吧?利用Node运行JS,助力**效率

Node.js采用V8作为js的解析引擎,I/O处理使用自己设计的libuv。

macro-task(宏任务)

scripsetTimeoutsetIntervalsetImmediateI/O操作

micro-task(微任务)

process.nextTick(在微任务队列执行之前执行)new Promise().then(回调)Node.js的运行机制V8引擎解析JS脚本解析后的代码,调用Node APIlibuv库负责Node API的执行。它将不同的任务分配给不同的线程,形成一个事件循环,以异步的**将任务的执行结果返回给V8引擎。V8引擎再将结果返回给用户。结尾

每个人都有自己的花期,我是说,我们都会等到鲜花绽放的那一天。在那之前,要做的是:储备好养分~

下次见!

不会还在用浏览器查看console吧?利用Node运行JS,助力**效率

  • 发表于 2022-12-01 16:22:14
  • 阅读 ( 87 )
  • 分类:科技

0 条评论

请先 登录 后评论
游金柱
游金柱

643 篇文章

你可能感兴趣的文章

相关问题