1
我正在使用RequireJS
RequireJS如何決定要運行什麼以及要加載什麼?
一個EmberJS
應用在我的routes.coffee
文件,我定義我的路由:
define ['jquery'
'ember'
'_'
'cs!myapp/myapp'
"cs!myapp/routes/index_route"
], ($, Ember, _, MyApp, IndexRoute) ->
alert "Inside myapp route"
MyApp.Router.map() ->
@resource "play", path: '/play',() ->
@resource "myapp", {},() ->
@resource "games", {},() ->
@route "next"
@resource "frames", {},() ->
@route "commercial"
@resource "trivia", {},() ->
@route "commercial"
@route "start"
@route "howItWorks"
@route "goodbye"
@route "readyToStart"
@route "noContent"
MyApp.IndexRoute = IndexRoute
具體來說,我的理解是,這是一個define
不是require
,所以它不該不執行該代碼。但警報消失。那麼發生了什麼?
我的'routes.coffee'用在'main.coffee'的'define'中,那麼這意味着它只是在'define'中運行? – Shamoon
是的。當RequireJS加載'main.coffee'時,它會讀取傳遞給'define'調用的依賴項列表,該列表包含'routes.coffee',因此會加載'routes.coffee',這會導致其工廠函數被調用和「提醒」。然而,它不是'routes.coffee'中的'define'調用,它會導致自己的工廠函數被執行。一個'define'的工廠函數總是由*另一個*'define'或一個'require'調用來執行。 – Louis