关于checkMyFile问题的答疑
如果再读checkMyFile.js有问题,可以在这里统一提问
1.我查了网上的一些JavaScript的手册,const是常量的声明方法。为什么不用var,而用const呢?
-
第 29 行,return。是否必须呢?如果不用return,files是不是不能够拿到所有文件的列表呢?
-
关于push方法,我做了一个实验,如果声明一个变量去取 mdFiles的值,会拿到一个数字,而不是数组。例如,我用 mdFilesTwo = mdFiles.push('newfiles');这样只能拿到一个数字,为什么不能获得数组呢?如何获得数组?
4.筛选md文件的时候,用'.md'会不会更准确一些?如果有同学的文件名本身包含了md,也会被筛选出来。
程序其它的部分基本能够读懂,但是对于程序构造的思路,还是非常的模糊。
- const是常量的声明方式,这是没错的。
const fs = require('fs');
fs = 1; // 报错,对一个const的变量发生了改变
这就是一种强调后面别改fs变量,我一旦定义就不能被改变。
var fs = require('fs');
fs = 1;
fs.readdir(); // 报错,前面fs被重新定义了。
- 必须。
回调函数一旦发生err。 files那个变量基本就是null或者undefined。这是一种约定俗成的做法。如果没有return,程序继续往下执行就会出现逻辑错误。
-
没懂你的意思。可以把代码贴出来一下。
-
对的。用
.md更准确。
package.json里,dependencies这一项中有fs-extra,这表示fs-extra依赖fs?还是fs依赖fs-extra? 答案:查看package.json的官方文档,才知道dependencies中列出的,是保证js代码能正常运行所需安装的package(也就是包)。- 在npmjs上搜索
fs和fs-extra,提示fs这个名称已被别的包占用,那npm是如何知道哪个才是真正的fs包呢? 答案:用npm js作为关键字Google,在node.js npm install fs error这个话题中才知道,fs就是node自带的核心模块之一,所以在package.json里只有fs-extra,没有fs。 - 在npmjs上查看
fs-extra的文档,说是既然引用它的话,就没有必要再引用fs。老师的代码里,为什么还有fs这个包的引用呢? - 老师引入了
fs-extra这个模块,但代码中并没有用到这个模块的功能。
@Dream4ever
-
当我们要依赖第三方库的时候,需要再package.json写出来,然后执行npm install,npm就会遵照package.json把你需要的第三方库全部下载到你的项目node_module里。
-
fs是内置库。参考https://nodejs.org/dist/latest-v8.x/docs/api/
fs-extra是第三方库 https://github.com/jprichardson/node-fs-extra
fs-extra是一个对内置库fs的扩展,增强了很多能力。
-
- 在checkMyFile.js中,fs-extra是多余的引用,我稍后删除。
如何使用checkMyFile.js,我并不知道如何使用这个文件检测作业里是否包含我的作业?
我的操作步骤:
1打开getting-started-with-javascript/script/checkMyFile.js
2根据文件中步骤操作得到:

‘//引入fs模块’后面的代码如何操作就不知道了,我尝试在terminal中输入,得到的结果是这个:

经过google后的得到 fs模块的含义:
fs是filesystem的缩写,该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装。但是,这个模块几乎对所有操作提供异步和同步两种操作方式,供开发者选择。后面一大推如readFile方法用于异步读取数据,readFileSync方法用于同步读取文件。mkdir方法用于新建目录。http://javascript.ruanyifeng.com/nodejs/fs.html
在这里我知道了fs.readdir就是模块的一个异步读取目录方法,返回一个所包含的文件和子目录的数组。而fs.readdirSync则是同步读取目录方法。
@french5

在代码的头部,我给出了注释。你需要手动调整注释的两个变量的赋值内容。
如果你想查zhangsan,就把xugaoyang改成zhansan即可。
明白了,需要修改两个变量值的,我为什么一开始没注意到。就是因为直接看到【操作步骤】就上去操作了,忘了看前面一堆东西了。而且没有认真读完整个代码意思,就直接去问问题。“只字不差阅读真的很简单却真的很难做到。”
今天学习此issue,对照前面同学提出的问题和解答,查看网页项目文件,对照查看没发现"dependencies"、"fs-extra"字样,一头雾水。
看到后面同学有运行结果,就决定先试试,于是按照步骤运行了checkmyFile.js,得到结果:

我的问题是:发现json文件变化很大,是因为前面讨论说fs-extra没有使用,所以修改为现在这么简单的样子吗?
我之前上周更新过老师的项目,今天没有重新更新。原附带的两个json文件的代码分别是:

现在两个json文件的代码分别是:
(恕我偷懒,还没有尝试后面这种代码的能不能执行,因为还有好多功课等着要做,就直接发问了~,如果没有问题,我再更新下代码运行一遍)
@fanmilir
我们在第一节课就知道js编程时,需要内置库和第三方库。
内置库还好,不需要任何的引入直接可以调用。但是第三方库需要进行手动的引入。package.json就是干这事,明确你的项目依赖那些第三方库,程序员必须知道这事而且告诉node。
dependencies的意思是“依赖”。即,里面都是对第三方的依赖列表。 正是因为项目有依赖,所以才要执行npm install。这是主动安装依赖。
fx-extra就是一个第三方库。后来我在项目更新的时候删掉了,因为用不着。
package-lock.json现在不用太care。主要关注package.json即可。