簡體   English   中英

如何今天打包客戶端Javascript庫?

[英]How to package a client-side Javascript library today?

我一直在追趕現代客戶端JS生態系統,並閱讀CommonJS和AMD等模塊系統(包括相關工具 - browserify,requirejs,onejs,jam,還有其他幾十個)。 如果我正在編寫一個Javascript庫,我該如何打包它,以便它可以最廣泛地訪問(理想情況下由發誓CommonJS,AMD,特別是那些都沒有)的用戶?

像jQuery這樣的流行庫似乎只是使用舊式文件串聯來構建自身並動態檢測它是應該寫入導出還是全局上下文。 我目前正在做同樣的事情,但主要的缺點是如果我(不像jQuery)依賴於幾個庫,那么不必要求用戶手動預先包含傳遞集是很好的。 (雖然我目前只有兩個依賴項。)當然還有全局命名空間污染。

或者,為每個上下文生成我的庫的多個版本可能是最干凈的?

這也影響包裝和出版。 有幾個系統,但我相信主要的一個是涼亭,這很容易處理,因為它所做的一切都是獲取。 但是,如果我想將其打包為組件,則需要CommonJS模塊。

我應該注意其他相關方面嗎? 所有這些都有適當的示例項目嗎?

我一直在考慮這個問題,我得出了幾個結論:

  1. 創建可在全局和AMD設置中使用的框架的一個版本
  2. 不要過於不得不要求您的客戶手動包含依賴項,它是一個每項目一項的活動, 無論如何都應該完成,無論您是提供AMD打包還是全局范圍的框架(第三方家屬的放置將不得不無論如何要調整,就是我說的)
  3. 我使用Grunt進行項目建設/包裝/測試/ linting /無論如何,所以對於所有其他包裝替代品我都有不同的任務。

因此,簡而言之,首先為“老派/ AMD”打造,后來打造“新時代”。

PS

我也堅信,您的包裝和交付流程/需求不應(盡可能)決定您的架構和開發決策

我嘗試構建最可定制,模塊化和可用的代碼,同時使用我選擇的包裝范例,然后我考慮替代包裝。 如果我在第一部分中成功,第二部分通常要么直接進行,要么需要很少的代碼庫更改(因為第一步中的模塊化和適當的原則應用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM