Frage

Zu diesem Zeitpunkt bin ich ein wenig frustriert über Anforderungen.

Ich versuche, JQuery und andere Bibliotheken in meiner App.Coffee -Datei zu laden. Das Problem ist, dass ich Modulabhängigkeiten in meinem Definieren nicht laden kann. Einige der Eingabeargumente (JQ, JSN usw.) sind null oder nur htmldocument -Objekte. Dies ändert sich basierend auf der Permutation von Plugins, die ich versuche: 'Order', 'domready' oder keine.

Mein JS Lib -Verzeichnis sieht aus wie a). Und meine App.coffee -Datei sieht aus wie b). Ich habe versucht, "Pfade" im Request.config und nur in einer Rohdatei zu verwenden (was Sie unten sehen). Ich bin mir der Integration von Anforderungs-Jquery bewusst. Aber sollte ich nicht in der Lage sein Bestellen Sie mein Plugin -Laden?

Ich bekomme einen anderen Fehler, wenn ich mit dem Namen "Pfade" versuche. Ich sehe jemanden Vorgeschlagene JQuery 1.7 (auch hier). Funktioniert das? Ich wollte zum ersten Mal einen Schritt zurücktreten und sicherstellen, dass ich die Konzepte richtig hingezogen habe. i) Bedarf.Config II) Moduldefinition mit Abhängigkeiten, iii) das Bestellplugin usw.

Wenn ich diese Konzepte korrekt runter habe, würde ich denken, dass es sich um ein JQuery -Versionsproblem handelt. Es ist jedoch nicht nur JQuery als Abhängigkeit. Und es ist unglaublich ärgerlich, auf diese Weise Zeit zu verlieren. Jede Hilfe wird geschätzt. Danke im Voraus.

EIN)

    $ 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
    )

War es hilfreich?

Lösung 2

Danke für die Richtung dazu.

Aber ich ging zu JQuery-1.7, musste aber trotzdem aus dem globalen Raum ziehen, um das Objekt zu bekommen. Das gilt für meine anderen Libs für den Moment und ihre Abhängigkeiten. Was ich am Ende gemacht habe, war, ein Objekt mit den Abhängigkeiten darin zurückzugeben. Ich habe Bibliothek geladen wurde mit dem Plugin bestellen.

Der Vertrag von Abhängigkeitsobjekten, die in Ihre Rückruffunktion übergeben werden (JQ, Pur, JSN usw.), funktioniert einfach nicht für diese Bibliotheken. Es funktioniert für meine definierten Module (z. B. Modelle), aber nicht für externe Bibliotheken. Ich habe das versucht Verwenden Sie Plugin, aber festgestellt, dass es nicht für Unterstrich und Rückgrat funktioniert hat, oder ich habe es nicht richtig eingerichtet. Dies ist vorerst meine arbeitsfähige Lösung; Obwohl ich sagen muss, dass die Kopfschmerzen die Vorteile für fordern.js ernsthaft trüben.

    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()
    )

Andere Tipps

Die neueste JQuery unterstützt AMD -Lader und verhalten sich mit fordern.js gut. Unterstich und Backbone tun nicht und Sie müssen beide:

  1. Verwenden Sie eine geänderte Version, beispielsweise die eines vom Autor des Anforderungens.
  2. Verwenden Sie ein Plugin. Ich habe die Verwendung gefunden! Plugin von hier Um meinen Bedürfnissen perfekt zu entsprechen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top