首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Node.js模块加载机制

7、Node.js模块加载机制 (1)模块查找规则-当模块拥有路径但没有后缀时 image.png require方法根据模块路径查找模块,如果是完整路径,直接引入模块。...如果模块后缀省略,先找同名JS文件再找同名JS文件夹 如果找到了同名文件夹,找文件夹index.js 如果文件夹没有index.js就会去当前文件夹package.json文件查找main选项入口文件...如果找指定入口文件不存在或者没有指定入口文件就会报错,模块没有被找到 (2)模块查找规则-当模块没有路径且没有后缀时 Node.js会假设它是系统模块 Node.js会去node_modules文件夹...首先看是否有该名字JS文件 再看是否有该名字文件夹 如果是文件夹看里面是否有index.js 如果没有index.js查看该文件夹package.jsonmain选项确定模块入口文件 否则找不到报错...客户端:在浏览器运行部分,就是用户看到并与之交互界面程序。使用HTML、CSS、JavaScript构建。 服务器端:在服务器运行部分,负责存储数据和处理应用逻辑。

1.8K20

JsGC机制

JsGC机制Js七种基本类型引用类型Object变量其占据内存空间大且大小不固定,在堆内存实际存储对象,在栈内存存储对象指针,对于对象访问是按引用访问。...,从而决定是否需要进行内存回收,在Js主要有引用计数与标记清除两种垃圾回收算法。...引用计数算法 对于引用计数垃圾回收算法,把对象是否不再需要简化定义为该对象有没有其他变量或对象引用到它,如果没有引用指向该对象,该对象将被垃圾回收机制回收。...所有现代浏览器都使用了标记清除垃圾回收算法,所有对JavaScript垃圾回收算法改进都是基于标记清除算法改进。 垃圾收集器在运行时候会给存储在内存所有变量都加上标记。...然后,它会去掉运行环境变量以及被环境变量所引用变量标记。 此后,依然有标记变量就被视为准备删除变量,原因是在运行环境已经无法访问到这些变量了。

77720
您找到你想要的搜索结果了吗?
是的
没有找到

Node.js模块加载机制

/find.js') ; require(' ./find') ; require方法根据模块路径查找模块,如果是完整路径。直接引入模块。...如果模块后缀省略,先找同名JS文件再找同名JS文件夹 如果找到了同名文件夹,找文件夹index.js 如果文件夹没有index.js就会去当前文件夹package.json文件查找...main选项入口文件 如果找指定入口文件不存在或者没有指定入口文件就会报错,模块没有被找到 2....模块查找规则-当模块没有路径且没有后缀时 require(' find') ; Node.js会假设它是 系统模块 Node.js会去node_ modules文件夹 首先看是否有该名字...JS文件 再看是否有该名字文件夹 如果是文件夹看里面是否有indexjs 如果没有index.js查看该文件夹package.jsonmain选项确定模块入口文件 否则找不到报错

1.8K20

Node.js模块加载机制

/find.js') ; require(' ./find') ; require方法根据模块路径查找模块,如果是完整路径。直接引入模块。...如果模块后缀省略,先找同名JS文件再找同名JS文件夹 如果找到了同名文件夹,找文件夹index.js 如果文件夹没有index.js就会去当前文件夹package.json文件查找...main选项入口文件 如果找指定入口文件不存在或者没有指定入口文件就会报错,模块没有被找到 2.模块查找规则-当模块没有路径且没有后缀时 require(' find') ; Node.js...会假设它是 系统模块 Node.js会去node_ modules文件夹 首先看是否有该名字JS文件 再看是否有该名字文件夹 如果是文件夹看里面是否有indexjs...如果没有index.js查看该文件夹package.jsonmain选项确定模块入口文件 否则找不到报错

1.3K30

深入解析JS工程逆反爬机制

