node常见概念

发布时间:2024年01月04日

node常见概念

非阻塞&异步

node的用处

模块化

文件是互不干扰的?文件之间能相互调用

只有函数才会产生作用域。

join和resolve的区别:

join:拼接

resolve:解析

require是同步的

把文件读成一个字符串,包装成一个自执行函数,函数参数为module,

如何让一个字符串执行

  1. eval:性能不会隔离作用域
  2. new?Function
  3. 可以创建一个独立的function:vm.createFunction,而且功能更丰富

require的加载模块原理*

node调试:步骤一步步走?webstorm调试

模块加载的流程?主要看路径是怎么变化的

加载模块,返回module.exports,是否有缓存,

获取扩展名,策略模式找对应的方案

主要流程:

解析路径:获取绝对路径&添加扩展名-》加载该模块(若缓存过就从缓存中取,没有就创建一个新模块new?Module并缓存)-》策略模式,读取该文件内容并用函数包裹,传入参数并给exports赋值,我们最后拿到的就是module.exports

手写cjs模块加载原理

同webpack工程原理

根据这个文件创建这个模块,然后导出

***主体流程***

解析文件名:把路径转换成一个绝对路径+扩展名

构建一个模块(缓存模块)

加载模块

返回module.exports

JSON解析

2个问题

经典问题:循环引用问题

会记录{?a:loaded,?b:loaded?}

但是现在很少问这个了

模块的查找方式

模块的查找方式:

根据路径来区分模块

文件模块:

xxx

第三方:

npm*

node包管理器

name:版本名称

version:?3位

major?主版本?-?大更改

minor?小版本

patch?补丁

标识符?

^取到大版本最高的

~

>=

模块区分:

全局模块:只能在命令行中使用

会安装到当前系统npm目录下

一个包:

package.json

+bin:可执行文件

本地调试:npm?link?链接到哪里去

局部模块:项目中使用

开发依赖?&?生产依赖

package-lock:安装包固定版本,所有人安装的包版本一致

peerDependencies:同等依赖

scripts:

文章来源:https://blog.csdn.net/betterangela/article/details/135382057
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。