自动创建目录(多级)

相比起使用递归创建,调用 sheljsl 模块简单得多

  1. const shell = require('shelljs')
  2. const fs = require('fs')
  3. if (!fs.existsSync(dir)) {
  4. shell.mkdir('-p', dir)
  5. }

自动创建目录函数

  1. /**
  2. * 创建文件,自动创建目录
  3. */
  4. function createFile(newPath, txt) {
  5. var dir = require('path').dirname(newPath)
  6. if (!require('fs').existsSync(dir)) {
  7. require('shelljs').mkdir('-p', dir)
  8. }
  9. require('fs').writeFileSync(newPath, txt)
  10. }

ejs 自定义函数的使用

版本:2.6.1

安装:npm install ejs

在模板中使用自定义函数处理数据的Demo

  1. const ejs = require('ejs')
  2. ejs.delimiter = '%'
  3. // 自定义函数 返回首字母大写的字符串
  4. const def_func={
  5. capitalize(str) {
  6. return str ? (str.substring(0, 1).toUpperCase() + str.substring(1)) : str
  7. }
  8. }
  9. const config={
  10. title:'me is test'
  11. }
  12. var result=ejs.render('<%= capitalize(title) %>', Object.assign(def_func,config)) //Test
  13. //const path='./template/test.txt'
  14. //ejs.renderFile(path, Object.assign(def_func, config), {},function(err,str){
  15. // //str 渲染结果
  16. //})

获取指定目录下所有指定格式文件

readAllFile(root,reg) 参数传递正则

  • 获取所有js文件:readAllFile('D:/..',/\.js$/)
  • 获取所有json文件:readAllFile('D:/..',/\.json$/)
  1. /*
  2. * 读取指定文件夹下的全部文件,可通过正则进行过滤,返回文件路径数组
  3. * @param root 指定文件夹路径
  4. * @param reg 对文件的过滤正则表达式,可选参数,示例: 获取指定目录下所有js文件:/\.js$/
  5. *
  6. */
  7. function readAllFile(root, reg) {
  8. var resultArr = []
  9. return (function fn(root, reg) {
  10. var fs = require('fs')
  11. if (fs.existsSync(root)) {
  12. //文件或文件夹存在
  13. var stat = fs.lstatSync(root) // 对于不存在的文件或文件夹,此函数会报错
  14. if (stat.isDirectory()) {
  15. // 文件夹
  16. var files = fs.readdirSync(root)
  17. files.forEach(function(file) {
  18. var t = fn(root + '/' + file, reg)
  19. resultArr = resultArr.concat(t)
  20. })
  21. } else {
  22. if (reg !== undefined) {
  23. if (typeof reg.test == 'function' && reg.test(root)) {
  24. resultArr.push(root)
  25. }
  26. } else {
  27. resultArr.push(root)
  28. }
  29. }
  30. }
  31. return resultArr
  32. })()
  33. }

nodejs 获取传入参数的封装

传入需要获取的 keys及前缀(可选,默认--)

调用:node index.js --target test

接收:const config=loadConifg(['target'],'--') //config.target----->test

  1. /**
  2. * 根据参数数组加载参数
  3. * @param {Array} params 键值
  4. * @param {String} prefix 前缀 默认为 --
  5. */
  6. function loadConfig(params, prefix) {
  7. if (typeof params !== 'object' || params.length === 0) return {}
  8. var config = {}
  9. prefix = prefix || '--'
  10. var args = process.argv
  11. for (let i = 0; i < args.length; i++) {
  12. var key = args[i].indexOf(prefix) === 0 ? args[i].replace(prefix, '') : ''
  13. if (key && params.indexOf(key) > -1 && i < args.length - 1) {
  14. config[key] = args[i + 1]
  15. }
  16. }
  17. return config
  18. }

递归根据最后一级ID找父节点属性

方法定义

  1. /**
  2. * 查找父节点
  3. * @param {String} key 对象匹配键值
  4. * @param {String} value 对象匹配值
  5. * @param {Array} items 带children节点的数组
  6. * @param {Array} resultArr 父对象结果集
  7. */
  8. function fn(key, value, items, resultArr) {
  9. var checkResult = false
  10. for (let index = 0; index < items.length; index++) {
  11. const e = items[index]
  12. checkResult =
  13. e[key] === value || (e.children && fn(key, value, e.children, resultArr))
  14. if (checkResult) {
  15. resultArr.push(e)
  16. break
  17. }
  18. }
  19. return checkResult
  20. }

调用

  1. var arr = []
  2. fn(
  3. 'value',
  4. 2,
  5. [
  6. {
  7. text: 't1',
  8. value: 1,
  9. children: [
  10. {
  11. text: 't2',
  12. value: 2
  13. }
  14. ]
  15. }
  16. ],
  17. arr
  18. )
  19. 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. easyui 传递参数报错(错误:uncaught SyntaxError: Unexpected identifier)

    转自:https://www.cnblogs.com/javaboy2018/p/8733585.html 代码: 按钮事件: function formatOper(val, row, index) ...

  2. jquery 入口函数

    jQuery 入口函数: $(document).ready(function(){ // 执行代码 }); 或者 $(function(){ // 执行代码 }); JavaScript 入口函数: ...

  3. 浅谈spring为什么推荐使用构造器注入

    转载自: https://www.cnblogs.com/joemsu/p/7688307.html 一.前言 ​ Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversi ...

  4. sliding window:"Marginalization","Schur complement","First estimate jacobin"

    [1]知行合一2 SLAM中的marginalization 和 Schur complement SLAM的Bundle Adjustment上,随着时间的推移,路标特征点(landmark)和相机 ...

  5. 一个c程序反汇编过程(zz)

    zz from http://blog.luoyuanhang.com/ 最基本的反汇编方法是gdb xxx: disassemble main/其他函数 #反汇编一个简单的C程序并分析 C 源码: ...

  6. 25. pt-slave-restart

    pt-slave-restart -h 192.168.100.103 -P 3306 -u admin -p admin \--error-numbers 1032 set global slave ...

  7. rabbit基本原理 转

    https://www.cnblogs.com/jun-ma/p/4840869.html

  8. Java程序简介

    ---恢复内容开始--- java程序的基本构成: HelloDate.java package 语句 import 语句 类定义 -class 一个文件只能有一个public 类 (与文件同名) 类 ...

  9. Springboot & Mybatis 构建restful 服务四

    Springboot & Mybatis 构建restful 服务四 1 前置条件 成功执行完Springboot & Mybatis 构建restful 服务三 2 restful ...

  10. Scrapy爬虫框架的学习

    第一步安装 首先得安装它,我使用的pip安装的 因为我电脑上面安装了两个python,一个是python2.x,一个是python3.x,所以为了区分,所以,在cmd中,我就使用命令:python2 ...