模块化标准(commonjs,ES Module)
commonjs是动态依赖,动态依赖就是在代码运行的过程中,进行导入导出
ES Module是静态依赖,在代码运行之前进行导入导出
所以说,commonjs标准,便可以写在if,循环等语句中,而ES Module必须写在文件的开头。
但是ES Module官方推出了import('模块路径') 的模式为动态依赖,但是其返回的时promise对象
同时commonjs引入时,必须以./ ../开头,但是后缀名可以不用写,默认为js。
ES Module必须写出后缀名,也必须以./ ../开头
-
CommonJS 社区标准 在node环境下有效
- CMJ规范:
- 所有js文件都是一个模块,但是其中一个是入口的模块,通过run code执行,例如图中,index.js就是入口文件,demo.js,demo1.js是功能模块
- 所有模块的全局变量函数,不会产生污染(因为是在node环境下运行,不存在window,而全局的global不会将函数名挂载到自己身上)
- 导入与导出
- 通过module.exports导出
- 通过require导入 require("url") url必须以./与../开头(如果省略./就回去node_modules里面查找)
- 模块有缓存的,导出结果会被缓存的,多次引入只有,后面的都使用第一次的返回结果
- 所有js文件都是一个模块,但是其中一个是入口的模块,通过run code执行,例如图中,index.js就是入口文件,demo.js,demo1.js是功能模块
- CMJ规范:
-
ES Module 官方标准
- 不会污染全局变量
- 拥有 具名导出,默认导出,两种方式
- 静态导入,动态导入
- 静态 代码必须为在代码顶端,也不可放入代码块中,因为静态依赖在运行代码之前进行分析依赖关系
- 动态 在代码运行之前进行导入导出
- 不会污染全局变量
包管理器npm(npm只能在node环境使用)
-
概念
-
安装 npm
-
npm -v测试是否安装
-
配置源 下载地址
- npm config get resistry 查看地址
- npm config set resistry 设置地址
-
npm初始化(初始化后出现package.json文件,描述这个工程的内容)
- npm init
- npm init -y 使用默认值
-
安装依赖
-
“script”:{“con”:"node index.js"}; 配置后可以直接使用 npm run con 进行运行
- npm install 包名(会出现package-lock.json文件与node_modules文件夹)package-lock文件是描述我们安装的依赖,node_modules是安装包的存放地址
- npm i -D 开发依赖安装
- npm i -g 全局依赖安装
- npm i 包名@版本 安装包的版本的信息
- npm view 包名 versions 查看包的版本信息
- npm uninstall jquery 卸载
- npm un -g 包名 全局卸载
-
引入下载的包
- 直接通过require进行引用
- 查找包的顺序
- 查找是否有lodash的内置模块,就是node里面的内容
- 从node_module里面查找是否有lodash
- 当前目录没有的话,返回到上级目录查找,知道查找到根目录
-
- package.json描述版本
- PAckage-lock.json
- node_modules