簡體   English   中英

嘗試使用require.js加載模塊(AMD)時出錯

[英]Error trying module loading ( AMD ) with require.js

此時,我對requirejs感到有些沮喪。

我正在嘗試在我的App.coffee文件中加載jquery和其他庫。 問題是我無法在定義中加載模塊依賴項。 一些輸入參數(jq,jsn等)為null或只是HTMLDocument對象。 這會根據我嘗試的插件排列而變化:“ order”,“ domReady”或沒有。

我的js lib目錄看起來像A)。 我的App.coffee文件看起來像B)。 我試圖在require.config中使用“路徑”,並且僅使用原始文件引用(您在下面看到的內容)。 我知道requirejs-jquery集成。 但是我不能訂購插件嗎?

如果嘗試將其命名為“路徑”,則會收到一組不同的錯誤。 我看到有人建議使用jQuery 1.7也在此處 )。 這管用嗎? 我首先想退后一步,並確保我正確理解了這些概念。 i)require.config ii)具有依賴項的模塊定義,iii)訂單插件等。

如果我正確理解了這些概念,我認為這是一個jQuery版本問題。 但是,不僅僅是依賴jquery。 以這種方式浪費時間實在令人難以置信。 任何幫助表示贊賞。 提前致謝。

一種)

$ tree js/lib/
    js/lib/
    ├── backbone.js
    ├── backbone_loader.js
    ├── domReady.js
    ├── jquery-1.6.3.js
    ├── json2.js
    ├── order.js
    ├── pure.js
    ├── require.js
    └── underscore.js

B)

require.config({
      baseUrl: "/js",
      paths:
        order : '/js/lib/order'
        jQuery : '/js/lib/jquery-1.6.3'
        json2 : '/js/lib/json2'
        Underscore : '/js/lib/underscore'
        Backbone : '/js/lib/backbone_loader'
        pure : '/js/lib/pure'
    })


    define( [ 'js/lib/order!js/lib/jquery-1.6.3',
              'js/lib/order!js/lib/json2',
              'js/lib/order!js/lib/underscore',
              'js/lib/order!js/lib/backbone',
              'js/lib/order!js/lib/pure',
              'js/lib/order!js/bkeeping/models', ]
      (jq, jsn, und, bbn, pur, models) ->

        console.log('bkeeping LOADED')

        # return an object with the models in it  
        models : models
        jQuery : jq.noConflict()
        json2 : jsn 
        Underscore : und.noConflict()
        Backbone : bbn.noConflict()
        pure : pure
    )

最新的jQuery支持AMD加載程序,並與require.js配合使用。 Underscore和Backbone不需要,您將需要:

  1. 使用修改后的版本,比如一個從需要的作者。
  2. 使用插件。 我找到了用途! 這里插件完全適合我的需求。

感謝您的指導。

但是我去了jquery-1.7,但是仍然不得不從全局空間中拉出對象。 這適用於我現在的其他庫及其依賴項。 我最終要做的是返回一個帶有依賴項的對象。 我用order插件完成了庫的加載。

傳遞給回調函數(jq,pur,jsn等)的依賴項對象協定對於這些庫根本不起作用。 它適用於我定義的模塊(例如:模型),但不適用於外部庫。 我嘗試了use插件 ,但發現它不適用於下划線和主干,或者我沒有正確設置。 這是我目前可行的解決方案; 盡管我不得不說,令人頭疼的是嚴重困擾了require.js的好處。

define( [ 'order!js/lib/jquery-1.7',
              'order!js/lib/pure',
              'order!js/lib/json2',
              'order!js/lib/underscore',
              'order!js/lib/backbone',
              'order!bkeeping/models', ]
      (jq, pur, jsn, und, bbn, models) ->

        console.log('bkeeping LOADED')

        # return an object with the dependencies in it 
        models : models
        jQuery : jQuery.noConflict()
        pure : pur                      # pure and json2 objects are simply used in other libs. I don't need them directly
        json2 : jsn 
        Underscore : _.noConflict()
        Backbone : Backbone.noConflict()
    )

暫無
暫無

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

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