网易严选小程序学习笔记 3
node.js后端
控制层使用工具
在控制层中的应用
const _ = require('lodash')
// d为函数mapDir传入参数,详见 网易严选小程序学习笔记 2
// 模块导出时,d = path.join(__dirname)
const [dirs, files] = _(fs.readdirSync(d)).partition(p => fs.statSync(path.join(d, p)).isDirectory)
// 映射文件夹
// 如果还有目录的话,继续遍历
// 平时没怎么用,复习一下,这叫递归:递归函数就是在函数体内调用本函数
// 是不是想起了大学学的斐波那契数列
dirs.forEach(dir => {
tree[dir] = mapDir(path.join(d, dir)) // 将目录名作为将要返回的对象的属性名
});
// 映射文件
files.forEach(file => {
// 获取文件后缀名字
if (path.extname(file) === '.js') {
tree[path.basename(file, '.js')] = require(path.join(d, file)) // 返回不带后缀的所有js文件的文件名
}
})
1、lodash
js工具库,它内部封装了诸多对字符串、数组、对象等常见数据类型的处理函数(更多学习参考)
_.partition()
返回分成两组的元素数组,第一组为断言条件true,第二组断言条件false
通过partition方法,将fs.readdirSync(d)返回的数组,区分出文件夹和文件,dirs为文件夹,files为文件
2、fs
node文件系统(File System)
fs.Dirent 类:dirent.isDirectory()
如果 fs.Dirent 对象描述文件系统目录,则返回 true。
fs.readdirSync(path[, options])
同步获取路径下所有目录的文件名(包括目录和文件)
options参数:
- encoding 默认值: ‘utf8’
- withFileTypes 默认值: false
fs.Stats 类:fs.statSync(path[, options])
同步获取文件信息,用于调用isDirectory()进行判断
3、path
参考:
Node.js Path 模块 菜鸟教程
path.join()和path.resolve()区别
Node.js 内置path模块,join()拼接路径,extname()获取扩展名
node.js内置模块,处理文件路径的小工具,用于连接路径。该方法的主要用途在于,会正确使用当前系统的路径分隔符,Unix系统是"/",Windows系统是""
path.join()
将字符串拼接成路径
path.join(‘a’, ‘b’, ‘c’) 的结果是 ‘/a/b/c’
path.join(‘a’, ‘/b’, ‘c’) 的结果是 ‘/a/b/c’
path.join(‘a/b’, ‘…/’, ‘c’) 的结果是 ‘/a/c’
path.join(‘a’, ‘./’, ‘c’) 的结果是 ‘/a/c’
所以path.join(__dirname)返回 /home/index(未验证)
path.extname()
获取文件的后缀名console.log(path.extname("home/index.js")); // .js
path.basename()
截取路径中最后一个"/"后的内容 (可以截取出文件名)console.log(basename = path.basename('home/index.js')); // index.js
console.log(basename = path.basename('home/index.js', '.js')); // index
项目来源:cleversnail/mpvue-koa
学习参考:b站、掘金
本文地址:https://blog.csdn.net/u014219356/article/details/107380510