本文深入解析了JS逆工程反爬机制,并提供了解决方案。 JS逆工程原理是通过分析网页JavaScript代码,还原出网页动态生成过程,从而获取最终内容。...为了解决JS逆工程反爬机制,我们可以模拟JS执行环境,使得爬虫能够执行网页JavaScript代码,并获取最终内容。...执行环境 为了解决JS逆工程反爬机制,我们可以模拟JS执行环境,使得爬虫能够执行网页JavaScript代码,并获取最终内容。...其他解决方案 除了模拟JS执行环境,还有其他一些解决方案可以应对JS逆工程反爬机制。...在实际应用,我们可以根据具体需求选择合适解决方案。无论是模拟JS执行环境还是使用其他工具,我们都可以克服JS逆工程反爬机制,获取到所需数据。

23130

Js异步机制实现

Js异步机制 JavaScript是一门单线程语言,所谓单线程,就是指一次只能完成一件任务,如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。...,我在主线程设置了一个非常大循环来阻塞Js主线程,注意我并没有设置一个死循环,假如我在此处设置死循环来阻塞主线程,那么设置setTimeout回调函数将永远不会执行,此外由于渲染线程与JS引擎线程是互斥...Js实现异步是通过一个执行栈与一个任务队列来完成异步操作,所有同步任务都是在主线程上执行,形成执行栈,任务队列存放各种事件回调(也可以称作消息),当执行栈任务处理完成后,主线程就开始读取任务队列任务并执行...Event Loop 主线程从任务队列读取事件,这个过程是循环不断,所以整个这种运行机制又称为Event Loop,Event Loop是一个执行模型,在不同地方有不同实现,浏览器和NodeJS...等操作 当Js执行时,进行如下流程 首先将执行栈中代码同步执行,将这些代码异步任务加入后台线程 执行栈同步代码执行完毕后,执行栈清空,并开始扫描微队列 取出微队列队首任务,放入执行栈执行,此时微队列是进行了出队操作

2.7K20

JS运行机制

代码块: JS代码块是指由标签分割代码段。JS是按照代码块来进行编译和执行,代码块间相互独立(即就算代码块1出错,但不影响代码块2加载和执行),但变量和方法共享。...同样情况也发生在外链JS文件,浏览器必须先花时间下载外链文件代码,然后解析并执行它,在这个过程,页面的渲染和用户互交完全被阻塞。...JavaScript任务列队: JS任务可以分为两种:一种是同步任务,另一种是异步任务。注意,只有主线程空了,才会去读取"任务队列",这就是JS运行机制,这个过程会不断重复。...定时器功能主要由setTimeout()和setInterval()这两个函数来完成,它们内部运行机制完全一样,区别在于前者指定代码是一次性执行,后者则为反复执行。...(3) 上面代码执行结果是3=>2,因为只有在执行完第二行以后,系统才会去执行"任务队列"回调函数。

2.4K20

js --- 执行机制

JS为什么是单线程?  JS最初被设计用在浏览器,那么想象一下,如果浏览器JS是多线程。...那么现在有2个进程,process1 process2,由于是多进程JS,所以他们对同一个dom,同时进行操作。...process1 删除了该dom,而process2 编辑了该dom,同时下达2个矛盾命令,浏览器究竟该如何执行呢? 2 JS为什么需要异步?...如果JS不存在异步,只能自上而下执行,如果上一行解析时间很长,那么下面的代码就会被阻塞。 对于用户而言,阻塞就意味着"卡死",这样就导致了很差用户体验 3 JS单线程又是如何实现异步呢?   ...是通过事件循环(event loop),理解了event loop机制,就理解了JS执行机制

6.2K20

JS执行机制

JS 是单线程 JavaScript语言一大特点就是单线程,也就是说,同一个时间只能做一件事。...这样所导致问题是: 如果 JS 执行时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞感觉。 2....于是,JS 中出现了同步任务和异步任务。 同步 前一个任务结束后再执行后一个任务,程序执行顺序与任务排列顺序是一致、同步。...同步任务指的是: 在主线程上排队执行任务,只有前一个任务执行完毕,才能执行后一个任务; 异步任务指的是: 不进入主线程、而进入”任务队列”任务,当主线程任务运行完了,才会从”任务队列...JS执行机制(事件循环) ? ? 4.

