亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

寫(xiě)了一個(gè)requireDir的小工具,可以遍歷一個(gè)目錄,并且require目錄中的所有js文件

toddmark / 858人閱讀

摘要:多次加載同一目錄時(shí),第一次加載的結(jié)果會(huì)進(jìn)行緩存,以后再次使用去該目錄的時(shí)候會(huì)直接拿到緩存的對(duì)象而不會(huì)再次利用去讀取該目錄。

代碼在 這里
用法:因?yàn)闆](méi)有發(fā)布到npm,所以就把這個(gè)文件里面的代碼拷貝下來(lái)自己建一個(gè)模塊,比如叫require-dir.js

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

第一個(gè)參數(shù)固定為_(kāi)_dirname,第二個(gè)參數(shù)為需要require的目錄。

多次加載同一目錄時(shí),第一次加載的結(jié)果會(huì)進(jìn)行緩存,以后再次使用requireDir去require該目錄的時(shí)候會(huì)直接拿到緩存的對(duì)象而不會(huì)再次利用fs去讀取該目錄。

假設(shè)目錄結(jié)構(gòu)如下:

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

一. 樹(shù)狀結(jié)構(gòu)

將整個(gè)目錄中所有的js模塊進(jìn)行迭代,返回一個(gè)對(duì)象,對(duì)象的屬性結(jié)構(gòu)和目錄結(jié)構(gòu)一致,如果文件夾或者文件名中有非字母數(shù)字的字符,其對(duì)應(yīng)的對(duì)象屬性中則會(huì)移除該字符并且以其作為分隔進(jìn)行駝峰式命名,如下面的other-thing.js

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

lalala的結(jié)構(gòu)為,

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

二. 平行結(jié)構(gòu)

1.依然將整個(gè)目錄的js進(jìn)行迭代,只不過(guò)返回的對(duì)象不是樹(shù)狀結(jié)構(gòu),而是將它與傳入路徑的相對(duì)路徑進(jìn)行分割和駝峰式命名

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

lalala2的結(jié)構(gòu)為

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

2.自定義命名規(guī)則,第三個(gè)參數(shù)可以傳入一個(gè)對(duì)象{ nameHandler: func },func的唯一參數(shù)是一個(gè)字符串,返回值還是字符串,requireDir返回的對(duì)象的屬性則是原本的熟悉傳入func后的返回值

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

lalala3的結(jié)構(gòu)為

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/80592.html

相關(guān)文章

  • Gulp 制作寫(xiě) Demo 小工具

    摘要:更改文件名之后,在文件中寫(xiě)入的代碼??刂圃黾忧熬Y的版本根據(jù)頁(yè)面中的標(biāo)簽及標(biāo)簽中的選擇器屬性,來(lái)精簡(jiǎn)樣式。 項(xiàng)目地址 既然重新學(xué)習(xí)了 Gulp,那索性就再把以前用 Gulp 寫(xiě)的東西拿出來(lái),重新寫(xiě)一遍。這次寫(xiě)的時(shí)候要把要點(diǎn)記錄下來(lái),不然以后忘了就沒(méi)法回憶了。 因?yàn)?Gulp 現(xiàn)在使用沒(méi)有以前那么多了,所以就不寫(xiě)復(fù)雜的應(yīng)用了。這次寫(xiě)一個(gè)簡(jiǎn)單的 Demo 處理工具,只是為了把 PSD 轉(zhuǎn)成 ...

    tulayang 評(píng)論0 收藏0
  • vue+express+mongoose項(xiàng)目構(gòu)建

    摘要:注僅做記錄使用又不舍得刪除推薦使用相關(guān)資料很多的運(yùn)行環(huán)境構(gòu)建基于全局安裝安裝過(guò)程略配置的淘寶鏡象全局安裝官方腳手架工具官網(wǎng)文檔創(chuàng)建項(xiàng)目基于模板創(chuàng)建創(chuàng)建配置按需,我除了安裝之外其他都選了運(yùn)行與打包測(cè)試安裝依賴(lài)包運(yùn)行打包配 注(2018-2-12):僅做記錄使用,又不舍得刪除,推薦使用koa2,koa2相關(guān)資料很多的~ 1. 運(yùn)行環(huán)境構(gòu)建(基于macOS Sierra 10.12.4) ...

    SKYZACK 評(píng)論0 收藏0
  • require.js 簡(jiǎn)潔入門(mén)

    摘要:另外一個(gè)道理,一部分是依賴(lài)另一部分的,比如依賴(lài)文件的載入。其實(shí)主要做的事情就是這兩點(diǎn)。這里只是我虛構(gòu)一個(gè)假的例子,實(shí)際應(yīng)用中要根據(jù)自己的實(shí)際需求去設(shè)計(jì)構(gòu)思自己的項(xiàng)目,再次提醒,不要為了用而用。 前言 提到require.js大多數(shù)人會(huì)說(shuō)提到模塊化開(kāi)發(fā),AMD等等,其實(shí)require.js并沒(méi)有這么多復(fù)雜的概念,這里我就希望排除這些概念,從實(shí)用的角度來(lái)簡(jiǎn)單說(shuō)一下require.js是干...

    andot 評(píng)論0 收藏0
  • 基于nodejs編寫(xiě)小爬蟲(chóng)

    摘要:編寫(xiě)異步小爬蟲(chóng)在通過(guò)的課程初步了解的各大模塊之后,不禁感慨于的強(qiáng)大,讓我們這些前端小白也可以進(jìn)行進(jìn)階的功能實(shí)現(xiàn),同時(shí)發(fā)現(xiàn)自己也已經(jīng)可以通過(guò)實(shí)現(xiàn)一些比較日常的小功能。 nodejs編寫(xiě)異步小爬蟲(chóng) 在通過(guò)learnyounode的課程初步了解nodejs的各大模塊之后,不禁感慨于nodejs的強(qiáng)大,讓我們這些前端小白也可以進(jìn)行進(jìn)階的功能實(shí)現(xiàn),同時(shí)發(fā)現(xiàn)自己也已經(jīng)可以通過(guò)nodejs實(shí)現(xiàn)一些...

    3fuyu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<