SlideShare a Scribd company logo
1 of 50
Download to read offline
Modern UI Architecture
“Latest trends and technologies involved in web development”
Suresh Patidar
(2nd September 2015)
Hello!
I am Suresh Patidar
An Engineering Graduate (B.E.) in Computer Science
Have 9+ years of experience in product development
using multiple technologies.
Passionate about Architectures, Design Patterns, UI
technologies and User Experience.
Road Map
Road Map
▷ Shift from classical to modern web development
▷ Latest trends and technologies involved
▷ Challenges and Solutions of a modern web development
▷ Architecture, Frameworks and Design patterns available
▷ Coding Best Practices, Dos & Don’ts for client side
development using JavaScript & CSS
▷ Open House
Shift in Web Development
Shift in Web Development
▷ SOA, API and REST based development
▷ Clients, consuming services are growing rapidly
▷ Server side vs Client side views
▷ Client playing vital role by taking more responsibility
▷ High performance apps with low bandwidth utilization
▷ Server Side implementations are becoming a thin layer
Latest Trends and Technologies
Latest Trends and Technologies
▷ Responsive Web Design (RWD)
Support multiple form factors including mobile and tablet browsers
▷ Web 2.0
Shift from expert generated content to user generated contents
▷ Rich Interactive Applications (RIA)
Shift from Static web apps to more interactive, desktop like web sites to simplify
consumer creation of contents.
▷ Ajax
Architectural shift to support RIA requirements
▷ HTML5
Websocket
Webstorage
Webworkers
Application cache
…
Latest Trends and Technologies (cont.)
▷ CSS3
Animations,Transitions
Gradients
Advanced Selectors and Media Queries
FlexBox, Border images and Multiple backgrounds
...
▷ Application testability and Unit Testing
TDD
BDD
▷ Single Page Application (SPA)
Create fluid and responsive Web apps, without constant page reloads
Challenges and Solutions
Challenges and Solutions
▷ Using best practices
Following time tested design patterns
Code review
Proper and enough Commenting & Logging
Discourage suppressing errors and corner cutting in development
Have clear distinction between process improvement vs process discarding
▷ The User Experience
Personalized experience to users
Utilize the analysis/study done by various independent bodies
Multilingual Support
▷ The growing size of the code at client side
Have good architecture for client side
Write code in modular fashion. Encourage reusability and loose coupling
Have clear separation of concerns
Follow “Don’t Repeat Yourself” (DRY) approach to programming
Challenges and Solutions (cont.)
▷ Hiding the differences in target platform
Platform detection for rendering features
Graceful degradation
▷ Selecting right set of Tools and Technologies
Have clear visibility on application requirements
Consider future requirements and scalability
▷ Performance and Speed
Follow asynchronous loading
Load only relevant/required information
Keep user engaged
Use minification, caching and other optimization techniques
▷ Testing, Support and Upgrade
JavaScript and CSS let you do anything
(No matter how Stupid)
The point is that we don't have
to do stupid things, just because
we can.
Architectures, Frameworks and Design Patterns
Application Architecture is like a playground for your code. It provides
structures around otherwise unrelated activities
Architecture (JavaScript)
Module
module(n)
1 : a standard or unit of measurement
2 : the size of some one part taken as a unit of measure by which the proportions of an architectural composition
are regulated
3 a : any in a series of standardized units for use together: as (1) : a unit of furniture or architecture (2) : an
educational unit which covers a single subject or topic b : a usually packaged functional assembly of electronic
components for use with other such assemblies
4 : an independently operable unit that is a part of the total structure of a space
vehicle
5 a : a subset of an additive group that is also a group under addition b : a mathematical set that is a commutative
group under addition and that is closed under multiplication which is distributive from the left or right or both by
elements of a ring and for which a(bx) = (ab)x or (xb)a = x(ba) or both where a and b are elements of the ring and x
belongs to the set
(Source: Merriam-Webster Dictionary)
How does this apply to Web Applications?
Any module should be able to live on its own
Web application modules consist of HTML +
CSS + JavaScript
Each module's job is to create a meaningful
user experience
web application module (n)
1 : an independent unit of functionality that is part of the total structure of a web application
Module Rules
▷ Hands to yourself
Only call your own methods or those on the sandbox.
Don't access DOM elements outside of your box
Don’t access non native global objects
▷ Ask, don’t take
Anything else need ask sandbox
▷ Don’t leave your toys around
Don't create global objects
▷ Don’t talk to strangers
Don’t directly reference other modules
Sandbox
Modules must stay within their own sandboxes
No matter how restrictive or uncomfortable it may seem
It ensures loose coupling among Modules
(It doesn’t hurt when modules are required to be separated)
Sandbox
▷ It is an interface with which modules can
interact to ensure loose coupling
▷ Modules can rely on the methods to always
be there
▷ It acts like a security guard know what the
modules are allowed to access and do not on
the framework
▷ Take time to design correct sandbox
interface as it cannot change later
Application Core
Application Core
▷ It manages modules
▷ It tells a module when it should initialize
and when it should shutdown
▷ It manages communication between
module
▷ It handles errors. Uses available
information to determine best course of
action
▷ It should be extensible
Base Library
Base Library
▷ It provides basic functionality
▷ It provide browser normalization
▷ It provides general purpose utilities
Ajax communication, Xml and Json Parsing
etc.
▷ It provide low level extensibility
▷ Only the base library knows which browser
is being used
Architecture (CSS)
Goals of a good CSS Architecture
▷ Predictable
Predictable CSS means our rules behave as we’d expect.
▷ Reusable
CSS rules should be abstract and decoupled enough that we
can build new components quickly from existing parts
without having to recode patterns and problems we’ve
already solved
▷ Maintainable
Adding new features shouldn’t require refactoring existing
CSS
▷ Scable
Scalable CSS means it can be easily managed by a single
person or a large engineering team
Popular Architectural Approaches
▷ DRY (Don’t Repeat Yourself) CSS
While coding css don’t repeat a property value pair
▷ OOCSS (Object Oriented CSS)
Separate structure and presentation
Separate container and content
▷ SMACSS (Scalable and Modular Architecture for CSS
It is about identifying patterns in design and codifying them.
Its core is categorization of CSS in Base, Layout, Module, State and
Theme.
Frameworks
▷ MVC
View sits on top of our architecture with controller beside it
Model sit below controller
Views knows about controller and controller knows about models
View have direct access to models
▷ MVP
Role of controller is replaced with presenter
Presenter sits at the same level as views, listening to events from both the
View and model and mediating the actions between them.
▷ MVVM
It allows us to create View-specific subsets of a Model which can contain
state and logic information, avoiding the need to expose the entire
Model to a View.
▷ MV*
Frameworks (cont.)
Javascript frameworks CSS frameworks
Design Patterns
▷ Patterns
Are proven solutions
Can be easily reused
Can be expressive
▷ Some commonly used design patterns
Constructor Pattern
Module Pattern
Singleton pattern
Observer pattern
Mediator pattern
Facade pattern
...
Constructor Pattern
Object creation
Constructor Pattern
Basic Constructor
Constructor Pattern
Constructors with prototype
Module Pattern
Self contained module
Module Pattern
import mixins
Module Pattern
Exports
Singleton Pattern
Programming: Best Practices, Dos & Don’ts
JavaScript “Best Practices, Dos & Don’ts”
▷ Make it understandable
▷ Avoid globals
▷ Stick to a strict coding style
▷ Comment as much as needed but not
more
▷ Avoid mixing with other technologies
▷ Use shortcut notations
▷ Modularize
▷ Enhance progressively
▷ Allow for configuration and
translation
▷ Avoid heavy nesting
▷ Optimize loops
▷ Keep DOM access to a minimum
▷ Add functionality with JavaScript,
not content
▷ Build on the shoulders of giants
▷ Development code is not live code
CSS “Best Practices, Dos & Don’ts”
▷ Always use CSS Resets
▷ Categorize your styles
▷ Follow DRY principle
▷ Avoid using ID based selectors
▷ Avoid inline styles
▷ Avoid using “!important”
▷ Define classes with meaningful names
▷ Classes should not be used for any
purpose other than styling.
▷ Avoid using large chain of selectors
▷ Avoid specifying tag names in
Classes
▷ Follow consistent naming
convention
▷ Separate structure and
presentation
Few things worth mentioning here
before completing the session
“A hammer is an excellent tool but it’s not used for
everything !!!
““The secret of building large apps is never build
large apps. Break your application into small
pieces. Then assemble those testable, bite-sized
pieces into your big application”
-Justin Mayer
““The more tied components are to each other, the
less reusable they will be, and the more difficult it
becomes to make changes to one without
accidentally affecting another”
-Rebecca Murphey
““The key is to acknowledge from start that you
have no idea how this will grow.
When you accept that you don’t know everything
you begin to design the system defensively”
-Nicholas Zakas
Modern UI Architecture_ Trends and Technologies in Web Development

More Related Content

What's hot

Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Beat Signer
 
Front end development best practices
Front end development best practicesFront end development best practices
Front end development best practicesKarolina Coates
 
Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)Beat Signer
 