6.9K30

js异步机制

渲染线程在执行任务时候,JS引擎线程会被挂起。因为JS可以操作DOM,若在渲染JS处理了DOM,浏览器可能就不知所措了。 2....JS引擎线程用来执行栈同步任务,当所有同步任务执行完毕后,栈被清空,然后读取消息队列一个待处理任务,并把相关回调函数压入栈,单线程开始执行新同步任务。...JS引擎线程从消息队列读取任务是不断循环,每次栈被清空后,都会在消息队列读取新任务,如果没有新任务,就会等待,直到有新任务,这就叫事件循环。...发起异步任务后,由AJAx线程执行耗时异步操作,而JS引擎线程继续执行堆其他同步任务,直到堆所有异步任务执行完毕。...然后,从消息队列依次按照顺序取出消息作为一个同步任务在JS引擎线程执行,那么AJAX回调函数就会在某一刻被执行调用执行。

2.5K40

JS执行机制

JS执行机制 以下代码执行结果是什么?...这样所导致问题是: 如果 JS 执行时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞感觉。...比如做饭异步做法,我们在烧水同时,利用这10分钟,去切菜,炒菜。 他们本质区别: 这条流水线上各个流程执行顺序不同。 1.3 JS执行机制(事件循环) 1. 先执行执行栈同步任务。...异步任务(回调函数)放入任务队列。 3. 一旦执行栈所有同步任务执行完毕,系统就会按次序读取任务队列异步任务,于是被读取异步任 务结束等待状态,进入执行栈,开始执行。  ...由于主线程不断重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环( event loop)。

7.4K20

你不知道js关于this绑定机制解析

前言 最近正在看《你不知道JavaScript》,里面关于this绑定机制部分讲特别好,很清晰,这部分对我们js使用也是相当关键,并且这也是一个面试高频考点,所以整理一篇文章分享一下这部分内容...,可以在不同对象复用函数identify,不用针对每个对象编写一个新函数。...规则:我们可以通过apply、call、bind将函数this绑定到指定对象上。...new绑定: 书中提到:在js,实际上并不存在所谓'构造函数',只有对于函数'构造调用'。 new时候会做哪些事情: 创建一个全新对象。...规则: 箭头函数`this`继承于它外面第一个不是箭头函数函数`this`指向。

40010

JS执行机制

JS 是单线程 JavaScript语言一大特点就是单线程,也就是说,同-个时间只能做一件事。...这样所导致问题是: 如果 JS 执行时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞感觉。 2....于是,JS 中出现了同步任务和异步任务。 同步 前一个任务结束后再执行后一个任务,程序执行顺序与任务排列顺序是一致、同步。...同步任务指的是: 在主线程上排队执行任务,只有前一个任务执行完毕,才能执行后一个任务; 异步任务指的是: 不进入主线程、而进入”任务队列”任务,当主线程任务运行完了,才会从”任务队列...JS执行机制(事件循环) ? ? 由于主线程不断重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环( event loop) .

7.4K31

JS 垃圾回收机制

JS,对于任何变量、对象、数组、实例等等这些,都会消耗我们内存和资源,为了节省资源和提高速度,在JS,他是如何处理我们已经不再使用变量数组等呢?...对于有的语言能够进行自动化内存管理,称为垃圾回收机制二、哪些内容是“垃圾”?JS垃圾回收机制会定期(周期性)找出那些不再用到内存(变量),然后释放其内存。...JS还有许多对此优化:分代回收:对对象标记分为两组:“新对象”与“旧对象”,对于新对象,就是经常出现且迅速处理重复工作,这种对象会被经常检查且很快就被清理,而“旧对象”,就是那些存活非常久对象...增量回收:若对象数量较大,一次遍历整个对象集则会花费一些时间,且执行过程中会有一定延迟。因此,JS引擎试图把垃圾回收机制拆分,然后在各个部位分别执行,以用来减少延迟。...四、总结对于JS垃圾回收机制,自然是越少越好,当然是垃圾生成越少越好,我们可以用一些方法减少垃圾回收,例如手动进行内存释放:let arr = [a,b,c,d,e,f];arr.length;

