最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用node.js實現(xiàn)自動生成前端項目組件的方法詳解

 更新時間:2017年07月12日 11:27:19   作者:bleach  
最近在學習用,基于nodejs的強大,我從原本的只寫前端變成了寫全棧。下面這篇文章主要給大家介紹了關于利用node.js實現(xiàn)自動生成前端項目組件的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面來一起看看吧。

本文主要給大家介紹了關于利用node.js實現(xiàn)自動生成前端項目組件的相關內(nèi)容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

腳本編寫背景


寫這個小腳本的初衷是,項目本身添加一個組件太繁瑣了,比如我想要去建立一個login的組件,那么我需要手動去IDE中,創(chuàng)建index.js(組件出口文件),login.js(業(yè)務文件),login.html,login.less這四個文件。因為每個組件都有一些輸出的代碼,還要把之前組件的那幾行拷貝過來,這種作業(yè)真的煩,于是乎寫了一個小腳本去自動完成這些功能。

PS:本腳本運行環(huán)境是nodeV7以上,當前時間2017/07,stable版本還是V6,最新的node版本為V8.1.3(LTS版本),如要運行,請升級node版本為LTS版本。

預期效果

在命令行輸入:node set login

在conponents文件夾下面自動生成4個文件,并填寫index.js , login.js的文件公共內(nèi)容。

如果輸入多層文件如: node set login/foo

則會先檢測conponents文件夾下是否存在login,如不存在,先創(chuàng)建login文件夾,然后創(chuàng)建foo的組件。本腳本主要使用nodejs的fs模塊來完成需求。

fs模塊
fs模塊用于對系統(tǒng)文件及目錄進行讀寫操作,本次主要用到的fs模塊的功能有:

  • fs.existsSync(path) 檢測文件夾是否存在,一個同步的API,只接受一個路徑參數(shù),當前版本異步的廢棄了。
  • fs.mkdir(path,callback) 創(chuàng)建文件夾,異步,兩個必填參數(shù),路徑和回掉。
  • fs.readFileSync(path) 讀取文件,接受一個參數(shù),文件路徑。
  • fs.writeFile(path,data,callback) 寫文件,接受三個參數(shù),文件路徑,向文件中寫的數(shù)據(jù),回掉。

代碼實施

流程圖


async function creatCpt() {
 try {
  await exists(); // 檢測文件夾
  await readFile(); // 讀取模板內(nèi)容
  await writeFile(await readFile()); //寫入組件
 }
 catch (err) {
  console.error(err);
 }
}

獲取命令行參數(shù)

node set login為例,想要創(chuàng)建一個login文件夾,首先先要獲取命令行當中的login。在nodejs當中,獲取命令行參數(shù)使用process.argv這條命令返回一個數(shù)組,第一個參數(shù)為nodejs.exe的應用所在絕對路徑,第二個參數(shù)為當前腳本所在的絕對路徑,之后所輸入的參數(shù)以空格分隔,如輸入node set aaa,得到:


檢測文件夾是否存在

let exists = function () {
 return new Promise((res) => {
  (async function () {
   for (let a of path) {
    fs.existsSync(basepath + a) ? basepath = `${basepath}${a}/` : await mkdir(a);
   }
   res(basepath);
  })()
 })
}

判斷是否存在文件夾,如果存在,重新拼接路徑繼續(xù)檢查,如不存在則生成文件夾。

創(chuàng)建文件夾

node set foo/bar


let mkdir = function (a) {
 return new Promise((res, rej) => {
  fs.mkdir(basepath + a, (err) => {
   if (err) rej(err);
   basepath = `${basepath}${a}/`
   res(basepath);
  });
 })
}

創(chuàng)建文件夾成功后,重新拼接路徑,以便于繼續(xù)查找。

讀取模板內(nèi)容

let reads = [`${basepath}cptTemp/index.js`, `${basepath}cptTemp/cptTemp.js`];//要讀取的文件

let readFile = function () {
 return new Promise((res) => {
  for (let a of reads) {
   let text = fs.readFileSync(a).toString();
   text = text.replace(/time/g, moment().format('YYYY/MM/DD'))
    .replace(/temp/g, name);
   file.push(text)
  }
  res(file);
 })
}


每個生成好的文件都需要一個創(chuàng)建的時間,及作者,包括文件的輸出,以及class等結構,這些都是比較公用的,把他們寫在模板當中,然后讀取出來,替換其中的關鍵詞,如時間,組件名等。

