非阻塞&异步
node的用处
文件是互不干扰的?文件之间能相互调用
只有函数才会产生作用域。
join和resolve的区别:
join:拼接
resolve:解析
require是同步的
把文件读成一个字符串,包装成一个自执行函数,函数参数为module,
如何让一个字符串执行
node调试:步骤一步步走?webstorm调试
模块加载的流程?主要看路径是怎么变化的
加载模块,返回module.exports,是否有缓存,
获取扩展名,策略模式找对应的方案
主要流程:
解析路径:获取绝对路径&添加扩展名-》加载该模块(若缓存过就从缓存中取,没有就创建一个新模块new?Module并缓存)-》策略模式,读取该文件内容并用函数包裹,传入参数并给exports赋值,我们最后拿到的就是module.exports
同webpack工程原理
根据这个文件创建这个模块,然后导出
***主体流程***
解析文件名:把路径转换成一个绝对路径+扩展名
构建一个模块(缓存模块)
加载模块
返回module.exports
JSON解析
会记录{?a:loaded,?b:loaded?}
但是现在很少问这个了
模块的查找方式:
根据路径来区分模块
文件模块:
xxx
第三方:
node包管理器
name:版本名称
version:?3位
major?主版本?-?大更改
minor?小版本
patch?补丁
标识符?
^取到大版本最高的
~
>=
全局模块:只能在命令行中使用
会安装到当前系统npm目录下
一个包:
package.json
+bin:可执行文件
本地调试:npm?link?链接到哪里去
局部模块:项目中使用
开发依赖?&?生产依赖
package-lock:安装包固定版本,所有人安装的包版本一致
peerDependencies:同等依赖
scripts: