

Backbone.js Tips : Lessons from the trenches - prateekdayal
http://devblog.supportbee.com/2011/07/29/backbone-js-tips-lessons-from-the-trenches/

======
jashkenas
This is a very useful post -- unfortunately, it describes an all too common
occurrence: treating a single example as gospel truth. I've gone ahead and
added an explicit "There's More Than One Way To Do It" section to the FAQ.

<http://documentcloud.github.com/backbone/#FAQ-tim-toady>

 _Edit_ : Also, for folks looking for useful patterns, I'd recommend scrolling
through and viewing source on a few of the increasingly lengthy list of
example apps:

<http://documentcloud.github.com/backbone/#examples>

Pandora, Trajectory, and SeatGeek were added recently, and there are more that
are waiting for a blurb, including Sky+ and GroupOn:

<http://skyplustv.sky.com/tv-guide>

<http://www.groupon.com/now>

~~~
prateekdayal
Hi Jeremy,

Thanks for the comment. Also, thanks a lot for Backbone, underscore, coffee
and jammit. Half of our stack is your code :)

------
vmind
'Collections should keep track of their views' seems badly explained. You're
not keeping references to views on a collection, you're keeping a reference to
subviews inside a view that uses a collection. The code is correct, and
agnostic to whether the collection is local to the view, or a shared
collection.

~~~
prateekdayal
Thanks for the feedback. I will update the post.

Yes, collection should keep track of the subviews. Not the view that
initializes the collection

~~~
rgarcia
indexOfTicket and prevTicket are unused in your collection's addOne()
function.

</nitpick>

~~~
prateekdayal
Sorry about that. Actually they are used in the real code but I removed a lot
of other stuff when I copied over. I should have deleted more carefully

------
dmvaldman
Just like to add that Jashkenas has updated the Todo example code that this
article refers to (3 hrs ago at the time of this comment).

The link in this article in the first section "Models should not know about
Views" should link instead to <http://bit.ly/pfnFYu>

(gotten from the github history)

------
Swizec
To summarize: MVC, MVC, and more MVC.

Keep things decoupled with abundant usage of events.

~~~
davedx
For somebody new to MVC in JavaScript, how are models commonly implemented?
Some kind of AJAX?

~~~
prateekdayal
AJAX will be the lowest layer. Think of it as the database calls in an ORM
like activerecord. You have an object, you do some validations or perform some
logic and when you want to persist it on the server, you make an ajax call. In
backbone you will call save on the model and it will do a POST or PUT request
based on whether this is a new or already existing model.

~~~
Joakal
Would this be a good MVC framework for Javascript: <http://javascriptmvc.com/>
?

~~~
prateekdayal
Yes. It is a popular one. You should also look at <http://knockoutjs.com/> and
<http://maccman.github.com/spine/>

------
hippich
most of these is applicable to any MVC framework.

------
rushabh
After studying backbone and other such Javascript MVC frameworks, I realized
that they are not necessary.

JS has a wonderful MVC architecture built-in. all JS objects are models by
defaults, all views (HTML elements) are models too, and JQuery has a lot of
helper functions to simplify events.

These frameworks give you a good idea of how to organize your code better and
help you standardize implementation, but if you know what you are doing, you
can do it anyways.

Edit: typo

~~~
Pewpewarrows
Attitudes like this are what cause giant, unmaintainable spaghetti-code front-
end applications to be born.

~~~
rushabh
Code becomes unmaintable when it is not object oriented, ESP for front end
applications. Nothing to do with using slick looking syntax, IMHO

