写了一个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')
}
    原文作者:acookiebear
    原文地址: https://segmentfault.com/a/1190000007060920
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