I want to build a contact list in js, but there are so many js technologies like backbone.js, spine.js, knockout.js, etc. that I dont really know which one is best for me. 

My contacts have a few overarching types: FacebookUser, User, and UserList. The catch with userlist is that it is a collection of users or UserLists. Furthermore, it itself may or may not have its own contact information (like a company or a team). 

I want to display this list in a tree-view where you can drill down into UserList (and have the group members lazy loaded).

Lastly, the entire contact list is an instance. What I mean is that you have have 0-n number of contact lists open in the same window at a time.

What framework should I use for this situation?