自動創建目錄(多級)
相比起使用遞歸創建,調用 sheljsl 模塊簡單得多
const shell = require('shelljs')
const fs = require('fs')
if (!fs.existsSync(dir)) {
shell.mkdir('-p', dir)
}
自動創建目錄函數
/**
* 創建文件,自動創建目錄
*/
function createFile(newPath, txt) {
var dir = require('path').dirname(newPath)
if (!require('fs').existsSync(dir)) {
require('shelljs').mkdir('-p', dir)
}
require('fs').writeFileSync(newPath, txt)
}
ejs 自定義函數的使用
版本:2.6.1
安裝:npm install ejs
在模板中使用自定義函數處理數據的Demo
const ejs = require('ejs')
ejs.delimiter = '%'
// 自定義函數 返回首字母大寫的字符串
const def_func={
capitalize(str) {
return str ? (str.substring(0, 1).toUpperCase() + str.substring(1)) : str
}
}
const config={
title:'me is test'
}
var result=ejs.render('<%= capitalize(title) %>', Object.assign(def_func,config)) //Test
//const path='./template/test.txt'
//ejs.renderFile(path, Object.assign(def_func, config), {},function(err,str){
// //str 渲染結果
//})
獲取指定目錄下所有指定格式文件
readAllFile(root,reg) 參數傳遞正則
- 獲取所有js文件:
readAllFile('D:/..',/\.js$/)
- 獲取所有json文件:
readAllFile('D:/..',/\.json$/)
/*
* 讀取指定文件夾下的全部文件,可通過正則進行過濾,返回文件路徑數組
* @param root 指定文件夾路徑
* @param reg 對文件的過濾正則表達式,可選參數,示例: 獲取指定目錄下所有js文件:/\.js$/
*
*/
function readAllFile(root, reg) {
var resultArr = []
return (function fn(root, reg) {
var fs = require('fs')
if (fs.existsSync(root)) {
//文件或文件夾存在
var stat = fs.lstatSync(root) // 對於不存在的文件或文件夾,此函數會報錯
if (stat.isDirectory()) {
// 文件夾
var files = fs.readdirSync(root)
files.forEach(function(file) {
var t = fn(root + '/' + file, reg)
resultArr = resultArr.concat(t)
})
} else {
if (reg !== undefined) {
if (typeof reg.test == 'function' && reg.test(root)) {
resultArr.push(root)
}
} else {
resultArr.push(root)
}
}
}
return resultArr
})()
}
nodejs 獲取傳入參數的封裝
傳入需要獲取的 keys及前綴(可選,默認--)
調用:node index.js --target test
接收:const config=loadConifg(['target'],'--')
//config.target----->test
/**
* 根據參數數組加載參數
* @param {Array} params 鍵值
* @param {String} prefix 前綴 默認為 --
*/
function loadConfig(params, prefix) {
if (typeof params !== 'object' || params.length === 0) return {}
var config = {}
prefix = prefix || '--'
var args = process.argv
for (let i = 0; i < args.length; i++) {
var key = args[i].indexOf(prefix) === 0 ? args[i].replace(prefix, '') : ''
if (key && params.indexOf(key) > -1 && i < args.length - 1) {
config[key] = args[i + 1]
}
}
return config
}
遞歸根據最后一級ID找父節點屬性
方法定義
/**
* 查找父節點
* @param {String} key 對象匹配鍵值
* @param {String} value 對象匹配值
* @param {Array} items 帶children節點的數組
* @param {Array} resultArr 父對象結果集
*/
function fn(key, value, items, resultArr) {
var checkResult = false
for (let index = 0; index < items.length; index++) {
const e = items[index]
checkResult =
e[key] === value || (e.children && fn(key, value, e.children, resultArr))
if (checkResult) {
resultArr.push(e)
break
}
}
return checkResult
}
調用
var arr = []
fn(
'value',
2,
[
{
text: 't1',
value: 1,
children: [
{
text: 't2',
value: 2
}
]
}
],
arr
)
console.log(arr)