Web development using javaScript, React js, Node js, HTML, CSS and SQL
Web development using javaScript, React js, Node js, HTML, CSS and SQLWeb development using javaScript, React js, Node js, HTML, CSS and SQL
Web development using javaScript, React js, Node js, HTML, CSS and SQLJayant Surana
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)Steve Souders
 
C#.net applied OOP - Batch 3
C#.net applied OOP - Batch 3C#.net applied OOP - Batch 3
C#.net applied OOP - Batch 3Md. Mahedee Hasan
 
Front end developer responsibilities what does a front-end developer do?
Front end developer responsibilities  what does a front-end developer do?Front end developer responsibilities  what does a front-end developer do?
Front end developer responsibilities what does a front-end developer do?Katy Slemon
 
Berlin.JAR: Web future without web frameworks
Berlin.JAR: Web future without web frameworksBerlin.JAR: Web future without web frameworks
Berlin.JAR: Web future without web frameworksStephan Schmidt
 
AngularJS UTOSC
AngularJS UTOSCAngularJS UTOSC
AngularJS UTOSCroboncode
 
Introduction to Web Development
Introduction to Web DevelopmentIntroduction to Web Development
Introduction to Web DevelopmentParvez Mahbub
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | IntroductionJohnTaieb
 
Ajax Using JSP with prototype.js
Ajax Using JSP with prototype.jsAjax Using JSP with prototype.js
Ajax Using JSP with prototype.jsTushar Chauhan
 
