node.js学习笔记——内部模块、自定义模块的导入和使用方式

文章目录


前文提要

本人仅做个人学习记录,如有错误,请多包涵

主要学习链接:黑马程序员Node.js全套入门教程,nodejs新教程含es6模块化+npm+express+webpack


内部模块

使用require可以导入node.js中的内部模块,例如:fs、path、http等模块,例如这样

js 复制代码
const fs=require('fs')

fs模块

导入方式

js 复制代码
const fs=require('fs')

使用fs模块操作文件的读写。

fs.readFile

读文件:

js 复制代码
fs.readFile("文件路径","utf-8", function(err,dataStr){
//函数体
})

文件中的内容以字符串的方式存储在dataStr中

fs.writeFile

写文件:

js 复制代码
fs.writeFile("文件路径","写入内容", function(err){
//函数体
})

path模块

导入方式

js 复制代码
const path=require('path')

__dirname

使用相对路径会出现文件路径动态拼接时的错误,绝对路径可以避免这个问题,但是绝对路径的可移植性很差。

所以可以采用另一种方式:'__dirname',其表示当前文件存储在哪个目录下(绝对路径表示)

path.join

如果使用加号直接拼接文件路径,容易出现错误

例如这样:

js 复制代码
const path=__dirname+'./clock/1.html'

加号不能自己去除相对路径中的点号,所以有时候会出错,它只是单纯地拼接在了一起,但是如果使用path.join,写成这样:

js 复制代码
const path=path.join(__dirname+'./clock/1.html')

则不会出现上述的错误,path.join中可以写很多参数

http模块

导入方式

js 复制代码
const http=require('http')

创建服务器实例

js 复制代码
const server=http.creatServer()

绑定request事件

js 复制代码
const server.on('request',function(req,res){
//函数体
//req是请求
//res是响应,通过res.end('内容'),可以向客户端发送响应
})

启动服务器

js 复制代码
const server.lesten(8080,function(){
//函数体
//服务器会在'http://127.0.0.1:8080'处启动
//8080是端口号,如果写的是80则可以忽略
})

自定义模块和第三方模块

第三方模块是指外部下载下来的模块,例如使用npm下载的模块,可以通过和内部模块一样的方式调用。

自定义模块是指,用户自己写的js文件,需要通过指定文件路径来进行导入,例如:

导入方式

js 复制代码
const test=require('./test.js')

模块作用域

这里设计到模块作用域的概念,如果直接导入其他的js文件且js文件不做处理,是没有办法访问js文件中的内容的。模块作用域限制本js文件中的变量和方法只能在这个文件(模块)中使用,这样有利于避免全局污染。

共享方式

但是可以通过'module.exports'向外共享模块内的变量和方法,共享到的东西以'module.exports'指向的对象为主。

也可以通过'exports'当'module.exports'使用,这两个指针指向同一对象,如果修改了exports指向,'module.exports'不变,则文件共享的内容不变,因为以'module.exports'为主;如果module.exports指向的对象变了,则文件共享的内容改变。

添加样例:

js 复制代码
module.exports.name="zs"

name是变量名称,自定义的。

js 复制代码
module.exports.sayhello=function(){}

导入函数,则可以通过**导入模块名.sayhello()**调用函数


至此,结束。

如果你觉得这篇文章写的不错,多多点赞~收藏吧!

相关推荐
小弥儿5 分钟前
GitHub今日热榜 | 2026-10-08:逆向工程 MCP 登顶
学习·开源·github
梦想平凡7 分钟前
棋牌游戏技术实战(一):用 Node.js 实现房间消息队列、请求幂等与断线恢复
游戏·node.js
代码山河17 分钟前
JDK、JRE、JVM的区别:一文讲清楚Java运行环境
java·学习·架构·教程·面向对象·项目
fj800j24 分钟前
首助记账本新增「标签管理」功能:跨分类归集项目账目,一个账本管完所有事
数据结构·经验分享·笔记·学习·分布式账本
小天源1 小时前
GEO 品牌监测系统实战:基于 Node.js + Playwright 实现多平台采集与报告导出
人工智能·node.js·geo·品牌检测·ai诊断
JWASX1 小时前
Java 转 go 学习 - dubbo-go(2)
学习·golang
陈年老古董1 小时前
Hive DML 语言学习笔记:数据加载、插入、导出与导入
hive·笔记·学习·mysql
kkkkkkkkkk_Z1 小时前
新手自学嵌入式 | 学习日记:ARM内核启动代码、时钟系统(PLL/Prescaler/PFD)与IMX6ULL时钟配置
arm开发·学习
丁希希哇1 小时前
强化学习与偏好学习基础:PPO,DPO,GRPO
人工智能·学习·机器学习·大语言模型
damoluomu1 小时前
Directus 换掉 GPL 之后,Node.js CMS 到底怎么选?(一)
node.js