簡體   English   中英

早午餐:如何正確處理AMD和供應商代碼?

[英]Brunch: How to correctly deal with AMD and vendor code?

我真的很喜歡js中用於模塊管理的類AMD語法。 現在,我試圖找出如何在早午餐中使用require.js。 這是我要實現的目標:

  1. 所有供應商代碼應串聯在一個文件中。
  2. 導出的供應商符號應在全球范圍內可用(因為某些第三方代碼EXCPECT可以在此處找到它)。
  3. 我想使用require.js或Almod進行模塊管理。

問題是如果我加載require.js,一些供應商腳本正在嘗試定義匿名模塊。 這是從Backbone中摘錄的代碼,以供參考:

if (typeof define === 'function' && define.amd) {
    define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
      //...
    });

}

結果,require.js抱怨匿名模塊定義。

這就是默認情況下在早午餐中禁用包裝供應商代碼的原因。 許多供應商腳本具有UMD或它們自己的公開與通用模塊包裝不兼容的API的方式,但是如果不考慮它們,它們將與您的AMD結構一起使用。

您可能想做的是將您的供應商腳本按照需要由Brunch包裝的目錄和不需要的包裝在單獨的目錄中; 例如vendorvendor-wrapped 使用默認conventions設置,Brunch會將腳本包裝在vendor-wrapped而不是在vendor 然后,您可以將它們連接在一起(根據先前問題的示例 ):

      joinTo:
          'js/vendor.js': /^vendor(-wrapped)?[\\/](?!mocha|chai|sinon|sinon-chai)/

仍然有可能會遇到一些供應商腳本,這些腳本的結構使其即使與AMD也不兼容,即使在包裝時也是如此,在這種情況下,您的選擇是要么不使用這些庫,要么與作者合作。使它們更新,或維護自己的修改以使其與項目兼容。

暫無
暫無

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

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