掘友等级
获得徽章 8
字节运动瑜伽双肩包如何?有兑换的jym辛苦说下感受哈
文章链接:
juejin.cn
1、node获取命令行参数,利用process.argv来获取,在命令行传入时使用--xxx value 这种方式。
2、检查用户输入,使用command-line-args 库来进行校验。
3、--help参数,利用command-line-usage这个库,来告知用户有哪些合法的参数以及每个参数的意义。
文章链接:
juejin.cn
1、如何生成文章,首先我们先生成句子,利用随机函数随机取出数据库中的数据,组成句子。然后以句子为基础,在组成段落,最后拼成文章。
2、如何保存文章,利用fs的写文件API writeFile/writeFileSync。这里我们注意还使用了existsSync和mkdirSync。整体的逻辑就是,先利用existsSync判断当前文件目录下是否存在output子目录,没有的话,则通过mkdirSync创建,最后,利用writeFileSync讲文章写入对应的文件。
3、生成的文章可以在命名上加上时间戳,防止被覆盖。
文章链接:
juejin.cn
1、随机函数的学习 Math.floor(min + (max-min)*p)
2、如何避免选出同样的结果。一种方式:增加一个变量来记录,每次先判断是否已经选中过,已选中的话就忽略重新执行一次。另一种方式:将随机取数的范围从数组长度更改为数组长度减一,这样我就就不会取到数组的最后一位。然后我们把每次取到的元素都和数组最后一位的元素进行交换,这样每次取过的元素下一次就在数组最后一位,下一次也就不能取到了,而下一次取到的数又会将它换出来,保证了不会选出同样的值。但第一次永远是数组最后一位,所以,我们可以把第一次忽略掉。
文章链接:
juejin.cn
nodejs提供了能够让JS操作PC系统的运行时环境。
内置模块fs: 作用是读取文件内容。常用方法:readFile异步读取文件内容,readFileSync同步读取文件内容。注意文件编码问题。
路径问题:如果想在任何目录下运行都能正确找到文件,需要从相对脚本运行的目录改为相对于脚本文件的目录。这里注意ES Modules规范与CommonJS规范的区别。ES Module需要使用fileURLToPath来转换,CommonJS可以直接使用__dirname获取当前js文件的工作目录。
文章链接:
juejin.cn
NPM是Node.js提供的一个包管理工具,允许我们以包的形式从仓库发布和下载模块,默认的仓库是npmjs。
模块。分为内置模块和第三方模块,内置的就是Node.js自身集成的模块,不需要下载,也不需要引用JS外部文件,直接通过包名引入。
包的安装。分为当前项目安装及全局命令安装,以是否加-g区分。不加-g会讲包安装到项目的node_modules目录下。加-g则会将这个包安装到系统目录中,可以在命令行终端运行包中的命令。
包的查找。当通过包名引入模块是,Node.js会根据规则搜索模块所在的位置,优先搜索当前目录下的node_modules目录,找不到,则递归向上搜索父级目录,直到找到或到达操作系统的根目录为止。
文章链接:
juejin.cn
1、学习了CommonJs的导出方式,module.exports和exports.属性名=。两者不可混用,当module.exports=新对象时会改写默认应用,这时会导致exports执行的空间无效。
2、CommonJS与ES Module的区别:
(1): 重命名的方式不同。
(2): CommonJs在require时可以忽略文件扩展名,而ES Module在import文件时则不可忽略.mjs的扩展名
(3): CommonJS规范的require是可以放在块级作用域中的,而ES Modules的import语句则不可以。
(4): CommonJS的require是一个函数,可以动态拼接文件路径,而ES Modules的import语句则不可以。
阅读文章:
juejin.cn
笔记:1.学习了nodeJs的两种模块机制,一种是CommonJS模块机制,另一种则是在Node 13后添加的对标ES6的es module模块机制。
2.node 如何区分这两种模块机制,一种方式是通过文件名来区分。.mjs结尾的文学文件作为Ed module模块来加载,,.cjs或者.js结尾的文件,则作为CommonJS模块来加载。另一种方式就是在package.js文件中,设置type 字段。属性值为module就使用es module模块,否则就是CommonJS。
看axios的源码中的utils工具函数。看到其实现的类型判断函数利用工厂函数来抽象,感觉很优雅。并且同时利用闭包来缓存数据,当传入相同参数时,直接拿结果,减少重复操作的逻辑。
```
var toString = Object.prototype.toString;
var kindOf = (function(cache) {
return function(thing) {
var str = toString.call(thing);
return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
};
})(Object.create(null));
function kindOfTest(type) {
type = type.toLowerCase();
return function isKindOf(thing) {
return kindOf(thing) === type;
};
}
```
下一页