Mvc presentation
Mvc presentationMvc presentation
Mvc presentationMaslowB
 
SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...
SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...
SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...Kunal Ashar
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayBojan Veljanovski
 

What's hot (20)

Introduction to HTML5 and CSS3
Introduction to HTML5 and CSS3Introduction to HTML5 and CSS3
Introduction to HTML5 and CSS3
 
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
 
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt
 
Front end development best practices
Front end development best practicesFront end development best practices
Front end development best practices
 
Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)
 
Web development using javaScript, React js, Node js, HTML, CSS and SQL
Web development using javaScript, React js, Node js, HTML, CSS and SQLWeb development using javaScript, React js, Node js, HTML, CSS and SQL
Web development using javaScript, React js, Node js, HTML, CSS and SQL
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)
 
C#.net applied OOP - Batch 3
C#.net applied OOP - Batch 3C#.net applied OOP - Batch 3
C#.net applied OOP - Batch 3
 
Front end developer responsibilities what does a front-end developer do?
Front end developer responsibilities  what does a front-end developer do?Front end developer responsibilities  what does a front-end developer do?
Front end developer responsibilities what does a front-end developer do?
 
Course Document
Course DocumentCourse Document
Course Document
 
Berlin.JAR: Web future without web frameworks
Berlin.JAR: Web future without web frameworksBerlin.JAR: Web future without web frameworks
Berlin.JAR: Web future without web frameworks
 
AngularJS UTOSC
AngularJS UTOSCAngularJS UTOSC
AngularJS UTOSC
 
Introduction to Web Development
Introduction to Web DevelopmentIntroduction to Web Development
Introduction to Web Development
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
 
ASP.NET MVC 4 Introduction
ASP.NET MVC 4 IntroductionASP.NET MVC 4 Introduction
ASP.NET MVC 4 Introduction
 
