nodejs有三种类型的模块:
1.内置模块(由官方提供,例如 fs,path,http)
const fs = require('fs')
const path = require('path')
//可以直接使用
2.自定义模块(用户自定义,一个js文件中引入另外一个js文件)
//向多模块共享作用域中的成员
//方法一
module.exports.name = 'zhangsan'
//方法二
exports.name = 'lisi'
//导入 使用require()方法加载模块时,会执行被加载模块中的代码
const moment = require('./XXX/XX') //此处输入需要引入的js的路径
const dt = moment().format('YYYY-MM-DD HH:mm:ss')
3.第三方模块(也就是包,需要先下载) npm包:第三方模块(都是免费开源的,是基于内置模块封装出来的) 在安装node.js的时候已经安装了npm包,所以可以直接在命令行中输入npm -v可以查看安装的npm版本 语义化版本规范: 例如 2.24.1 第一位数字:大版本 第二位数字:功能版本 第三为数字:Bug修复版本
//装包命令
npm i 包名称 //简写 //npm install 包名称
//安装指定版本的包
npm i 包名称@版本号
//新建一个paclcage.json配置文件
npm init -y
//卸载包
npm uninstanll 包名称
模块化:为了解决js文件之间不确定的依赖关系,防止变量污染
commonJS规范
1.commonjs规范下的模块调用是同步的:必须等模块加载完成之后,接下来的代码才能继续运行。所以,该规范主要适用于服务端。因为服务端可以直接从硬盘中调用所需要的模块,这个过程很快。但是客户端如果一个模块过大就会导致页面假死。
2.主要是node,微信小程序在用
3.一个文件就是一个模块,拥有独立作用域
4.提供require引入模块,export导出模块属性方法。exports代表模块本身
5.一个js文件要输出去,只需使用module.export={xxx:你要输出的内容},而在另外一个js中,你要引用什么,就通过var xxxx=require("xxxx")引用进来就行了
6.模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。(当使用require命令加载同一个模块时,不会再执行该模块,而是取到缓存之中的值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。)
js中的模块有共性,模块的功能代码都是在一个函数中:
模块中使用var定义变量都是局部变量 模块定义在函数,也是局部 模块有一个模块对象,包括module(模块名),exports(导出对象) 如果模块需要暴露方法或属性给外部使用,那么就执行往exports对象上添加 使用一个模块用require(“module”),该方法返回的是模块对象的exports对象, var a =require("./a.js");
|