Modern Approach
in
Web Application

Abdullah Fathi Bin Muhamad Azmi

Website
VS
Web Application

Website

Informational in nature
(Blogs, News site, etc)

Web Application

A software program that runs in an Internet browser, on or through a web page

Similar to a software program that runs on a computer desktop or desktop application, a web application allows for user interaction and can be designed for a variety of uses

Web applications are usually created using a combination of
programming languages 
and
web application frameworks

Websites are meant for providing information and Web Applications are meant to solve a problem or satisfy a desire

Key Differences

1) Interactivity

2) Integration

3) Authentication

Web App
Special Names

Web Portals

Online Stores

What does a web application consist of?

OS

Database

Web Server

Server Side Code

Browser

Client Side
Code

How Web Apps Works

Multi Page Application (Traditional Web Apps)

  • Perform most of the
    application logic on the server
  • Each request sent to the server
    will render a new page
  • Support legacy browser
  • Could potentially work
    without javascript

Pros

  • Plenty of resources, best practices, solutions and frameworks available
  • SEO
  • Easy development: Smaller technology stack
  • Faster initial page load: Page is rendered on the server side -> sent to browser

Cons

  • Slower to load pages.
  • Mobile Development

Single Page Application
(Modern Web Apps)

  • Perform most of UI logic in web browser
  • Load a single web page
  • Dynamically update the page
    as the user interacts with the app
  • Provide native app like experience
    • No page reloads
    • No Extra wait time
  • Asynchronous Javascript / XML (AJAX)

Pros

  • Very reactive app
    (Close to desktop application)
  • Reduce bandwidth usage
  • Decoupled frontend and backend
  • Mobile development is easier
  • Fast: most resources (HTML + CSS  + Scripts) are only loaded once

Cons

  • First page load is slower than MPA
  • SEO is challenging (Content loaded by AJAX)
  • Javascript is strictly required

What is framework

  • Anything that let us build a web application
  • Arrangement in which software provides greater functionality that can be extended by additional user written codes. (Basic structure)

Why use framework?

  • Allow standard way of creating the web app
  • Developer doesn't have to reinvent the wheel
  • Simplify the process of creating web app
  • Don't have to start from scratch
  • Save Time
  • Have reusable functions
  • Just focus on business logic
  • Designed to be able to deal with third party packages

CSS/UI Framework

  • Help create stylized and professional looking web apps
  • Grid System
  • Color scheme
  • Stylize HTML component using CSS
  • Look clean and professional
  • Usually there are within frontend framewok

Pros

  • Faster development
  • Responsive by default
  • Browser compatibility
  • Javascript widgets/plugin
  • Documentation & Support

Cons

  • Stop developer from learning CSS
  • Less customization
  • Many sites look the same
  • Lots of overriding styles
  • Many depend on Jquery for certain things

Bootstrap

  • Very well known
  • Built by Twitter
  • Easy to learn
  • Looks professional
  • Can be difficult to
    customize components

Materialize

  • Clean looking
  • Lots of styling and color options
  • Follow Google's Material
    style guide

Foundation

  • Lots of example
  • Professional looking

Semantic UI

  • Lots built-in
  • Built-in themes so its' customizable

Grommet

  • Has a huge focus on accessibility
  • Looks really clean
  • Not as used as some of the others
  • Made for ReactJS

Front-End Framework

  • The part of end-user see and interact with
  • Consist of web design and the interation of the site
    • CSS
    • HTML
    • JS
  • In most cases, written in Javascript
  • Organizing functionality and interactivity

Pros

  • Less work for large
    frontend applications
  • Organized, component based design
  • Fast performance
    (virtual DOM)
  • Reliable & Tested
  • Community & Support
  • Great for teams

Cons

  • Add complexity for simple projects
  • Can be too opinionated/less freedom
  • Stop beginners from learning actual JS coding
  • Updates can introduce issues

Vue.js

  • Easy to learn
  • Very fast
  • All tools associated with
    it are packaged well
  • Takes parts from Angular and React
    and optimizes them
  • Less widely adopted than some others
  • Flexible - Can use it in multiple ways

Angular 2+

  • Build by Google
  • Popular in enterprise
  • Well Supported
  • Encourages reusability
  • Improves application scalability
  • Large learning curve

React

  • Build by Facebook
  • Popular for startups
  • Bundles frontend code into components
  • Organizes code and data to
    make code reusable
  • Large learning curve

Ember

  • Gives a large amount of
    functionality out of the box
  • Opinionated (Have to use its formatting)
  • Steep learning curve

Back-End Framework

  • Consist of server, db and
    code that interacts with them
  • Consist of code that gives dynamic
    data to the frontend of the site
  • Written in variety of programming
    ​language
    • Java
    • PHP
    • Python
    • Ruby
    • NodeJS
  • Wide variety of features

Pros

  • Save a TON of time
    and make things much easier
  • Very flexible and allow you to build almost anything
  • Built in security
  • MVC
  • Built in routing
  • Community, Documentation & Support

Cons

  • Can stop beginners from learning the fundamentals of coding
  • Some frameworks can be too opinionated/less freedom

Spring

  • Java
  • Very Fast (Lighweight Container)
  • Cross Platform
  • Less Opinionated/Flexible

Laravel

  • PHP
  • Easy to learn
  • Fast Execution
  • Documentation easily available

Django

  • Python
  • Happy medium between
    very opinionated and less structured
  • Lot of functionality out of the box
  • Difficult to integrate a fancy front-end
  • Python's data handling is amazing

Ruby on Rails

  • Ruby
  • Very opinionated
  • Has great tools like scaffolding
    (build things fast)
  • Out of the box functionality
  • Ruby takes longer to run programs
    than some other programming languages

Express

  • Javascript
  • Very customizable
  • Very lightweight
  • Less build-in features
  • Node is very fast

Basic feature in framework

1) URL Routing

  • www.test.com/user
  • www.test.com/booking
  • Define which code to hits when url get hits
  • Define good URL Pattern to use

2) Database Manipulation

  • Manipulate and design database
  • Structure the tables and models
  • Read and write different entries in database

3) Templating

  • Organize the data returned from web app
  • Format Data: JSON, Raw, HTML, text, etc.

4) Security

  • Most software developer is not security expert
  • Use as-is or customize existing security

5) MVC

Model - View - Controller

1) Model == HTML

  • Handle Interaction with db

  • Responsible for moving stuff in and out of db

  • Similar to HTML, which handles the knowledge of website as well as the structure

2) View == CSS

  • Seen by user

  • Display data on screen, which represent data that was manipulated in Model

  • Similar to CSS, which add visual styles to structure.

At this point think of the View as the skin to the Model’s skeletal structure.

Just as the the CSS is the skin to HTML’s skeleton

3) Controller == Web Browser

  • Middle man that takes data to and from the model and user and manipulate it, and routes it properly

  • Brain of application

  • Control the logic for how thing should work and where they should go

  • Similar to web browser, accepts user input and translate it to command, so the page can properly function

  • The browser compiles the CSS and HTML into renderable and manipulatable pixels on the screen

Criteria for choosing the correct framework

Popularity
&
Community size 

Sustainability

Support

Security

Documentation

Resource Availability

Framework
vs
Library

Framework: Reusing behaviors by how abstract classes and component interact with each other

 

Library: Collection of classes which provide reusable functionalitites

A framework defines a structure that you have to fill, while library has some structure that you have to build around

You call library,
Framework calls you

Google Trends

Q & A

There are no secrets to success. It is the result of preparation, hard work, and learning from failure. - Colin Powell

THANK YOU

Web Framework

By Abdullah Fathi

Web Framework

  • 200