Attualmente stiamo dando il via al nostro primo progetto Backbone.js qui al lavoro. In effetti è il nostro primo grande progetto JavaScript a parte le strane cose di jQuery.Qual è un buon modo per creare un progetto Backbone.js?
In ogni caso, abbiamo problemi con l'architettura per le nostre cose. Qual è il modo migliore per ordinare qualcosa?
Abbiamo iniziato ad avere tutto in file separati suddivisi in cartelle per; viste, modelli, collezioni e router e quindi includiamo tutto nel nostro index.html
. Il problema, tuttavia, è che questo ci lascia con la necessità di controllare l'evento pronto per il documento in ogni file. È questo il modo migliore per farlo?
Ecco un esempio:
Questo è il file chiamato PageModel
, la prima linea sembra sbagliato ...
$(function(){
app.models.Page = Backbone.Model.extend({
//stuff
});
});
Poi, nel nostro index.html
abbiamo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<link href="assets/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var app = app || {};
app.models = app.models || {};
app.collections = app.collections || {};
app.views = app.views || {};
app.routers = app.collections || {};
app.templates = app.templates || {};
app.models.griditems = app.models.griditems || {};
app.views.griditems = app.views.griditems || {};
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
<script src="assets/js/libs/json2.js" type="text/javascript"></script>
<script src="assets/js/libs/underscore-1.1.7.min.js" type="text/javascript"></script>
<script src="assets/js/libs/backbone-0.5.3.min.js" type="text/javascript"></script>
<script src="assets/js/models/GridItemModel.js" type="text/javascript"></script>
<script src="assets/js/models/GalleryGridItemModel.js" type="text/javascript"></script>
<script src="assets/js/models/NewsGridItemModel.js" type="text/javascript"></script>
<script src="assets/js/models/VideoGridItemModel.js" type="text/javascript"></script>
<script src="assets/js/collections/GridCollection.js" type="text/javascript"></script>
<script src="assets/js/templates/Submenu.js" type="text/javascript"></script>
<script src="assets/js/templates/GalleryGridItemTemplate.js" type="text/javascript"></script>
<script src="assets/js/views/GridView.js" type="text/javascript"></script>
<script src="assets/js/views/GridItemView.js" type="text/javascript"></script>
<script src="assets/js/views/GalleryGridItemView.js" type="text/javascript"></script>
<script src="assets/js/views/VideoGridItemView.js" type="text/javascript"></script>
<script src="assets/js/routers/Router.js" type="text/javascript"></script>
<script src="assets/js/Application.js" type="text/javascript"></script>
</head>
<body>
</body>
</html>
Non è necessario definire modelli/collezione/viste/router sull'evento DOMReady. L'unica cosa che deve essere chiamata solo quando il dom è pronto è 'Backbone.history.start()'. – shesek