02-Node.js的模块化

目录

一、模块化分类

二、自定义模块

三、内置模块

1、path模块

2、fs模块


一、模块化分类

自定义模块

  • NodeJS中,创建的JS文件都是自定义模块。(也就是处处皆模块)

内置模块(核心模块)

  • 安装Node之后,自带了很多内置模块。我们可以直接加载使用他们。

第三方模块

  • 其他人编写的模块,发布到 npm 网站 上,我们可以下载使用。

二、自定义模块

假设我们写好了一个具有某种功能的js文件叫A文件,如何让B文件能够使用A文件中的函数呢?

这时候我们需要将A文件的函数或者变量导出,再在B文件中接收

  • 共享(导出/暴露)内容给其他模块用,需要使用 module.exports 导出内容。

      module 是Node中的一个全局对象,对象包含当前模块的详细信息

      module.exports 是模块的出口,通俗的说,就是导出内容用的,默认值是 {}

                比如,导出 age、name、fn 给其他模块用,可以 module.exports = {age, name, fn}

  • 其他模块,如果需要使用上述模块导出的内容,可以使用 require() 加载

     和let 结果 = require('模块路径')

        比如,let test = require('./02-test');

        加载自定义模块,必须加路径,即使是 ./ 也必须加。但是可以省略后缀。

此时,A文件我们称之为 自定义模块


A.js文件

let age = 30;
let name = 'laotang';
let height = '175cm';
let weight = '75kg';
let square = x => x * x;

// 导出age、name、fn给其他模块使用
module.exports = { age, name, square };

B.js文件

let test = require('./02-test');

console.log(test); // { age: 30, name: 'laotang', square: Function... }

三、内置模块

内置模块是Node.js 平台自带的一套基本的 API(功能模块)。也叫做核心模块。

下面介绍几个内置模块。其他的模块可以在说明文档中找API 文档 | Node.js 中文网

注意,加载内置模块,不能写路径,这是和加载自定义模块不一样的。

1、path模块

使用:

1、加载模块

// 使用核心模块之前,首先加载核心模块
let path = require('path');
// 或者
const path = require('path');

2、调用path模块中的方法,来处理相应的问题,下面列举path模块中的几个方法

方法作用
path.basename(path[, ext])

返回 path 的最后一部分(文件名)(.txt  .js之类的)

path.dirname(path)返回目录名
path.==extname==(path)返回路径中文件的扩展名(包含.)
path.format(pathObject)将一个对象格式化为一个路径字符串
path.==join==([...paths])拼接路径
path.parse(path)把路径字符串解析成对象的格式
path.resolve([...paths])基于当前工作目录拼接路径
const path = require('path');

// extname -- 获取文件后缀
console.log(path.extname('index.html')); // .html
console.log(path.extname('index.coffee.md')); // .md

// join -- 智能拼接路径
// ------------------- 智能拼接路径 -----------------------------
// console.log(path.join('a', 'b', 'c')); // a/b/c

// console.log(path.join('a', 'b', 'c', 'index.css')); // a/b/c/index.css

// a里面有b,b里面有../c,言外之意,c和b同级。
// console.log(path.join('a', 'b', '../c', 'index.js')); // a/c/index.js

// __dirname 永远表示当前js文件的绝对路径
console.log(path.join(__dirname, 'css', 'demo.css')); // /Users/tangfengpo/Study/123/Node01/code/css/demo.css

2、fs模块

使用:

1、加载模块

// 引入模块,引入模块的时候,可以使用var、let,但是建议使用const,因为我们不希望它改变
const fs = require('fs');

2、调用fs模块的方法,下面列举fs模块中的常用方法

API作用
fs.access(path, callback)判断路径是否存在
fs.appendFile(file, data, callback)向文件中追加内容
fs.copyFile(src, callback)复制文件
fs.mkdir(path, callback)创建目录
fs.readDir(path, callback)读取目录列表
fs.rename(oldPath, newPath, callback)重命名文件/目录
fs.rmdir(path, callback)删除目录/只能删除空目录
fs.stat(path, callback)获取文件/目录信息
fs.unlink(path, callback)删除文件
fs.watch(filename[, options][, listener])监视文件/目录
fs.watchFile(filename[, options], listener)监视文件
..... 一大堆
// readFile -- 异步读取文件
fs.readFile('./test.json', (err, data) => {
    if (err) {
        console.log('读取文件出错');
    } else {
        console.log(data); // 读取到的二进制数据
        console.log(data.toString()); // 得到原始数据
    }
});

fs.readFile('./test.json', 'utf-8', (err, data) => {
    if (err) {
        console.log('读取文件出错');
    } else {
        console.log(data); // 读取到的原始数据
    }
});
```

```js
// writeFile -- 异步写入文件
fs.writeFile('./abc.html', 'hello world', (err) => {
    if (err) {
        console.log('写入文件失败');
    } else {
        console.log('文件写入成功');
    }
});

四、第三方模块

重点使用和

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李建雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值