addyosmani / largescale-demo

Scalable JS architecture demo for #jqcon
138 stars 26 forks source link

Core Logic - Question #2

Open james-gardner opened 12 years ago

james-gardner commented 12 years ago

More of a question than a concern as I've been trying to learn more about JavaScript from your example.

In app.core the define function creates a var called 'temp' and runs the constructor. I don't understand why app.f.define is passed in as a parameter when the following check will work without it.

temp = constructor(); if (temp.init && app.utils.typeEqual(temp.init, 'function') && temp.destroy && app.utils.typeEqual(temp.destroy, 'function')) { // Works just the same. }

Perhaps I am not understanding the bigger picture here. Is this simply a matter of good practice?

Any help appreciated!

mpodriezov commented 12 years ago

... looks like Addy tried to encapsulate mediator (publish, subscribe system) and DOM specific methods (HTML elements find, query, bind,unbind, etc) into facade object 'f' and pass it into each module during its "installation" inside core.define method. This facade pattern allows modules to use libraries like JQuery, Dojo etc in one single interface... so they can be changed in any time..