Node.js规定一个JavaScript文件就是一个模块,默认情况下内部定义的变量与函数,外部无法获得。(可以使用exports对象进行成员导出,使用require导入其他模块)
案例:在b.js文件中使用a.js文件中的成员。
//a.js
let version = 1.0;
const sayHi = name => `您好,${name}`;
exports.version = version;
exports.sayHi = sayHi;
//b.js
let a = require('./a.js')
console.log(a.version);
console.log(a.sayHi("Miss"));
第二种导出方式
//a.js
let version = 1.0;
const sayHi = name => `您好,${name}`;
module.exports.version = version;
module.exports.sayHi = sayHi;
//exports是module.exports的别名,导出对象最终以module.exports为准。
当exports与module.exports指向的对象不一致时,导出对象最终以module.exports为准。
- 系统模块:(Node环境提供的API)
文件模块
//fs.js
const fs = require("fs")
//读取文件(读取文件时会按照当前目录的相对路径读取,一般使用绝对路径)
//fs.readFile('文件路径/文件名称', ['文件编码'], callback);
fs.readFile('../base.css', 'utf8', (err, doc) => {
if (err == null) {
console.log(doc);
}
});
//写入文件
//fs.writeFile('文件路径/文件名称', '数据', callback)
fs.writeFile('../test.txt', 'miss', (err) => {
if (err != null) {
console.log(err);
}
console.log("写入成功");
});
路径模块
const path = require('path')
const fs = require("fs")
//路径拼接(根据操作系统来拼接路径是反斜杠(windows)还是顺斜杠)
//_dirname获取当前文件所在的绝对路径
let finialpath = path.join('node', 'a', 'b');
console.log(finialpath);
fs.readFile(path.join(__dirname, 'a.js'), 'utf8', (err, doc) => {
if (err == null) {
console.log(doc);
}
});
第三方模块npmjs.com
下载 npm install formidable
卸载 npm uninstall formidable
本地安装:仅当前项目可以使用
全局安装:所有项目均可使用
nodemon(命令行工具,辅助项目开发,即文件发生改变后就重新执行该文件)
全局安装 npm install nodemon -g
运行nodemon path.js 失败
1》Windows+R;
2》输入PowerShell;
3》运行 "Set-ExecutionPolicy -Scope CurrentUser";
4》出现ExecutionPolicy: ,填入RemoteSigned;
5》填入Y;
nrm(切换npm下载工具地址)
全局下载 npm install nrm -g
查看地址 nrm ls
使用地址 nrm use taobao
Gulp(前端构建工具)
文件压缩、语法装换(es6,es5,less)、公共文件抽离、浏览器自动刷新
npm install --production 运行环境,不下载开发依赖
npm install gulp --save -dev 开发依赖
npm install gulp 库文件都是本地安装
在项目根目录建立glupfile.js文件
创建项目结构src、dist
在glupfile.js文件中编写任务
执行任务
3.node.js加载机制
完整路径,直接引入模块
require('./find.js')
模块后缀省略,先找同名js文件,再找同名js文件夹
require('./find')
若找到同名js文件夹,则找文件夹下的index.js文件
若没有index.js文件,则去找package.js文件中查找main选项的入口文件
若没有,则模块不存在