打造自己的JavaScript武器庫

SlaneYang發表於2017-11-13

bVYmF0

 

自己打造一把趁手的武器,高效率完成前端業務程式碼。

前言

作為戰鬥在業務一線的前端,要想少加班,就要想辦法提高工作效率。這裡提一個小點,我們在業務開發過程中,經常會重複用到日期格式化url引數轉物件瀏覽器型別判斷節流函式等一類函式,這些工具類函式,基本上在每個專案都會用到,為避免不同專案多次複製貼上的麻煩,我們可以統一封裝,釋出到npm,以提高開發效率。

這裡,筆者已經封裝併發布了自己的武器庫 outils,如果你對本專案感興趣,歡迎 star 本專案。當然你也可以在本專案的基礎上封裝自己的武器庫。

常用函式彙總

這裡先分類整理下,之前專案中多次用到的工具函式。

1.Array

2.Class

2.1 addClass

2.2 hasClass

2.3 removeClass

3.Cookie

3.1 getCookie

3.2 removeCookie

3.3 setCookie

4.Device

4.1 getExplore

4.2 getOS

5.Dom

5.1 getScrollTop

5.2 offset

5.3 scrollTo

5.4 setScrollTop

6.Keycode

6.1 getKeyName

7.Object

7.1 deepClone

7.2 isEmptyObject

8.Random

8.1 randomColor

8.2 randomNum

9.Regexp

9.1 isEmail

9.2 isIdCard

9.3 isPhoneNum

9.4 isUrl

10.String

10.1 digitUppercase

11.Support

11.1 isSupportWebP

12.Time

12.1 formatPassTime

12.2 formatRemainTime

13.Url

13.1 parseQueryString

13.2 stringfyQueryString

14.Function

14.1 throttle

14.2 debounce

封裝

除了對上面這些常用函式進行封裝, 最重要的是支援合理化的引入,這裡我們使用webpack統一打包成UMD 通用模組規範,支援webpackRequireJSSeaJS等模組載入器,亦或直接通過標籤引入。

但這樣,還是不能讓人滿意。因為完整引入整個庫,略顯浪費,我們不可能用到所有的函式。那麼,就支援按需引入

1.目錄結構說明

2.構建指令碼

這裡主要說明一下專案中 build.js 的構建過程
第一步,構建全量壓縮包,先刪除min目錄中之前的outils.min.js,後通過webpack打包並儲存新的壓縮包至min目錄中:

第二步,拷貝函式模組至根目錄,先刪除根目錄中之前的函式模組,後拷貝src下面一層目錄的所有js檔案至根目錄。這麼做的目的是,拷貝到根路徑,在引入的時候,直接require('outils/')即可,縮短引入的路徑,也算是提高點效率。

3.書寫測試用例

俗話說,不寫測試用例的前端不是一個好程式設計師。那就不能慫,就是幹。

但是因為時間關係,本專案暫時通過專案中的 test.js ,啟動了一個koa靜態伺服器,來載入mocha網頁端的測試頁面,讓筆者書寫專案時,可以在本地對函式功能進行測試。
但是後續將使用travis-ci配合Github來做持續化構建,自動釋出到npm。改用karmamochapower-assert做單元測試,使用Coverage測試覆蓋率。這一部分,後續更新。

這裡給大家推薦一個好用的斷言庫 power-assert ,這個庫記住assert(value, [message])一個API就基本無敵,從此再也不用擔心記不住斷言庫的API。

本專案的所有測試用例都在test目錄下,大家可以作一定參考。

更新:單元測試,已使用karmamochapower-assert,使用Coverage測試覆蓋率,並整合 travis-ci 配合Github來做持續化構建,可以參考本專案的travis配置檔案 .travis.yml karma的配置檔案 karma.conf.js

釋出

首先放到Github託管一下,當然你也可以直接fork本專案,然後再加入你自己的函式。
以筆者專案,舉個例子:

1.新增自己的函式

src目錄下,新建分類目錄或者選擇一個分類,在子資料夾中新增函式模組檔案(建議一個小功能儲存為一個JS檔案)。

然後記得在src/index.js檔案中暴露isNaN函式

2.單元測試

test檔案新建測試用例

然後記得在test/index.html中引入之前建立的測試用例指令碼。

3.測試並打包

執行npm run test,看所有的測試用例是否通過。如果沒有問題,執行npm run build構建,之後提交到個人的 github 倉庫即可。

4.釋出到npm

www.npmjs.com 註冊賬號,修改本地package.json中的nameversionauthor等資訊,最後npm publish就大功告成了。
注意:向npm發包,要把映象源切到 www.npmjs.com ,使用cnpm等第三方映象源會報錯。

使用

1.瀏覽器

直接下載min目錄下的 outils.min.js ,通過標籤引入。

注意: 本倉庫程式碼會持續更新,如果你需要不同版本的增量壓縮包或原始碼,請到 github Release 頁面下載對應版本號的程式碼。

2.Webpack、RequireJS、SeaJS等模組載入器

先使用npm安裝outils

推薦使用方法

當然,你的開發環境有babel編譯ES6語法的話,也可以這樣使用:

總結

這裡只是簡單封裝,釋出到npm上,省去下次複製貼上的功夫,或者直接Goole的時間。如果筆者的庫中,沒有你常用的函式,或者你有更好的建議,歡迎來本專案的 Github Issues 交流,如果覺得不錯,歡迎 star 本專案。

當然,更好的建議是 fork 本專案,或者直接新建自己的專案,新增自己 想要的常用的記不住的 函式,甚至是可以抽象出來的功能,封裝成自己順手、熟悉的庫。 這樣才能打造出你自己的武器庫,瞬間提高你的單兵作戰(開發)能力。

工欲善其事必先利其器。有了屬於自己的這把利器,希望加班也會變成奢望。O(∩_∩)O哈哈~

相關文章