1

bootstrap.js.coffee には、いくつかのコードがあります。

define [], ->
  App =
    Models: {}
    Collections: {}
    Routers: {}
    Helpers: {}
    Views: {
      Posts: {}
      Common: {}
      Sessions: {}
      Tokens: {}
      Passwords: {}
      Confirmations: {}
    }

「定義」メソッドがjsコードにある理由がわかりません?? さらに、他のコードでは、この「定義」メソッドはどこでも使用されます!

assets/javascripts/models/post.js.coffee

define ['backbone', 'bootstrap'], (Backbone, App) ->
  class App.Models.Post extends Backbone.Model
    paramRoot: 'post'
    urlRoot: '/posts'

    defaults:
      title: null
      content: null

メソッドを知りたい --- 「define」、メソッドは何をするのか、なぜメソッドの詳細をどこに書くべきか分からないのですか??

ありがとう !

4

1 に答える 1

0

私は JavaScript の専門家ではありませんが、これは RequireJS の一部だと思います。

docsによると、依存関係のある関数を定義しているようです:

モジュールに依存関係がある場合、最初の引数は依存関係名の配列であり、2 番目の引数は定義関数である必要があります。すべての依存関係がロードされると、モジュールを定義するために関数が呼び出されます。関数は、モジュールを定義するオブジェクトを返す必要があります。依存関係は関数の引数として定義関数に渡され、依存関係配列内の順序と同じ順序でリストされます。

//my/shirt.js now has some dependencies, a cart and inventory
//module in the same directory as shirt.js
define(["./cart", "./inventory"], function(cart, inventory) {
        //return an object to define the "my/shirt" module.
        return {
            color: "blue",
            size: "large",
            addToCart: function() {
                inventory.decrement(this);
                cart.add(this);
            }
        }
    }
);

この例では、 my/shirt モジュールが作成されます。my/cart と my/inventory によって異なります。ディスク上では、ファイルは次のように構成されています。

  • my/cart.js
  • my/inventory.js
  • my/shirt.js

上記の関数呼び出しでは、「cart」と「inventory」の 2 つの引数を指定しています。これらは、「./cart」および「./inventory」モジュール名で表されるモジュールです。

関数は my/cart および my/inventory モジュールがロードされるまで呼び出されず、関数はモジュールを「cart」および「inventory」引数として受け取ります。

一度に複数のバージョンのモジュールがページに存在できるように、グローバルを定義するモジュールは明示的に推奨されません (高度な使用法を参照)。また、関数の引数の順序は、依存関係の順序と一致する必要があります。

関数呼び出しからの戻りオブジェクトは、「my/shirt」モジュールを定義します。このようにモジュールを定義することで、「my/shirt」はグローバル オブジェクトとして存在しません。

于 2012-11-06T13:16:21.957 に答える