核心模块和对象
核心模块的意义
- 如果只是在服务器运行JavaScript代码,意义并不大,因为无法实现任何功能(读写文件,访问网络)。
- Node的用处在于它本身还提供的一系列功能模块,用于与操作系统互动。
- 这些核心的功能模块在Node中内置。
- 内置模块:
- path: 处理文件路径
- fs: 操作(CRUD)文件系统 CRUD—增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)
- child_process: 新建子进程
- util: 提供一系列实用小工具
- http: 提供HTTP服务器功能
- url: 用于解析URL
- querystring: 解析URL中的查询字符串
- crypto: 提供加密和解密功能
- ……
包的概念
什么是包
- 由于Node是一套轻内核的平台,虽然提供了一系列的内置模块,但是不足以满足开发者的需求,于是乎出现了包(package)的概念。
- 与核心模块类似,就是将一些预先设计好的功能或者API封装到一个文件夹,提供给开发者使用
包的加载机制
- id:包名的情况:require(“http”)
- 现在系统核心(优先级最高)的模块中找(以后不要创建一些和现有的包重名的包)
- 然后再到当前项目中node_modules目录中找
如何管理那么多的包
- 由于Node本身并没有太多的功能性API,所以市面上涌现出大量的第三方人员开发出来的Package
- 包的生态圈一旦繁荣起来,就必须有工具去代替人脑或者文档的方式管理
NPM
NPM概述
Node Package Manager
- 随着时间的发展,NPM出现了两层概念:
- 一层含义是Node的开放式模块登记和管理系统,也可以说是一个生态圈,一个社区
- 另一层含义是Node默认的模块管理器,是一个命令行下的软件,用来安装和管理Node模块
安装NPM
NPM不需要单独安装,默认在安装Node的时候,会连带一起安装NPM。
但是,Node附带的NPM可能不是最新版本,最好用下面的命令,更新到最新版本
npm install npm -g
默认安装到当前系统Node所在目录下。
常用NPM命令
- npm config
- npm init
- npm search
- npm info
- npm install
- npm uninstall
- npm list
- npm outdated
- npm update
- npm run
- npm cache
文件系统操作
相关模块
- fs:基础的文件操作API
- path:提供和路径相关的操作API
- readline:用于读取大文本文件,一行一行读
- fs-extra(第三方) https://www.npmjs.com/package/fs-extra
路径操作模块(path)
- 在文件操作的过程中,都“必须”使用物理路径(绝对路径)
- path模块提供了一系列一系列与路径相关的API
- path.join([p1][,p2]…) =>连接多个路径
- path.basename(p,ext) =>获取文件名
- path.dirname(p) =>获取文件夹路径
- path.extname(p) =>获取文件扩展名
- path.format(obj) 和path.parse(p) 一个是格式化对象为字符串,一个是将字符串解析为对象
- path.relative(from,to) => 获取从from到to的相对路径。
同步或异步调用
- fs模块对文件的几乎所有操作都有同步和异步两种形式
- 例如:readFile() 和readFileSync()
- 区别:
- 同步调用会阻塞代码的执行,异步则不会
- 异步调用会将读取任务下达到任务队列,知道任务执行完成才会回调
- 异常处理方面,同步必须使用try…catch方式,异步可以通过回调函数的第一个参数(错误优先)
文件读取
异步文件读取
fs.readFile(file[,option],callback(err,data))
同步文件读取
fs.readFileSync(file[,option])
文件流的方式读取
fs.createReadStream(path[,options])
readline模块逐行读取文本
|
|
文件写入
确保操作没有额外的问题,一定使用绝对路径的方式
异步文件写入
fs.writeFile(file,data[,option],callback(err))
同步文件写入
fs.writeFileSync(file,data[,option])
流式文件写入
fs.createWriteStream(path[,option])
默认写入操作是覆盖源文件
异步追加
fs.appendFile(file,data[,option],callback(err))
同步追加
fs.appendFileSync(file,data[,options])
其他文件操作
- 获取文件信息
- fs.stat(path,callback(err,stats))
- fs.statSync(path) =>返回一个fs.stats实例
- 移动文件
- fs.rename(oldPath,newPath)
- 重命名文件或目录
- fs.rename(oldPath,newPath,callback)
- fs.renameSync(oldPath,newPath)
- 删除文件
- fs.unlink(path,callback(err))
- fs.unlinkSync(path)
目录操作
- 创建一个目录
- fs.mkdir(path[,model],callback)
- fs.mkdirSync(path[,model])
- 删除一个空目录
- fs.rmdir(path,callback)
- fs.rmdirSync(path)
- 读取一个目录
- fs.readdir(path,callback(err,files))
- fs.readdirSync(path) => 返回files
监视文件
- 监视文件变化
- fs.watchFile(filename[,options],listener(curr,prev))
- options:{persistent,interval}
- fs.watch(filename[,options][,listener])
- fs.watchFile(filename[,options],listener(curr,prev))
本文结束,感谢阅读。
本文作者:melody0z
本文链接:https://melodyvoid/Node/node-learning-notes-02.html
欢迎转载,转载请注明文本链接