2.2K40

js引擎执行机制详解

本文主要和大家分享js引擎执行机制详解,希望能帮助到大家。 首先,请牢记 2 点: js 是单线程语言 js event loop 是 js 执行机制。...是通过事件循环(event loop), 就理解了 js 执行机制。...: Promise,process,nextTic 按照这种分类方式,js 执行机制就是: 执行一个宏任务,过程如果遇到微任务,就将其放到微任务 event queue 当前宏任务执行完成后...引擎执行机制 首先,请牢记 2 点: js 是单线程语言 js event loop 是 js 执行机制。...: Promise,process,nextTick 按照这种分类方式,js 执行机制就是: 执行一个宏任务,过程如果遇到微任务,就将其放到微任务 event queue 当前宏任务执行完成后

1.3K40

JS事件循环机制与宏队列、微队列笔记

作为一门浏览器脚本语言,它主要用途就是操作DOM和与用户交互设计,如果说js是多线程的话,那么它在操作DOM时候,一个线程对DOM进行了新增操作,另一个线程对DOM进行了删除操作,那么这个时候js处理将会变得十分复杂...如果有,那么主线程会依次执行那些任务队列回调函数。 1.3-事件循环 主线程从"任务队列"读取事件,这个过程是循环不断,所以整个这种运行机制又称为Event Loop(事件循环)。...只要栈代码执行完毕,主线程就会去读取“任务队列”回调函数依次执行。...宏队列:dom事件回调、ajax回调、定时器回调 微队列:promise回调、mutation回调 因此JS执行时首先必须执行所有的初始化同步任务代码,执行完以后,每次准备取出第一个宏任务执行之前,都要将所有的微任务一个一个取出来执行...状态,因此将4放入微队列[8,4] 6、接下来这一步要非常注意:在我们没有打印4时候,那么我们是不会把后面then方法5放入微队列,我们会先将外层Promisethen6放入微队列,因为内层

1.9K30

JS继承机制总结

JS继承机制总结 继承就是子类可以使用父类所有功能,并且对这些功能进行扩展。 JS继承机制主要为原型链继承、构造函数继承、组合继承、寄生继承、寄生组合继承、原型式继承和混合式继承。...实例并不是父类实例,只是子类实例(子类相对于深拷贝了父类实例上属性与方法) 无法实现函数复用,每个子类都有父类实例函数副本,影响性能 (无法实现函数复用’父类构造函数某个函数可能只是一个功能型函数...并且生成了两个实例,子类实例属性和方法会覆盖子类原型(父类实例)上属性和方法,所以增加了不必要内存。...它避免了组合继承调用两次父类构造函数,初始化两次实例属性缺点。...//在这边,我们需要用到`ES6`方法`Object.assign()`。 //它作用就是可以把多个对象属性和方法拷贝到目标对象,若是存在同名属性的话,后面的会覆盖前面。

1.5K10

js事件流机制

什么是事件流 在JavaScript事件流是指一个事件沿特定数据结构传播一个过程。整个事件流总共包含三个阶段(从dome2来说):1.事件捕获阶段、2.处于事件目标阶段、3.事件冒泡阶段。...你可以吧整个dom看做是一盆水,水里放密度不同物品,有的物品可以嵌在其他物品,构成父子节点,有的相互独立,构成兄弟节点,当你手从上去点你需要点物品时,势必要先触碰水面,然后触碰到父节点,然后才是目标节点...触碰完成以后再把手拿出来,正好是一个相反过程,这就与我们事件流机制是一个道理。 事件绑定 下面来看一下下面这个示例代码: <!...在上面的代码我们稍作修改 d.addEventListener('click', function (e) { alert('孙子节点捕获'); console.log.../冒泡,bubbles为true才能使用 2 stopImmediatePropagation 取消事件进一步冒泡,并且组织任何事件处理程序被调用 3 在事件程序,this和currentTarget

1.5K20
领券