nodejs 之创建文件

创建文件

专注前端4年,一直以来奋战在搬砖的一线,从事着后台系统、PC端、移动端的开发,然而市场的发展速度确实让人有些许瞠目结舌,前端框架层出不穷,无论是 JS 框架(react.js、vue.js 、angular.js 、react-native、veex……) 还是 UI 框架(Bootstrap、elementUI、iView、vuetify、at-ui、flutter……) 都让我们的大脑不够用,并且每个公司的技术选型和业务不同,所选择的框架都不同,然而苦逼的我们没有办法学会所有,只有在入职公司要啥,我们就快速的学习啥,枪指哪儿,我们就打哪儿。最近准备横向发展一下自己,了解一下被炒的很热但实际市场用的又不是特别多,但是作为一个合格的前端开发人员必须掌握的知识——nodejs。我会将一些平时学习基础资料整理,顺便当做笔记记录一下,和大家一起分享学习。

fs 模块创建文件

// mkdir.js
const mkdir = require("./module");
mkdir("demo/test", err => {
  console.log(err);
});

mkdir("demo01", err => {
  console.log(err);
});

mkdir("demo02/demo03/demo04", err => {
  console.log(err);
});

自定义创建文件 modules

// modules.js
const fs = require("fs");
const path = require("path");

function mkdirs(pathname, callback) {
  // 需要判断是否是绝对路径(避免不必要的bug)
  pathname = path.isAbsolute(pathname) ? pathname : path.join(__dirname, pathname);
  // 获取相对路径
  pathname = path.relative(__dirname, pathname);
  let floders = pathname.split(path.sep); // path.sep 避免平台差异带来的bug
  let pre = "";
  floders.forEach(floder => {
    try {
      // 没有异常,文件已经创建,提示用户改文件已经创建
      let _stat = fs.statSync(path.join(__dirname, pre, floder));
      let hasMkdir = _stat && _stat.isDirectory();
      if (hasMkdir) {
        callback && callback(`文件${floder}已经存在,不能重复创建,请重新创建`);
      }
    } catch (error) {
      // 抛出异常,文件不存在则创建文件
      try {
        // 避免父文件还没有创建的时候先创建子文件所出现的意外bug,这里选择同步创建文件
        fs.mkdirSync(path.join(__dirname, pre, floder));
        callback && callback(null);
      } catch (error) {
        callback && callback(error);
      }
    }
    pre = path.join(pre, floder); // 路径拼合
  });
}

module.exports = mkdirs;

小结

注释已经写得很清楚了,就不过多的解释了,仅仅是学习笔记,相对简单易懂,希望各位看官可以提供更好的方法以供参考,不喜勿喷……

其它前端学习资料和文章如下


其它前端性能优化:

  • 图片优化——质量与性能的博弈
  • 浏览器缓存机制介绍与缓存策略剖析
  • webpack 性能调优与 Gzip 原理
  • 本地存储——从 Cookie 到 Web Storage、IndexDB
  • CDN 的缓存与回源机制解析
  • 服务端渲染的探索与实践
  • 解锁浏览器背后的运行机制
  • DOM 优化原理与基本实践
  • Event Loop 与异步更新策略
  • 回流(Reflow)与重绘(Repaint)
  • Lazy-Load
  • 事件的节流(throttle)与防抖(debounce
  • 前端学习资料下载
  • 技术体系分类

前端技术架构体系(没有链接的后续跟进):

  • 调用堆栈
  • 作用域闭包
  • this全面解析
  • 深浅拷贝的原理
  • 原型prototype
  • 事件机制、
  • Event Loop
  • Promise机制、
  • async / await原理、
  • 防抖/节流原理
  • 模块化详解、
  • es6重难点、
  • 浏览器熏染原理
  • webpack配置(原理)
  • 前端监控、
  • 跨域和安全、
  • 性能优化
  • VirtualDom原理、
  • Diff算法、
  • 数据的双向绑定
  • [TCP协议(三次握手、四次挥手)](https://blog.csdn.net/woleigequshawanyier/article/details/85223642
  • DNS域名解析

其它相关

  • 前端学习资料下载
  • 技术体系分类
  • react-native 实战项目学习
  • react-naitve 采坑笔记

你可能感兴趣的:(#,nodejs)