使用 fs.writeFile , fs.readFile

fs.readFile(异步)

  1. var fs = require("fs");
  2. // 异步读取
  3. fs.readFile('input.txt', function (err, data) {
  4. if (err) {
  5. return console.error(err);
  6. }
  7. console.log("异步读取: " + data.toString());
  8. });

同步 fs.readFileSync()

fs.writeFile

  1. fs.writeFile(file, data[, options], callback)

参数

参数使用说明如下:

  • file - 文件名或文件描述符。
  • data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象。
  • options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 ‘w’
  • callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

注意:writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容。

  1. var fs = require("fs");
  2. console.log("准备写入文件");
  3. fs.writeFile('input.txt', '我是通 过fs.writeFile 写入文件的内容', function(err) {
  4. if (err) {
  5. return console.error(err);
  6. }
  7. console.log("数据写入成功!");

使用 commander 制作 todo

安装插件

  1. yarn add commander

使用 Node.js制作一个好玩的todo应用。

43 Node.js 文件系统 - 图1

效果如上图所示,可以添加任务,删除任务,更新任务,和对任务设置状态。源码链接

项目里面使用到了 fs.readFilefs.writeFile,文件系统API。

还使用到了 async 和 await 在MDN上有相关文档

可以这么总结以下 async 和 await 干了什么

async 会将其后的函数的返回值封装成一个 Promise 对象,而 await 会等待这个 Promise 完成

  1. function getSomething() {
  2. return "something";
  3. }
  4. async function testAsync() {
  5. return Promise.resolve("hello async");
  6. }
  7. async function test() {
  8. const v1 = await getSomething();
  9. const v2 = await testAsync();
  10. console.log(v1, v2);
  11. }
  12. test();

单元测试

首先要安装测试工具,采用jest

  1. yarn add --dev jest

官网有个最简单的例子

  1. // sum.js
  2. function sum(a, b) {
  3. return a + b;
  4. }
  5. module.exports = sum;

我么要测试这段代码是否真正确,先创建一个 sum.test.js文件。注意测试文件必须是.test.js结尾的文件。

  1. const sum = require('./sum');
  2. test('adds 1 + 2 to equal 3', () => {
  3. expect(sum(1, 2)).toBe(3);
  4. });

可以在package.json里面添加配置,使得在命令行中快捷运行

  1. {
  2. "scripts": {
  3. "test": "jest"
  4. }
  5. }

最后,运行 yarn testnpm run test ,Jest将打印下面这个消息:

  1. PASS ./sum.test.js
  2. adds 1 + 2 to equal 3 (5ms)

你刚刚成功地写了第一个Jest测试 !

在webstorm里面如果要添加全局代码检查和提醒,可以在Settings | Languages & Frameworks | JavaScript | Libraries 文件下面

43 Node.js 文件系统 - 图2

找到 Download 下载 jest 依赖这样就可以检查代码。

如果想测试整个代码文件

可以想创建一个 __test__文件夹,在里面创建测试文件,单元测试一般以.spec.js结尾

43 Node.js 文件系统 - 图3

单元测试不能和外界打交道,只能自己操作自己。

不过我们可以投机取巧的设置一个假的,官网正好也有这个说明Mocking Node modules

  1. jest.mock('fs')

手动的创建一个__mocks__文件夹在里面创建一个 fs.js.

然后在里面书写mock的 fs

调试工具

webstorm调试

在顶部模块的run 里面的 Edit Configurations

43 Node.js 文件系统 - 图4

然后在里面设置

43 Node.js 文件系统 - 图5

在javaScript file 定位需要测试的文件。

43 Node.js 文件系统 - 图6

点击右边行可以添加断点

浏览器、node调试

  1. node --inspect-brk 执行文件 执行任务

然后在浏览器打开控制台,打开node进行调试。

43 Node.js 文件系统 - 图7