学习笔记(12)模块

1,模块简介

模块:包含用于特定功能的类或函数库。
模块可以相互加载,并可以使用特殊的指令export import 来交换功能,从另一个模块调用一个模块的函数:

export (导出)关键字标记了可以从当前模块外部访问的变量和函数。
import (导入)关键字允许从其他模块导入功能。

1.1,核心功能

  1. 始终使用 “use strict”
    模块始终在严格模式下运行。
  2. 模块级作用域

一个模块中的顶级作用域变量和函数在其他脚本中是不可见的。
模块应该 export 它们想要被外部访问的内容,并 import 它们所需要的内容。

2,fs(文件)模块

2.1,fs.writeFileSync方法

fs.writeFileSync:同步写入,用于把一段文本写入到一个文件中。

1参:文件路径,
2参:当前写入的文本,文件存在则会被覆盖掉,如果不存在就创建并写入。

//导入模块
var fs = require("fs");

fs.writeFileSync("./one.txt","ok");
// fs.writeFileSync()同步
// fs.writeFileAsync()异步

2.2,fs.writeFile

fs.writeFile:写入文件

1参:文件路径,
2参:写入的内容,
3参:写入结束的回调函数,
回调函数有一个参数,如果任务完成,则为空,如果任务失败,则会返回失败原因。

fs.writeFile("./123.txt","今天晚上下雨了",function(error){
   console.log(err)
}

2.3,fs.readFileSync

fs.readFileSync:同步读取。

fs中的方法,都分为两个版本的,同步版和异步版(sync)。
fs.readFileSync:同步版的读取文件方法,参数是要读取的文件的路径。返回值就是读取到的内容。

var content = fs.readFileSync("./123.txt");

/*
  读取到的内容不是字符串,而是原始数据, 类型是buffer,可以调用buffer对象的toString()方法转为字符串。
*/
content.toString()

2.4,fs.readFile

fs.readFile:异步读取。

1参:读取的文件路径,
2参:文件读取结束后的回调函数。回调函数有两个参数:
1参:错误信息,如果没错则为空,
2参:读取到的内容。

fs.readFile("./123.txt",function(err,data){
	if (err) {
		console.log(err);
	} else {
		console.log(data.toString());
	}
});

2.5,fs.mkdir

fs.mkdir:制作文件夹。

1参:创建的文件夹的路径,
2参:创建之后的回调函数。

fs.mkdir("./abc",function(err){}

2.6,fs.copyFile

fs.copyFile:复制文件。

1参,需要复制的文件,
2,复制到哪里去,
3,复制完毕之后回调的函数,

fs.copyFile("./123.txt","./abc/456.txt",function(err){}

//fs.unlink:文件删除。
fs.unlink("./abc/456.txt",function(err){}

同步与异步

同步:代码占用主线程,是阻塞的状态,直到任务结束之后才会打开线程。
异步:分线程:任务是在后台执行,不会阻塞当前代码,当前代码立刻可以执行,所以异步函数一般都会有一个回调的函数,当异步功能完毕之后回到主线程。
文件操作为什么会有异步?
文件操作在写入的时候,耗时不确定,磁盘的写入速度,文件的大小等等都会影响到文件写入速度,如果使用同步容易造成堵塞,反映到程序上来说,会出现卡顿,在使用的时候尽量使用异步函数。定时器也是一个异步函数。

3,path模块

path模块:设置路径。
绝对路径:有完整的路径,以盘符开头
相对路径:不完整的路径,只记录路径结尾部分,忽略层级关系

3.1,path.join

path.join方法:将2个路径合并一个。

// ./代表当前目录 ../表示上层目录
// __dirname:表示当前文件所在的绝对路径

let p3 =path.join(p1,p2);

3.2,path.resolve

path.resolve:把文件的相对路径转成绝对路径。

console.log(path.resolve(p4));

//path.extname:获得当前文件的扩展名
console.log(path.extname(p4));

//path.basename:获得当前文件的文件名
console.log(path.basename(p4));

4,url模块

url模块:统一资源定位符。

url组成:
1,协议名:http,ftp,udp,mail,
2,域名或ip:com(顶级商业域名),cn(国家域名),edu(教育域名)。ip:127.0.0.1(本机ip),
3,端口号:8080,8088.3306,7215,
4,路径:相对路径和绝对路径,
5,参数:name,id,psw
6,哈希值

/*
* http://www.baidu.com:80/music/asd/asdf?name=sun&age=3#3333

* http:// 协议名
*  www.baidu.com 域名
*  :80 端口号
*  /music/asd/asdf 路径
*  ?name=sun&age=3 参数
*  #3333 哈希值
*/



/* url也分绝对地址和相对地址
url模块可以把一个url路径转换成一个url对象*/
var userObj =url.parse(urlStr);

5,模块化

定义:把一个庞大的功能拆分成若干个小的功能,每个功能是一个独立的模块,使用的时候导入。
好处:提高代码的复用。
导出的数据可以是任意类型,导出的数据是什么类型,导入的时候就是对应的类型。
module.exports只能导出一套数据,如果文件里面有多个数据,可以把这些数据封装成为一个大的对象,

module.exports ={num,str,arr,obj,js2Str}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

酒鼎

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

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

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

打赏作者

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

抵扣说明:

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

余额充值