Ajax Using JSP with prototype.js
Ajax Using JSP with prototype.jsAjax Using JSP with prototype.js
Ajax Using JSP with prototype.js
 
Mvc presentation
Mvc presentationMvc presentation
Mvc presentation
 
SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...
SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...
SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...
 
Modern Javascript
Modern JavascriptModern Javascript
Modern Javascript
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development today
 

Similar to Modern UI Architecture_ Trends and Technologies in Web Development

Benefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBenefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBeroza Paul
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net coreSam Nasr, MCSA, MVP
 
Integrating Machine Learning Capabilities into your team
Integrating Machine Learning Capabilities into your teamIntegrating Machine Learning Capabilities into your team
Integrating Machine Learning Capabilities into your teamCameron Vetter
 
Prototype to Drupal Site with KalaStatic
Prototype to Drupal Site with KalaStaticPrototype to Drupal Site with KalaStatic
Prototype to Drupal Site with KalaStaticcspin
 
Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General IntroductionAsma CHERIF
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile DevelopmentHayim Makabee
 
Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...
Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...
Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...DicodingEvent
 
OOSAD Chapter 6 Object Oriented Design.pptx
OOSAD Chapter 6 Object Oriented Design.pptxOOSAD Chapter 6 Object Oriented Design.pptx
OOSAD Chapter 6 Object Oriented Design.pptxBereketMuniye
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCUlrich Krause
 
Pragmatic Approach to Microservices and Cell-based Architecture
Pragmatic Approach to Microservices and Cell-based Architecture Pragmatic Approach to Microservices and Cell-based Architecture
Pragmatic Approach to Microservices and Cell-based Architecture Andrew Blades
 
Create first android app with MVVM Architecture
Create first android app with MVVM ArchitectureCreate first android app with MVVM Architecture
Create first android app with MVVM Architecturekhushbu thakker
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesUlrich Krause
 
An Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPAn Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPChris Renner
 
Clean architecture
Clean architectureClean architecture
Clean architecture.NET Crowd
 
Introduction to ExtJS and its new features
Introduction to ExtJS and its new featuresIntroduction to ExtJS and its new features
Introduction to ExtJS and its new featuresSynerzip
 
Ext Js introduction and new features in Ext Js 6
Ext Js introduction and new features in Ext Js 6Ext Js introduction and new features in Ext Js 6
Ext Js introduction and new features in Ext Js 6Sushil Shinde
 
Object-Oriented Design Fundamentals.pptx
Object-Oriented Design Fundamentals.pptxObject-Oriented Design Fundamentals.pptx
Object-Oriented Design Fundamentals.pptxRaflyRizky2
 
Web Design & UI/UX Bootcamp [Online & Offline] In Bangla
Web Design & UI/UX Bootcamp [Online & Offline] In BanglaWeb Design & UI/UX Bootcamp [Online & Offline] In Bangla
Web Design & UI/UX Bootcamp [Online & Offline] In BanglaStack Learner
 
Design Systems: Enterprise UX Evolution
Design Systems: Enterprise UX EvolutionDesign Systems: Enterprise UX Evolution
Design Systems: Enterprise UX EvolutionAnne Grundhoefer
 

Similar to Modern UI Architecture_ Trends and Technologies in Web Development (20)

Benefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBenefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design pattern
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Integrating Machine Learning Capabilities into your team
Integrating Machine Learning Capabilities into your teamIntegrating Machine Learning Capabilities into your team
Integrating Machine Learning Capabilities into your team
 
Prototype to Drupal Site with KalaStatic
Prototype to Drupal Site with KalaStaticPrototype to Drupal Site with KalaStatic
Prototype to Drupal Site with KalaStatic
 
Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General Introduction
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile Development
 
Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...
Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...
Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...
 
OOSAD Chapter 6 Object Oriented Design.pptx
OOSAD Chapter 6 Object Oriented Design.pptxOOSAD Chapter 6 Object Oriented Design.pptx
OOSAD Chapter 6 Object Oriented Design.pptx
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
 
