Es moudle导出原理
(1)export{name,age},export导出的是变量的话,在解析的时候创建了模块环境记录(module envirment record)空间,做了个bindlings:实时绑定
(2)import{name,age}from './modules/foo.js'
(3)在模块环境记录的时候,里面的信息是实时更新的,在export里面的变量,到了模块记录环境的时候会变成常量,因为在import里面不能对模块环境记录的常量进行变换,而在export里面的可以操作变量来对模块环境记录里面的常量进行操作。
(4)而在export里面到处的是对象的话,实际上是创造了一个新的内存空间,这样的话,里面的模块环境记录里面保存的是内存地址,内存地址找到新的内存空间进行操作
(5)默认情况下一个js文件是commonJs的模块,但不是es modules的模块
CommonJs和ES Module交互
(1)通常情况,CommonJs不能加载ES Module
因为CommonJS是同步加载的,但是ES Module必须经过静态分析等,无法在这个时候执行JS代码;
(2)但是这个并非绝对的,某些平台在实现的时候可以对代码进行针对性的解析,也可能会支持
Node当中是不支持的
(3)多数情况下,ES module可以加载CommonJs
ES Module在加载CommonJS时,会将其module.exports导出的内容作为default导出方式(相当于export default)来使用
(Node旧版本不支持,webpack版本支持)
Node常用内置模块
(1)内置模块Path
path模块用于对路径和文件进行处理,提供了很多好用的方法
1.获取路径的信息
2.join路径拼接和resolve路径拼接的区别
join相对来说会比较笨重一些,给什么路径就拼什么路径
而resolve的话,会进行判断原始路径等
(2)内置模块fs(file system 文件系统)
对于任何一个为服务器端服务的语言或者框架通常都会有自己的文件系统
文件系统的API大多数都提供三种操作方式
1、同步操作文件:代码会被阻塞,不会继续执行
2、异步回调函数操作文件:代码不会被阻塞,需要传入回调函数,当获取到结果时,回调函数被执行
3、异步promise操作文件:代码不会被阻塞,通过fs.promise调用方法操作,会返回一个promise之后可以通过then、catch进行处理
文件描述符(file descriptors)
对于操作文件是一个重要的东西
获取到了文件描述符 可以直接来操作文件
文件的读写
flag选项
w 打开文件写入,默认值
w+ 打开文件进行读写,如果不存在则创建文件
r+ 打开文件进行读写,如果不存在则抛出异常
r 打开文件读取,读取时的默认值
a 打开要写入的文件,将流放在文件末尾,如果不存在则创建文件
a+ 打开文件以进行读写,将流放在文件末尾,如果不存在则创建文件
encoding选项(编码)
文件夹的操作
1.创建文件夹
2.读取文件夹中的所有文件
3.文件夹的重命名
4.文件的复制
event基础方法
包管理工具(npm)
node package Manager 也就是node包管理器
scripts属性
start
start test stop restart这四个指令在npm run 的时候可以省去run
版本管理问题
semver版本规范的X.Y.Z
X主版本号(majoy): 当你做了不兼容的API修改(不兼容之前的版本)
Y次版本号(minor):当你做了向下兼容的功能性新增(新功能增加,但是兼容之前的版本)
Z修订号(patch):当你做了向下兼容的问题修正(没有新功能,修复了之前的bug)
engines属性(引擎)
engines属性用于指定Node和NPM的版本号
browserslist属性
用于配置打包后的js浏览器的兼容情况
npm install命令
全局安装(global install)npm install yarn -g
局部安装(local install) npm install yarn
npm install 原理
npm其他命令
卸载某个依赖包
npm uninstall package
npm uninstall package --save-dev
npm uninstall package -D
强制重新Build
npm rebuild
清除缓存
npm cache clean
Yarn工具
yarn install
yarn add
yarn remove
Cnpm工具
Npx工具
常见的作用是用它来调用项目中的某个项目指令