Я хотел бы разделить свои библиотеки и код приложения на отдельные пакеты, чтобы я мог вставлять теги script для каждого отдельно, поскольку я не хочу, чтобы jQuery, Backbone и Underscore добавлялись в каждый из моих пакетов приложений.
Тем не менее, я пробовал несколько способов сделать это, и каждый раз я получаю сообщение об ошибке от Backbone:
Uncaught TypeError: Cannot read property 'ajax' of undefined
Я компилирую файл libs.js, который выглядит так:
global.$ = require('./jquery')
global._ = require('underscore')
global.Backbone = require('backbone')
Мне пришлось вручную загрузить jQuery и поместить его в мою папку /src/vendor, потому что по какой-то причине nom install jquery просто не работает.
У меня также есть простой код тестового приложения, который компилируется в app.js:
// User.js
var Backbone = require('backbone')
module.exports = User = Backbone.Model.extend({
url : '/user'
});
// app.js
var User = require('./user');
var u = new User()
u.on('change', function(e){
$('h1').append('Updated!')
});
u.fetch()
В моем HTML тег script для libs.js предшествует тегу app.js.
Может быть, я просто с самого начала подошел ко всему этому странным образом, потому что, похоже, не так много полезного в гугле, когда дело доходит до использования этих библиотек таким образом, поэтому любой вклад в это очень важен. оценил!