一文详解 Nodejs 中 fs 文件模块与 path 路径模块
1.初识 Node.js
浏览器中的 JavaScript 的组成部分
为什么 JavaScript 可以在浏览器中被执行
不同的浏览器使用不同的 JavaScript 解析引擎
Chrome 浏览器 => V8
Firefox 浏览器 => OdinMonkey(奥丁猴)
Safri 浏览器 => JSCore
IE 浏览器 => Chakra(查克拉)
其中,Chrome 浏览器的 V8 解析引擎性能最好!
为什么 JavaScript 可以操作 DOM 和 BOM
每个浏览器都内置了 DOM、BOM 这样的 API 函数,因此,浏览器中的 JavaScript 才可以调用它们
浏览器中的 JavaScript 运行环境
运行环境是指代码正常运行所需的必要环境
总结
V8 引擎负责解析和执行 JavaScript 代码
内置 API 是由运行环境提供的特殊接口,只能在所属的运行环境中被调用
JavaScript 能否做后端开发
需要 node.js
Node.js 简介
什么是 Node.jsNode.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境官网地址 https://nodejs.org/zh-cn/
Node.js 中的 JavaScript 运行环境
浏览器是 JavaScript 的前端运行环境
Node.js 是 JavaScript 的后端运行环境
Node.js 中无法调用 DOM 和 BOM 等浏览器内置 API
Node.js 可以做什么
Node.js 作为一个 JavaScript 的运行环境,仅仅提供了基础的功能和 API。然而,基于 Node.js 提供的这些基础能,很多强大的工具和框架如雨后春笋,层出不穷,所以学会了 Node.js ,可以让前端程序员胜任更多的工作和岗位
a 基于 Express 框架 http://www.expressjs.com.cn/ 可以快速构建 Web 应用
b 基于 Electron 框架 https://electronjs.org/ 可以构建跨平台的桌面应用
c 基于 restify 框架 http://restify.com/ 可以快速构建 API 接口项目
d 读写和操作数据库、创建实用的命令行工具辅助前端开发、etc…
Node.js 怎么学
浏览器中的 JavaScript 学习路径
JavaScript 基础语法 + 浏览器内置 API(DOM + BOM) + 第三方库(jQuery、art-template 等)
Node.js 的学习路径 JavaScript 基础语法 + Node.js 内置 API(fs、path、http 等)+ 第三方 API 模块(express、mysql 等)
shift+鼠标右键 可以在该目录下打开 powershell 窗口
在 powershell 中的快捷键:
⬆,可以快速定位到上一次执行的命令。
tab 键,可以快速补全文件的路径(先输入第一个字,然后使用 tab 键,可以快速补全路径)
ESC,可以快速清空已输入的命令
cls,清空 powershell 面板
tips:./表示为当前目录,写不写都可以
2.fs 文件系统模块
什么是 fs 文件系统模块
fs 模块是 Node.js 官方提供的、用来操作文件的模块。提供了一系列的方法和属性,用来满足对文件的操作需求如果要在 JavaScript 代码中,使用 fs 模块来操作文件,则需要使用如下的方式先导入它
fs.readFile(path[, option], callback)
读取指定文件中的内容
path
必选参数,字符串,文件路径
option
可选参数,设置字符集
callback
必选参数,文件读取完成后的回调函数
fs.writeFile(path, data[, option], callback)
向指定的文件中写入内容
path
必选参数,字符串,文件路径
data
必选参数,写入的内容
option
可选参数,设置字符集,默认值是 utf8
callback
必选参数,文件写入完成后的回调函数注意:写入会覆盖原内容
省略第三个参数则默认为 UTF8 格式
前言:路径动拼接的问题
使用 fs 模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题。原因:代码在运行的时候,会以执行 node 命令时所处的目录,动态拼接出被操作文件的完整路径。解决方案:在使用 fs 模块操作文件时,直接提供完整的路径,不要提供.或../开头的相对路径,从而防止路径动态拼接的问题。注意 js 中写完整路径要用//,不然会被当成转义字符处理。**但是这种方法移植性差。fs 中有解决办法。
__dirname 表示当前文件所处的目录(即以 js 文件所处地方为基准),不会根据打开 node 目录变化而变化(即为打开 node 的地方为基准)。
3.path 路径模块
path 模块是 Node.js 官方提供的、用来处理路径的模块。提供一系列的方法和属性,用来满足对路径的处理需求如果要在 JavaScript 代码中,使用 path 模块来处理路径,则需要使用如下的方式先导入它
path.join(...paths)
可以把多个路径片段拼接为完整的路径字符串
...paths <string> 路径片段的序列
返回 <string>注意:凡是涉及到路径拼接的操作,都要使用 path.join() 方法进行处理。不直接使用+进行字符串的拼接
path.basename(path[, ext])
可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名
path <string> 必选参数,表示一个路径的字符串
ext <string> 可选参数,表示文件扩展名
返回 <string> 路径的最后一部分
path.extname(path)
可以获取路径中的扩展名部分
path <string> 必选参数,表示一个路径的字符串
返回 <string> 返回得到的扩展名字符串
注意点:
fs.writeFile()方法只能用来创建文件,不能用来创建路径重复调用 fs.writeFile(写入同一个文件,新写入的内容会覆盖之前的旧内容
版权声明: 本文为 InfoQ 作者【timerring】的原创文章。
原文链接:【http://xie.infoq.cn/article/93c2e9c67a82d84a3ead02464】。文章转载请联系作者。
评论