6 - Make it Modular
這個題目如果我沒先偷看答案的話,真的是完全沒有概念啊 ...,所以我偷看了(茶)
第六題和第五題要求差不多,都是要篩選資料夾中有某個副檔名的檔案出來。這題要拆成兩個檔案,一個是主要用來執行的 js 檔,一個是變成模組、用來讓執行的 js 載入的檔案
首先是執行程式。執行程式一開始要先設定三個東西:
載入負責 filter 的模組
抓取
node MakeModule dir filterstr
的第二個參數,也就是 dir抓取
node MakeModule dir filterstr
的第三個參數,也就是 filterstr
之後,就是利用 filterFn 塞選出有 filterStr 的檔案,再一個一個印出在此 list 裡面的 file 檔名
模組的部份,目的是要篩選出某個資料夾中,符合某個副檔名的全部檔案
首先要得到某個資料夾的全部清單,而這可以透過 fs.readdir( dir, filterstr, callback) 函式找到。為此,我們要
載入 fs 模組: fs = require('fs')
了解 fs.readdir 的參數有 ( dir, fuction(err, list) )
再來,要進行實質的篩選。官方解答提供了一個篩選函式: Array.filter( function(){condition} )。所以接下來要
先建立一個可以傳到執行程式的 var file = list.filter( function(){} )
在 callback 函式為 file 設定條件並傳回: return path.extname( file ) == ( "."+ filterStr )
最後,要把整個程式包成 module 方便外包出去,讓執行程式可以使用,而也要能接受來自執行程式的參數: dir, filterStr
module.exports = function ( dir, filterStr, callback ){ }
Array.forEach(callback)
Array.filter(callback )
Last updated