Pragmatic Approach to Microservices and Cell-based Architecture
Pragmatic Approach to Microservices and Cell-based Architecture Pragmatic Approach to Microservices and Cell-based Architecture
Pragmatic Approach to Microservices and Cell-based Architecture
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Create first android app with MVVM Architecture
Create first android app with MVVM ArchitectureCreate first android app with MVVM Architecture
Create first android app with MVVM Architecture
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPages
 
An Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPAn Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHP
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Introduction to ExtJS and its new features
Introduction to ExtJS and its new featuresIntroduction to ExtJS and its new features
Introduction to ExtJS and its new features
 
Ext Js introduction and new features in Ext Js 6
Ext Js introduction and new features in Ext Js 6Ext Js introduction and new features in Ext Js 6
Ext Js introduction and new features in Ext Js 6
 
Object-Oriented Design Fundamentals.pptx
Object-Oriented Design Fundamentals.pptxObject-Oriented Design Fundamentals.pptx
Object-Oriented Design Fundamentals.pptx
 
Web Design & UI/UX Bootcamp [Online & Offline] In Bangla
Web Design & UI/UX Bootcamp [Online & Offline] In BanglaWeb Design & UI/UX Bootcamp [Online & Offline] In Bangla
Web Design & UI/UX Bootcamp [Online & Offline] In Bangla
 
Design Systems: Enterprise UX Evolution
Design Systems: Enterprise UX EvolutionDesign Systems: Enterprise UX Evolution
Design Systems: Enterprise UX Evolution
 

More from Suresh Patidar

Conducting Effective Interviews
Conducting Effective InterviewsConducting Effective Interviews
Conducting Effective InterviewsSuresh Patidar
 
Conducting Good Interviews
Conducting Good InterviewsConducting Good Interviews
Conducting Good InterviewsSuresh Patidar
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular applicationSuresh Patidar
 
Developing high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web workerDeveloping high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web workerSuresh Patidar
 
Learning AngularJS - Complete coverage of AngularJS features and concepts
Learning AngularJS  - Complete coverage of AngularJS features and conceptsLearning AngularJS  - Complete coverage of AngularJS features and concepts
Learning AngularJS - Complete coverage of AngularJS features and conceptsSuresh Patidar
 
Introduction to Modern and Emerging Web Technologies
Introduction to Modern and Emerging Web TechnologiesIntroduction to Modern and Emerging Web Technologies
Introduction to Modern and Emerging Web TechnologiesSuresh Patidar
 
Building Modern Web Apps with MEAN Stack
Building Modern Web Apps with MEAN StackBuilding Modern Web Apps with MEAN Stack
Building Modern Web Apps with MEAN StackSuresh Patidar
 
Space-Based Architecture
Space-Based ArchitectureSpace-Based Architecture
Space-Based ArchitectureSuresh Patidar
 

More from Suresh Patidar (8)

Conducting Effective Interviews
Conducting Effective InterviewsConducting Effective Interviews
Conducting Effective Interviews
 
Conducting Good Interviews
Conducting Good InterviewsConducting Good Interviews
Conducting Good Interviews
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular application
 
Developing high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web workerDeveloping high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web worker
 
Learning AngularJS - Complete coverage of AngularJS features and concepts
Learning AngularJS  - Complete coverage of AngularJS features and conceptsLearning AngularJS  - Complete coverage of AngularJS features and concepts
Learning AngularJS - Complete coverage of AngularJS features and concepts
 
Introduction to Modern and Emerging Web Technologies
Introduction to Modern and Emerging Web TechnologiesIntroduction to Modern and Emerging Web Technologies
Introduction to Modern and Emerging Web Technologies
 
Building Modern Web Apps with MEAN Stack
Building Modern Web Apps with MEAN StackBuilding Modern Web Apps with MEAN Stack
Building Modern Web Apps with MEAN Stack
 
Space-Based Architecture
Space-Based ArchitectureSpace-Based Architecture
Space-Based Architecture
 

