摘要:最近寫了個(gè)簡(jiǎn)單的命令行工具,用滿足一些工作上的需求。后面加上了圖片壓縮,以及圖片轉(zhuǎn)的功能。就在寫這個(gè)圖片處理工具的過(guò)程中,自己得到了一些理解。不過(guò)這里更好的解決方法是可以提示用戶圖片體積過(guò)大,程序可以先自動(dòng)壓縮圖片,再生成。
最近寫了個(gè)簡(jiǎn)單的命令行工具,用node 滿足一些工作上的需求。是一個(gè)處理圖片的腳本,一開始只有一個(gè)指令,將指定圖片輸出成配置好的不同大小尺寸的圖片。后面加上了圖片壓縮,以及圖片轉(zhuǎn)base64的功能。就在寫這個(gè)圖片處理工具的過(guò)程中,自己得到了一些理解。
項(xiàng)目結(jié)構(gòu)
項(xiàng)目一開始的幾個(gè)文件夾,先新建好。什么constants,lib,utils之類的都安排上。雖然麻煩點(diǎn),但起碼看著舒服,別人查看你的項(xiàng)目的時(shí)候也方便。至少不會(huì)覺得你外行(就在寫這個(gè)的同時(shí),突然想到可以在自己的腳手架工具中加一個(gè)文件夾結(jié)構(gòu)生成指令。。。哈哈哈
代碼結(jié)構(gòu)
代碼風(fēng)格一定要統(tǒng)一好,linter 選一個(gè)自己用的慣的,可以參考別的大佬怎么配置,總之就是要有一套統(tǒng)一的代碼風(fēng)格。這一塊在編輯器上可以安裝上插件幫忙檢測(cè),code formater 也可以幫忙調(diào)整。
上面提到的項(xiàng)目結(jié)構(gòu)這里就有用了。在敲代碼的時(shí)候總歸會(huì)用到一些常量,工具函數(shù),這時(shí)候就可以把這些要用到的常量,工具函數(shù)統(tǒng)一管理起來(lái),分配好。一開始會(huì)覺得麻煩,但是相信我。這個(gè)習(xí)慣養(yǎng)成了自己的代碼質(zhì)量也會(huì)提高(同時(shí)很裝逼
可以適當(dāng)?shù)脑谶吘帉懘a的時(shí)候邊運(yùn)用一些設(shè)計(jì)模式。雖然說(shuō)設(shè)計(jì)模式在一些簡(jiǎn)單的項(xiàng)目中可能是畫蛇添足,但是從簡(jiǎn)單的項(xiàng)目練習(xí)起來(lái),形成思維習(xí)慣,不失為一個(gè)好的鍛煉。
TL;DR
我這次就遇到一個(gè)代碼設(shè)計(jì)模式上的缺陷,我所寫的一些指令方法其中的logger和主程序都寫在了一個(gè)主函數(shù)中。這時(shí)有了一個(gè)場(chǎng)景,我在轉(zhuǎn)base64的指令中發(fā)現(xiàn)當(dāng)圖片提及過(guò)大,生成的base64編碼量是很龐大的,這時(shí)候就加了個(gè)圖片體積的限制。不過(guò)這里更好的解決方法是可以提示用戶圖片體積過(guò)大,程序可以先自動(dòng)壓縮圖片,再生成base64。然而這里實(shí)現(xiàn)起來(lái)就限于我之前提到的,代碼耦合,導(dǎo)致主要的腳本程序無(wú)法得到復(fù)用,從而增加了工作量。
以上,我描述了我在敲代碼時(shí)的一個(gè)場(chǎng)景。而我接下來(lái)做的可能就是會(huì)去把各個(gè)指令的主要程序從執(zhí)行函數(shù)中抽離出來(lái),給代碼解藕,這樣就可以很自如的應(yīng)對(duì)不同的需求挑戰(zhàn)
建議閱讀一些關(guān)于設(shè)計(jì)模式的知識(shí),一開始理解起來(lái)會(huì)比較抽象,但總得有開始咯
實(shí)際代碼中的嗨點(diǎn)
我是前端程序員,慢慢的在寫JS的時(shí)候,發(fā)現(xiàn)一些很舒服的點(diǎn)(自嗨)
適當(dāng)?shù)倪\(yùn)用閉包,尖頭函數(shù),高階函數(shù),這些概念要多去理解,多運(yùn)用。實(shí)踐起來(lái)之后真的很嗨
比如:
const handleGenerateFail = spinner => err => { spinner.text = `壓縮圖片失敗: ${err}` spinner.fail() } const handleGenerateSucceed = spinner => _output => { spinner.text = `壓縮圖片成功` spinner.succeed() console.log(" 查看", _output) } const spinner = ora(`圖片壓縮中`).start() const failHandler = handleGenerateFail(spinner) const successHandler = handleGenerateSucceed(spinner)
最后
記錄一下自己在洗澡的時(shí)候想到的一些東西(廁所真的是一個(gè)激發(fā)靈感的好地方
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99856.html
showImg(https://segmentfault.com/img/bVWOEd?w=900&h=385); 闊別已久的社區(qū)訪談?dòng)蛛p叒叕和大家見面來(lái),介紹我們這次嘉賓之前,清蒸先來(lái)簡(jiǎn)單地說(shuō)下以后的社區(qū)專訪將會(huì)加入的兩個(gè)小模塊:訪談嘉賓的優(yōu)質(zhì)內(nèi)容以及為期一個(gè)星期的提問(wèn)時(shí)間,在本文發(fā)布這天開始計(jì)時(shí),在接下來(lái)的一個(gè)星期,你們可以對(duì)專訪嘉賓進(jìn)行提問(wèn),唔,注意提問(wèn)姿勢(shì)(太過(guò)八卦的就不會(huì)給予回復(fù)啦(//...
showImg(https://segmentfault.com/img/bVWOEd?w=900&h=385); 闊別已久的社區(qū)訪談?dòng)蛛p叒叕和大家見面來(lái),介紹我們這次嘉賓之前,清蒸先來(lái)簡(jiǎn)單地說(shuō)下以后的社區(qū)專訪將會(huì)加入的兩個(gè)小模塊:訪談嘉賓的優(yōu)質(zhì)內(nèi)容以及為期一個(gè)星期的提問(wèn)時(shí)間,在本文發(fā)布這天開始計(jì)時(shí),在接下來(lái)的一個(gè)星期,你們可以對(duì)專訪嘉賓進(jìn)行提問(wèn),唔,注意提問(wèn)姿勢(shì)(太過(guò)八卦的就不會(huì)給予回復(fù)啦(//...
摘要:規(guī)范首先從框架規(guī)范起將不規(guī)范的模式擴(kuò)展為較為規(guī)范的模式,再就是平時(shí)寫代碼時(shí)命名數(shù)據(jù)庫(kù)設(shè)計(jì)命名文件夾命名等規(guī)范,還有諸如語(yǔ)句書寫的規(guī)范關(guān)鍵詞大寫表名和字段名用標(biāo)識(shí)等,感謝大神小志公子和轉(zhuǎn)啊轉(zhuǎn)提醒。就拿的圖做文章的配圖啦,力頂。 ABROAD項(xiàng)目好久沒(méi)寫文章了,放了太久,這次要開始發(fā)力完成它了! 在項(xiàng)目停滯的這一兩個(gè)月里,又學(xué)習(xí)了很多新東西,特別是最近加入了一個(gè)開發(fā)者社區(qū)(請(qǐng)戳http:...
閱讀 1789·2023-04-25 14:33
閱讀 3389·2021-11-22 15:22
閱讀 2188·2021-09-30 09:48
閱讀 2700·2021-09-14 18:01
閱讀 1750·2019-08-30 15:55
閱讀 3012·2019-08-30 15:53
閱讀 2150·2019-08-30 15:44
閱讀 657·2019-08-30 10:58