成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用nodejs自動生成前端項目組件

468122151 / 2436人閱讀

摘要:代碼實施流程圖檢測文件夾讀取模板內容寫入組件獲取命令行參數(shù)以為例,想要創(chuàng)建一個文件夾,首先先要獲取命令行當中的。

腳本編寫背景

寫這個小腳本的初衷是,項目本身添加一個組件太繁瑣了,比如我想要去建立一個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(current版本),如要運行,請升級node版本為current版本。

預期效果

在命令行輸入:node set login
在conponents文件夾下面自動生成4個文件,并填寫index.js , login.js的文件公共內容。
如果輸入多層文件如: 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(); // 讀取模板內容
        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ù)查找。

讀取模板內容
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等結構,這些都是比較公用的,把他們寫在模板當中,然后讀取出來,替換其中的關鍵詞,如時間,組件名等。

生成文件并寫入內容

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

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個要讀取的模板,在生成文件之后,會將模板中的內容填充進去。

總結

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

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

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/83942.html

相關文章

  • GitHub 值得收藏的前端項目[每月更新...]

    摘要:也是一款優(yōu)秀的響應式框架站點所使用的一套框架為微信服務量身設計的一套框架一組很小的,響應式的組件,你可以在網(wǎng)頁的項目上到處使用一個可定制的文件,使瀏覽器呈現(xiàn)的所有元素,更一致和符合現(xiàn)代標準。 GitHub 值得收藏的前端項目 整理與收集的一些比較優(yōu)秀github項目,方便自己閱讀,順便分享出來,大家一起學習,本篇文章會持續(xù)更新,版權歸原作者所有。歡迎github star與fork 預...

    maxmin 評論0 收藏0
  • 我是如何使用React+Redux構建大型應用的

    摘要:所以前端工程師不僅僅是寫好頁面和做好兼容性。對前端工程師的技術能力也會帶來考驗。這里想要說的是,如果使用了,使用了服務端渲染,對于前端工程師的個人素質要求會比較高,因為需要處理很多服務端的問題。 背景 我們團隊有個項目由于開發(fā)時間較長,且是前后端雜糅的開發(fā)方式,維護成本很高,在線上暴露的問題很多。而且因為對接了公司一百多條產品線,每天都會接到大量的客訴和產品線反饋的問題。2017年11...

    canopus4u 評論0 收藏0
  • 2014 杭JS大會 會議盛況與技術熱點現(xiàn)場報道(直播)

    摘要:中國開發(fā)者的年度盛會中國開發(fā)者大會,于年月日在杭州舉辦了本年度的杭會議我們的和將為在現(xiàn)場為您帶來現(xiàn)場的報道,一覽大牛風采,直擊技術熱點。簽到中第日的會議即將開幕以下是與參會者和與博文視點的作者們合影 中國JS開發(fā)者的年度盛會JS中國開發(fā)者大會,于2014年6月21日在杭州舉辦了本年度的杭JS會議! 我們SegmentFault的 @integ 和 @shamiao 將為在現(xiàn)場為您帶來...

    caige 評論0 收藏0
  • 記最近一次Nodejs全棧開發(fā)經(jīng)歷

    摘要:背景前段時間大部門下新成立了一個推廣百度文字識別圖像識別等科技能力在金融領域應用的子部門。而且在百度內部提倡的也是使用和。百度內部有現(xiàn)成的服務接入文檔。 背景: 前段時間大部門下新成立了一個推廣百度OCR、文字識別、圖像識別等科技能力在金融領域應用的子部門。因為部門剛成立,基礎設施和人力都是欠缺的。當時分到我們部門的任務是抽調一個人做新部門主站前端開發(fā)工作。本來說的是只負責頁面的開發(fā)工...

    Lycheeee 評論0 收藏0

發(fā)表評論

0條評論

468122151

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<