Până azi, foloseam ori Grunt ori Gulp pentru a combina fișierele JS și nu îmi făceam probleme foarte mari legate de _modul_aritate. Știu de existența AMD, Require & co de foarte mult timp dar pur și simplu nu am găsit niciodată motivația necesară pentru a le încerca.
Azi totul s-a schimbat, am început să folosesc Browserify. În principiu îmi place, doar că am o problemă. Sau cel puțin așa cred…
Am o aplicație simplă backbone, în care am extras fiecare componentă în folderul corespunzător (models
, views
, collections
). Am și un fișier „principal”, să-i zicem app.js
, unde am următoarele:
var PageModel = require('./models/Page.js');
var PagesCollection = require('./collections/Pages.js');
var ListItem = require('./views/ListItem.js');
var ListView = require('./views/List.js');
var MainList = require('./views/MainList.js');
Prima problemă? PagesCollection
depinde de PageModel
:
module.exports = function (PageModel) {
return Backbone.Collection.extend({
model : PageModel
});
};
A doua problemă? MainList
depinde de: ListView
(care la rândul lui depinde de ListItem
) și PageCollection
.
Acum, eu le pot trimite pe toate astea ca parametru, dar am senzația că fac ceva greșit și/sau că-mi scapă ceva, pentru că deja mi se pare foarte complicat (deși „aplicația” cu totul are în jur de 50 linii):
var MainList= require('./views/MainList.js')({
ListView : ListView,
PagesCollection : PagesCollection,
});
Sau ar trebui să includ dependințele din modulele în care am nevoie de ele? (caz în care… cum voi mai face testarea?)