生成文件并寫入內(nèi)容

提前建立好要生成的文件和要讀取的文件。如:

let writes = [`${name}.js`, `${name}.html`, `${name}.less`, `index.js`];

let writeFile = function (file) {
 return new Promise((res, rej) => {
  (async function () {
   for (let a of writes) {
    await fs.writeFile(`${basepath}${a}`,
     a == writes[3] ? file[0] : a == writes[0] ? file[1] : '', (err) => {
      if (err) rej(err)
     })
   }
   res('succ');
  })()
 })
}

目前只寫了2個要讀取的模板,在生成文件之后,會將模板中的內(nèi)容填充進去。

總結

以上就完成了一個自動生成前端項目組件的小腳本了,當然,還可以繼續(xù)擴充,比如這些組件其實還需要再到,組件管理的那個js中去注入,這些都可以用腳本完成,本文就到這里為止了。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

項目地址:https://github.com/jiwenjiang...

本地下載地址:http://xiazai.jb51.net/201707/yuanma/angularSeed(jb51.net).rar

相關文章

  • 多版本node的安裝和切換詳細操作步驟

    多版本node的安裝和切換詳細操作步驟

    有時候需要運行不同的項目,node版本不一致會導致不少問題,下面這篇文章主要給大家介紹了關于多版本node的安裝和切換詳細操作步驟的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • node中實現(xiàn)刪除目錄的幾種方法

    node中實現(xiàn)刪除目錄的幾種方法

    這篇文章主要介紹了node中實現(xiàn)刪除目錄的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • 手把手教你VSCode配置JavaScript基于Node.js的調(diào)試環(huán)境

    手把手教你VSCode配置JavaScript基于Node.js的調(diào)試環(huán)境

    最近在補數(shù)據(jù)結構,在用VScode調(diào)試js代碼文件結果怎么都不行,這篇文章主要給大家介紹了關于VSCode配置JavaScript基于Node.js的調(diào)試環(huán)境的相關資料,需要的朋友可以參考下
    2022-12-12
  • Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程

    Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程

    本文主要介紹了Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-05-05
  • node.js中的http.response.setHeader方法使用說明

    node.js中的http.response.setHeader方法使用說明

    這篇文章主要介紹了node.js中的http.response.setHeader方法使用說明,本文介紹了http.response.setHeader的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • NodeJS處理Express中異步錯誤

    NodeJS處理Express中異步錯誤

    本文主要闡述如何在 Express 中使用錯誤處理中間件(error-handling middleware)來高效處理異步錯誤。在 Github 上有對應 代碼實例 可供參考。
    2017-03-03
  • Node.js靜態(tài)文件服務器改進版

    Node.js靜態(tài)文件服務器改進版

    這篇文章主要介紹了Node.js靜態(tài)文件服務器改進版的相關資料,需要的朋友可以參考下
    2016-01-01
  • node.js+captchapng+jsonwebtoken實現(xiàn)登錄驗證示例

    node.js+captchapng+jsonwebtoken實現(xiàn)登錄驗證示例

    本篇文章主要介紹了node.js+captchapng+jsonwebtoken實現(xiàn)登錄驗證示例,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • 獨立部署小程序基于nodejs的服務器過程詳解

    獨立部署小程序基于nodejs的服務器過程詳解

    這篇文章主要介紹了獨立部署小程序基于nodejs的服務器過程詳解,完全自定義的部署小程序服務器, 不依托于騰訊云服務器體系. 以阿里云服務器為基礎建立.服務器語言選用nodejs.,需要的朋友可以參考下
    2019-06-06
  • 原生node.js案例--前后臺交互

    原生node.js案例--前后臺交互

    本文主要介紹了原生node.js案例--前后臺交互。本案例包含4部分:(1)HTML部分;(2)ajax部分;(3)JavaScript部分;(4)node服務器部分。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02

最新評論

汉川市| 宜良县| 阿鲁科尔沁旗| 日照市| 江川县| 苏尼特右旗| 横峰县| 深泽县| 岢岚县| 隆化县| 桐柏县| 昌吉市| 大埔县| 莱阳市| 利津县| 开封县| 商城县| 敦化市| 华阴市| 阿克| 黔东| 广宁县| 莱阳市| 德兴市| 北海市| 浦城县| 永丰县| 保德县| 全南县| 海阳市| 宁明县| 怀宁县| 揭阳市| 长沙县| 定边县| 奉贤区| 新竹县| 望谟县| 九龙城区| 汉阴县| 吉隆县|