Modern UI Architecture_ Trends and Technologies in Web Development

  • 1. Modern UI Architecture “Latest trends and technologies involved in web development” Suresh Patidar (2nd September 2015)
  • 2. Hello! I am Suresh Patidar An Engineering Graduate (B.E.) in Computer Science Have 9+ years of experience in product development using multiple technologies. Passionate about Architectures, Design Patterns, UI technologies and User Experience.
  • 4. Road Map ▷ Shift from classical to modern web development ▷ Latest trends and technologies involved ▷ Challenges and Solutions of a modern web development ▷ Architecture, Frameworks and Design patterns available ▷ Coding Best Practices, Dos & Don’ts for client side development using JavaScript & CSS ▷ Open House
  • 5. Shift in Web Development
  • 6. Shift in Web Development ▷ SOA, API and REST based development ▷ Clients, consuming services are growing rapidly ▷ Server side vs Client side views ▷ Client playing vital role by taking more responsibility ▷ High performance apps with low bandwidth utilization ▷ Server Side implementations are becoming a thin layer
  • 7. Latest Trends and Technologies
  • 8. Latest Trends and Technologies ▷ Responsive Web Design (RWD) Support multiple form factors including mobile and tablet browsers ▷ Web 2.0 Shift from expert generated content to user generated contents ▷ Rich Interactive Applications (RIA) Shift from Static web apps to more interactive, desktop like web sites to simplify consumer creation of contents. ▷ Ajax Architectural shift to support RIA requirements ▷ HTML5 Websocket Webstorage Webworkers Application cache …
  • 9. Latest Trends and Technologies (cont.) ▷ CSS3 Animations,Transitions Gradients Advanced Selectors and Media Queries FlexBox, Border images and Multiple backgrounds ... ▷ Application testability and Unit Testing TDD BDD ▷ Single Page Application (SPA) Create fluid and responsive Web apps, without constant page reloads
  • 11. Challenges and Solutions ▷ Using best practices Following time tested design patterns Code review Proper and enough Commenting & Logging Discourage suppressing errors and corner cutting in development Have clear distinction between process improvement vs process discarding ▷ The User Experience Personalized experience to users Utilize the analysis/study done by various independent bodies Multilingual Support ▷ The growing size of the code at client side Have good architecture for client side Write code in modular fashion. Encourage reusability and loose coupling Have clear separation of concerns Follow “Don’t Repeat Yourself” (DRY) approach to programming
  • 12. Challenges and Solutions (cont.) ▷ Hiding the differences in target platform Platform detection for rendering features Graceful degradation ▷ Selecting right set of Tools and Technologies Have clear visibility on application requirements Consider future requirements and scalability ▷ Performance and Speed Follow asynchronous loading Load only relevant/required information Keep user engaged Use minification, caching and other optimization techniques ▷ Testing, Support and Upgrade
  • 13. JavaScript and CSS let you do anything (No matter how Stupid) The point is that we don't have to do stupid things, just because we can.
  • 14. Architectures, Frameworks and Design Patterns
  • 15. Application Architecture is like a playground for your code. It provides structures around otherwise unrelated activities
  • 17. Module module(n) 1 : a standard or unit of measurement 2 : the size of some one part taken as a unit of measure by which the proportions of an architectural composition are regulated 3 a : any in a series of standardized units for use together: as (1) : a unit of furniture or architecture (2) : an educational unit which covers a single subject or topic b : a usually packaged functional assembly of electronic components for use with other such assemblies 4 : an independently operable unit that is a part of the total structure of a space vehicle 5 a : a subset of an additive group that is also a group under addition b : a mathematical set that is a commutative group under addition and that is closed under multiplication which is distributive from the left or right or both by elements of a ring and for which a(bx) = (ab)x or (xb)a = x(ba) or both where a and b are elements of the ring and x belongs to the set (Source: Merriam-Webster Dictionary)
  • 18.
  • 19.
  • 20. How does this apply to Web Applications? Any module should be able to live on its own Web application modules consist of HTML + CSS + JavaScript Each module's job is to create a meaningful user experience web application module (n) 1 : an independent unit of functionality that is part of the total structure of a web application
  • 21. Module Rules ▷ Hands to yourself Only call your own methods or those on the sandbox. Don't access DOM elements outside of your box Don’t access non native global objects ▷ Ask, don’t take Anything else need ask sandbox ▷ Don’t leave your toys around Don't create global objects ▷ Don’t talk to strangers Don’t directly reference other modules
  • 23. Modules must stay within their own sandboxes No matter how restrictive or uncomfortable it may seem
  • 24. It ensures loose coupling among Modules (It doesn’t hurt when modules are required to be separated)
  • 25. Sandbox ▷ It is an interface with which modules can interact to ensure loose coupling ▷ Modules can rely on the methods to always be there ▷ It acts like a security guard know what the modules are allowed to access and do not on the framework ▷ Take time to design correct sandbox interface as it cannot change later
  • 27. Application Core ▷ It manages modules ▷ It tells a module when it should initialize and when it should shutdown ▷ It manages communication between module ▷ It handles errors. Uses available information to determine best course of action ▷ It should be extensible
  • 29. Base Library ▷ It provides basic functionality ▷ It provide browser normalization ▷ It provides general purpose utilities Ajax communication, Xml and Json Parsing etc. ▷ It provide low level extensibility ▷ Only the base library knows which browser is being used
  • 30. Architecture (CSS) Goals of a good CSS Architecture ▷ Predictable Predictable CSS means our rules behave as we’d expect. ▷ Reusable CSS rules should be abstract and decoupled enough that we can build new components quickly from existing parts without having to recode patterns and problems we’ve already solved ▷ Maintainable Adding new features shouldn’t require refactoring existing CSS ▷ Scable Scalable CSS means it can be easily managed by a single person or a large engineering team
  • 31. Popular Architectural Approaches ▷ DRY (Don’t Repeat Yourself) CSS While coding css don’t repeat a property value pair ▷ OOCSS (Object Oriented CSS) Separate structure and presentation Separate container and content ▷ SMACSS (Scalable and Modular Architecture for CSS It is about identifying patterns in design and codifying them. Its core is categorization of CSS in Base, Layout, Module, State and Theme.
  • 32. Frameworks ▷ MVC View sits on top of our architecture with controller beside it Model sit below controller Views knows about controller and controller knows about models View have direct access to models ▷ MVP Role of controller is replaced with presenter Presenter sits at the same level as views, listening to events from both the View and model and mediating the actions between them. ▷ MVVM It allows us to create View-specific subsets of a Model which can contain state and logic information, avoiding the need to expose the entire Model to a View. ▷ MV*
  • 34. Design Patterns ▷ Patterns Are proven solutions Can be easily reused Can be expressive ▷ Some commonly used design patterns Constructor Pattern Module Pattern Singleton pattern Observer pattern Mediator pattern Facade pattern ...
  • 43. JavaScript “Best Practices, Dos & Don’ts” ▷ Make it understandable ▷ Avoid globals ▷ Stick to a strict coding style ▷ Comment as much as needed but not more ▷ Avoid mixing with other technologies ▷ Use shortcut notations ▷ Modularize ▷ Enhance progressively ▷ Allow for configuration and translation ▷ Avoid heavy nesting ▷ Optimize loops ▷ Keep DOM access to a minimum ▷ Add functionality with JavaScript, not content ▷ Build on the shoulders of giants ▷ Development code is not live code
  • 44. CSS “Best Practices, Dos & Don’ts” ▷ Always use CSS Resets ▷ Categorize your styles ▷ Follow DRY principle ▷ Avoid using ID based selectors ▷ Avoid inline styles ▷ Avoid using “!important” ▷ Define classes with meaningful names ▷ Classes should not be used for any purpose other than styling. ▷ Avoid using large chain of selectors ▷ Avoid specifying tag names in Classes ▷ Follow consistent naming convention ▷ Separate structure and presentation
  • 45. Few things worth mentioning here before completing the session
  • 46. “A hammer is an excellent tool but it’s not used for everything !!!
  • 47. ““The secret of building large apps is never build large apps. Break your application into small pieces. Then assemble those testable, bite-sized pieces into your big application” -Justin Mayer
  • 48. ““The more tied components are to each other, the less reusable they will be, and the more difficult it becomes to make changes to one without accidentally affecting another” -Rebecca Murphey
  • 49. ““The key is to acknowledge from start that you have no idea how this will grow. When you accept that you don’t know everything you begin to design the system defensively” -Nicholas Zakas