創建文件
專注前端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域名解析