3. Big Credits to:
Addy Osmani
Addy Osmani is a rebel JavaScript blogger, speaker and a
UI Developer for AOL (yes, we're still around!). He is also a
member of the jQuery [Bug Triage/Docs/Front-end] teams
where he assists with bugs, documentation and developer
evangelism. His recent open-source projects include
TodoMVC, which helps developers compare JavaScript
MVC frameworks. For more on Addy’s work, check out his
official website AddyOsmani.com for tutorials and
magazines such as .net for his thoughts and commentaries
on the state of the web.
5. Early JavaScript application
● Mainly for web design
● Copy/Paste pattern commonly used
● Very poor browser support
● Lack of “community” knowledge base
● Low performace
6. Modern JavaScript application
● AJAX era started
● Adoption and respect by masses
● Huge improvement on standard and vendors
● Performance boosted
● New web assembly language
● Expertice & Best practices
12. What is Large scale app?
“In my view, large-scale JavaScript apps are non-
trivial applications requiring significant developer
effort to maintain, where most heavy lifting of data
manipulation and display falls to the browser.”
- Addy Osmani
16. Namespace pattern
“Namespacing is a technique employed to avoid
collisions with other objects or variables in the global
namespace”
Goal: avoid names collision and provide facilities
to organize blocks of functionality into easily
managable groups
19. Module pattern
“The module pattern is a popular design that pattern that
encapsulates 'privacy', state and organization using
closures”
Goal: It provides a way of wrapping a mix of
public and private methods and variables,
protecting pieces from leaking into the global
scope and accidentally colliding with another
developer's interface
22. Facade pattern
“ The facade pattern provides a convenient higher-level
interface to a larger body of code, hiding its true
underlying complexity. Think of it as simplifying the API
being presented to other developers”
Goal: to hide implementation-specific details
about a body of functionality contained in
individual modules. The implementation of a
module can change without the clients really
even knowing about it.
26. Mediator pattern
“ The mediator is a behavioral design pattern that allows
us to expose a unified interface through which the
different parts of a system may communicate”
Goal: promotes loose coupling by ensuring that
instead of components referring to each other
explicitly, their interaction is handled through
this central point. This can help us decouple
systems and improve the potential for component
reusability.
30. Observer pattern
“ The Observer is a design pattern which allows an object
(known as a subscriber) to watch another object (the
publisher), where we provide a means for the subscriber
and publisher form a listen and broadcast relationship”
Goal: the promotion of loose coupling. Rather
than single objects calling on the methods of
other objects directly, they instead subscribe to a
specific task or activity of another object and are
notified when it occurs.