模块内部可以使用exporys对象进行成员导出,使用require导入其他模块
//a.js
//在模块内部定义变量
let version = 1.0;
//在模块内部定义方法
// ${name}拼接字符串
const sayHi = name => `你好,${name}`;
//向模块外部导出数据
exporst.version = version;
exporst.sayHi = sayHi;
模块导入
//b.js
//在b.js模块中导入模块a
let a = require(’./b.js’);
//输出b模块中的version变量
console.log(a.version);
//调用b模块中的sayHi方法并输出其返回值
console.log(a.sayHi(‘小猪佩奇’));
案例
a.js
const add = (n1, n2) => n1 + n2
exports.add = add
b.js
const a = require('./03.module-a.js');
console.log(a.add(10, 20));
模块成员的导出另一种方法
module.exporst.version=version;
module.exports.sayHi=sayHi;
exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准,如果他们的地址发生变化最终以module.exports为准
例子:
a.js
const greeting = name => `hello${name}`;
module.exports.greeting = greeting;
b.js
const a = require('./04.module.exports');
console.log(a.greeting('zhangsan'));
例子
a.js
const greeting = name => `hello${name}`;
// module.exports.greeting = greeting;
const x = 100;
exports.x = x;
module.exports.greeting = greeting;
// 当exporsts对象和module.exports对象指向的不是同一个对象时候以module.exports对象为准
module.exports = {
name: 'zhangsan'
}
// 当exports和module.exports指向的对象不同时也是以module.exports为准
exports = {
age: 20
}
b.js
const a = require('./04.module.exports');
// console.log(a.greeting('zhangsan'));
console.log(a);//'zhangsan'
什么是系统模块
Node运行环境提供的API,因为这些API都是以模块方式进行开发的,所以又称Node运行环境提供的API为系统模块
系统模块fs文件的操作
f:file文件,s:system系统,文件操作系统
const fs=requirt(‘fs’);
读取文件内容
fs.reaFile(‘文件路径/文件名称’[,‘文件编码’],callback)
1、通过模块的名字fs对模块进行引用
const fs = require(‘fs’);
//2、通过模块内部的readFile读取文件内容
fs.readFile('./01-helloworld.js', 'utf8', (err, doc) => {
//如果文件读取出错err 是一个对象 包含错误信息
//如果文件读取正确err是null
//doc是文件读取的结果
console.log(err);
console.log(doc);
})
写入文件内容
fs.writeFile(‘文件路径/文件名称’,‘数据’,callback);
// 导入模块fs
const fs = require('fs');
fs.writeFile('./demo.text', '即将写入的内容', err => {
if (err != null) {
console.log(err);
return;
}
console.log('文件写入成功');
})
path路径拼接语法
path.join(‘路径’,‘路径’,……)
生成路径piblic/upioads/avatar
const path = require(‘path’);
const finalPath = path.join(‘public’, ‘uploads’, ‘avatar’);
console.log(finalPath);//public\uploads\avatar
相对路径与绝对路径_ _dirname
大多数情况下使用绝对路径,因为相对路径有时候相对的命令行工具的当前工作目 录
在读取文件或者设置文件路径时都会选择绝对路径
使用__dirname获取当前文件所在的绝对路径
const fs = require('fs');
const path = require('path');
console.log(__dirname); //C:\Users\123\Desktop\html\Node.js\day01
console.log(path.join(__dirname, '01-helloworld.js')); //C:\Users\123\Desktop\html\Node.js\day01\01-helloworld.js
fs.readFile(path.join(__dirname, '01-helloworld.js'), 'utf8', (err, doc) => {
console.log(err);
console.log(doc);
})
node第三方模块 npm
https://www.npmjs.com/ 第三方模块的存储和分发仓库
下载:npm install模块名称
npm install formidable
卸载: npm unintall package 模块名字
全局安装与本地安装
命令行工具:全局安装
库文件:本地安装
npm命令 install安装 nodemon第三方模块的名字 -g全局安装
第三方模块nodemon
使用步骤
1、使用npm install nodemon -g下载
2、在命令行工具中用nodemon命令代替node命令执行文件
在命令窗口按ctrl+c终止操作
第三方模块nrm切换下载地址(提升下载速度)
nrm下载地址切换工具
npm默认的下载地址在国外,国内下载慢
使用步骤
1、使用npm install nrm -g下载
2、查询可用下载地址列表nrm ls
3、切换npm下载地址nrm use下载地址名称