写了一个requireDir的小工具,可以遍历一个目录,并且require目录中的所有js文件...

代码在 这里
用法:因为没有发布到npm,所以就把这个文件里面的代码拷贝下来自己建一个模块,比如叫require-dir.js

const requireDir = require('path/to/require-dir')

第一个参数固定为__dirname,第二个参数为需要require的目录。

多次加载同一目录时,第一次加载的结果会进行缓存,以后再次使用requireDir去require该目录的时候会直接拿到缓存的对象而不会再次利用fs去读取该目录。

假设目录结构如下:

|_src
|  |_lalala
|     |_wxdir
|     |  |_event.js
|     |  |_other-thing.js
|     |_user.js

一. 树状结构

将整个目录中所有的js模块进行迭代,返回一个对象,对象的属性结构和目录结构一致,如果文件夹或者文件名中有非字母数字的字符,其对应的对象属性中则会移除该字符并且以其作为分隔进行驼峰式命名,如下面的other-thing.js

const lalala = requireDir(__dirname, 'path/to/lalala')

lalala的结构为,

{
  user: require('path/to/user.js')
  wxdir: {
    event: require('path/to/event.js'),
    otherThing: require('path/to/other-thing.js')
  }
}

二. 平行结构

1.依然将整个目录的js进行迭代,只不过返回的对象不是树状结构,而是将它与传入路径的相对路径进行分割和驼峰式命名

const lalala2 = require(__dirname, 'path/to/lalala', true)

lalala2的结构为

{
  user: require('path/to/user.js'),
  wxdirEvent: require('path/to/event.js'),
  wxdirOtherThing: require('path/to/other-thing.js')
}

2.自定义命名规则,第三个参数可以传入一个对象{ nameHandler: func },func的唯一参数是一个字符串,返回值还是字符串,requireDir返回的对象的属性则是原本的熟悉传入func后的返回值

const lalala3 = require(__dirname, 'path/to/lalala', { nameHandler: i => `$${i}` })

lalala3的结构为

{
  $user: require('path/to/user.js'),
  $wxdirEvent: require('path/to/event.js'),
  $wxdirOtherThing: require('path/to/other-thing.js')
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值