2014-06-03 3 views
4

Я читаю this article и практикую его сам.

Если я удалю Магистраль. $ = $, Код не будет работать. Зачем?

var Backbone = require('backbone'); 
var $ = require('jquery'); 
Backbone.$ = $; 

module.exports = Backbone.View.extend({ 
    initialize: function(){ 
    console.log('wuuut') 
    this.render(); 
    }, 

    render: function(){ 
    $('body').prepend('<p>wooooooooooooooo</p>'); 
    } 
}); 

Почему в узле js мне нужно назначить jquery члену объекта Backbone?

ответ

3

По умолчанию Магистральная имеет следующий код:

// For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns 
// the `$` variable. 
Backbone.$ = $; 

Если загружать модули через require, $ не доступен для позвоночника, так что вы должны установить его вручную. И если вы этого не сделаете, Backbone.View, который зависит от jQuery, не будет работать.

+0

Поскольку у Backbone уже есть этот код назначения, почему я должен его снова вручную? –

+0

Из-за того, как браузер оборачивает свои модули, '$' недоступен в глобальном контексте, и поэтому он недоступен, если в модуле браузера вызывается 'Backbone. $ = $'. – Eternal1