自动创建目录(多级)

相比起使用递归创建,调用 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)

nodejs常用代码片段的更多相关文章

  1. C#常用代码片段备忘

    以下是从visual studio中整理出来的常用代码片段,以作备忘 快捷键: eh 用途: 类中事件实现函数模板 private void MyMethod(object sender, Event ...

  2. 36个Android开发常用代码片段

    //36个Android开发常用代码片段 //拨打电话 public static void call(Context context, String phoneNumber) { context.s ...

  3. Jquery学习总结(1)——Jquery常用代码片段汇总

    1. 禁止右键点击 ? 1 2 3 4 5 $(document).ready(function(){     $(document).bind("contextmenu",fun ...

  4. jQuery常用代码片段

    检测IE浏览器 在进行CSS设计时,IE浏览器对开发者及设计师而言无疑是个麻烦.尽管IE6的黑暗时代已经过去,IE浏览器家族的人气亦在不断下滑,但我们仍然有必要对其进行检测.当然,以下片段亦可用于检测 ...

  5. Vue3.0常用代码片段和开发插件

    Vue3 Snippets for Visual Studio Code Vue3 Snippets源码 Vue3 Snippets下载 This extension adds Vue3 Code S ...

  6. Ext.NET Ext.JS 常用代码片段摘录

    引言 最近写代码突然有"一把梭"的感觉, 不管三七二十一先弄上再说. 换别人的说法, 这应该是属于"做项目"风格法吧. 至于知识体系, 可以参考官方或者更权威的 ...

  7. Play常用代码片段 http://www.anool.net/?p=625

    持续更新中: (1)按照降序查询: List<Entity> entities= Entity.find("order by id desc").fetch(2);   ...

  8. Android开发常用代码片段

    拨打电话 public static void call(Context context, String phoneNumber) { context.startActivity( new Inten ...

  9. ide phpStorm常用代码片段设置

    1.打开设置(File -> Settings) 2.如图 3 . 最后,在PHP文件中输入 ll 并按 TAB 即可打出代码块

随机推荐

  1. php 通过扫描二维码关注公众号

    class Wxfollow {     protected $appid = 'wxf1d959b99f33b156';     protected $secret = '248f3a5606045 ...

  2. stm32定时器时钟以及中间对齐模式

    在永磁同步电机的控制中,需要对电机的三相定子施加一定的电压,才能控制电机转动.现在用的较多的是SVPWM(SVPWM的具体原理会在后面另写一篇博客说明),要想产生SVPWM波形,需要控制的三相电压呈如 ...

  3. centos 防火墙端口开放

    开放端口 永久的开放需要的端口 sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent sudo firewall-cmd -- ...

  4. experiment 3

    #include <stdio.h> int main() { int number, max, min, n; n=; printf("请输入%d个数: ", n); ...

  5. 【转】TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端

    [转]TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP ...

  6. ios 对于AFNetworking3.0的基本使用

    AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持.AFHTTPRequestOperationManager已经抛弃,所以需要对数据请求进行改动. G ...

  7. Startls Back 引起的 win10升级之后的闪屏问题

    win10 更新之后出现闪频问题. 有人说是和startls back 有关,需要卸载startls back, 但是进入安全模式下显示此 程序无法打开,无法卸载. 后来看到有人更新到startls ...

  8. C#算法

    递归 任何一个方法既可以调用其他方法又可以调用自己,而当这个方法调用自己时,我们就叫它递归函数或者递归方法! 通常递归有两个特点: 1.递归方法一直会调用自己直到某些条件满足,也就是说一定要有出口; ...

  9. Python从入门到精通之Fifth!

    字典  类名:dict   字典是无序的. 字典的创建  info = {"k1":{1:"abc",[1,2,3]},"k2":True} ...

  10. 20175229张智敏 Arrays和String单元测试

    Arrays和String单元测试 1.具体要求: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split A ...