Makbul Khan. Nikhil Sukul

Similar documents
welcome to BOILERCAMP HOW TO WEB DEV

Ten interesting features of Google s Angular Project

Web Premium- Advanced UI Development Course. Duration: 08 Months. [Classroom and Online] ISO 9001:2015 CERTIFIED

JavaScript Fundamentals_

Upload to your web space (e.g., UCSC) Due this Thursday 4/8 in class Deliverable: Send me an with the URL Grading:

Standard 1 The student will author web pages using the HyperText Markup Language (HTML)

EPHP a tool for learning the basics of PHP development. Nick Whitelegg School of Media Arts and Technology Southampton Solent University

DECOUPLING PATTERNS, SERVICES AND CREATING AN ENTERPRISE LEVEL EDITORIAL EXPERIENCE

a Very Short Introduction to AngularJS

USER GUIDE. LitExtension: YAHOO STORE to Magento Migration Tool

October 08: Introduction to Web Security

20486-Developing ASP.NET MVC 4 Web Applications

,

Modern and Responsive Mobile-enabled Web Applications

Our trainings can be delivered as an Onsite Classroom Training or as an Instructor-Led Live Online Training(ILT).

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc.

Backend Web Frameworks

Information Brochure Information Brochure. An ISO 9001:2015 Institute. ADMEC Multimedia Institute. Web Master Plus. Designing Development Promotion

Advanced Joomla! Dan Rahmel. Apress*

The Future of the Realtime Web BETTER APIS WITH GRAPHQL. Josh

WebDev. Web Design COMBINES A NUMBER OF DISCIPLINES. Web Development Process DESIGN DEVELOPMENT CONTENT MULTIMEDIA

Building Isomorphic Javascript Apps

Web Applications. Software Engineering 2017 Alessio Gambi - Saarland University

React & Redux in Hulu. (Morgan Cheng)

,

Jquery Ajax Json Php Mysql Data Entry Example

Masters in Web Development

CSCI 1320 Creating Modern Web Applications. Content Management Systems

React(.js) the Domino Way High-Performance Client for Domino. Knut Herrmann

McLab tools on the web. Deepanjan Roy Supervisor: Prof. Laurie Hendren

Beginning JavaScript (Programmer To Programmer) By Paul Wilton

CS193X: Web Programming Fundamentals

Simple AngularJS thanks to Best Practices

WebApp development. Outline. Web app structure. HTML basics. 1. Fundamentals of a web app / website. Tiberiu Vilcu

Using WebGallery, WebDeploy and some IIS Extensions

Jamcracker, Inc. CMS Dashboard Widget Creation

To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry. Tony Erwin,

Modern Web Application Development. Sam Hogarth

PHP & PHP++ Curriculum

Review. Fundamentals of Website Development. Web Extensions Server side & Where is your JOB? The Department of Computer Science 11/30/2015

Mix It Up: Visual Studio 2010 and ASP.NET 4.0. Singapore 25 March 2009

Full Stack Web Developer

Introduction to PHP. Handling Html Form With Php. Decisions and loop. Function. String. Array

QWeSST. Type-Safe Web Programming. Thierry Sans and Iliano Cervesato. Carnegie Mellon University Qatar

AngularJS Fundamentals

Evolution of the "Web

Nodes Tech Slides - Progressive Web Apps, 2018

COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3

Interactive XML Visualization - using XSLT 2.0 on the Browser. Phil Fearon - Saxonica

Microservices. SWE 432, Fall 2017 Design and Implementation of Software for the Web

P a g e 1. Danish Technological Institute. Scripting and Web Languages Online Course k Scripting and Web Languages

Web Focused Programming With PHP

Outline. AJAX for Libraries. Jason A. Clark Head of Digital Access and Web Services Montana State University Libraries

IBM Worklight V5.0.6 Getting Started

Programming in HTML5 with JavaScript and CSS3

Web Software Model CS 4640 Programming Languages for Web Applications

7401ICT eservice Technology. (Some of) the actual examination questions will be more precise than these.

Backend Development. SWE 432, Fall Web Application Development

Website Report for

Software. Full Stack Web Development Intensive, Fall Lecture Topics. Class Sessions. Grading

Get in Touch Module 1 - Core PHP XHTML

JAVASCRIPT JQUERY AJAX FILE UPLOAD STACK OVERFLOW

Web Development for Dinosaurs An Introduction to Modern Web Development

Templates and Databinding. SWE 432, Fall 2017 Design and Implementation of Software for the Web

Angular 2 and Hexo. Static Meets Dynamic For the Best of Both Worlds! Copyright 2016 Code Career Academy

Full Stack boot camp

JavaScript: the language of browser interactions. Claudia Hauff TI1506: Web and Database Technology

EmberJS A Fitting Face for a D8 Backend. Taylor Solomon

Deploying to the Edge CouchDB

Matt Meteor Development Group

AJAX Workshop. Karen A. Coombs University of Houston Libraries Jason A. Clark Montana State University Libraries

Developing ASP.NET MVC 5 Web Applications

s642 web security computer security adam everspaugh

Mobile Site Development

Build Native-like Experiences in HTML5

Networking & The Web. HCID 520 User Interface Software & Technology

01 : Our Introduction

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Meteor

NODE.JS SERVER SIDE JAVASCRIPT. Introduc)on Node.js

Manual Html A Href Onclick Submit Form

CSS. HTML5,CSS3,JS & PHP Simplified. Smart Course for Absolute Beginners. REGISTER AT:

Front End Programming

About the Tutorial. Audience. Prerequisites. Disclaimer & Copyright. TurboGears

CSC 309 The Big Picture

Best Practices. For developing a web game in modern browsers. Colt "MainRoach" McAnlis

HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION

CS50 Quiz Review. November 13, 2017

20486: Developing ASP.NET MVC 4 Web Applications

JavaScript Specialist v2.0 Exam 1D0-735

Etanova Enterprise Solutions

Web Site Design and Development. CS 0134 Fall 2018 Tues and Thurs 1:00 2:15PM

JSN ImageShow Configuration Manual Introduction

How to Migrate from Drupal Commerce to Magento

Pivotal Tracker Kanban Prototype COLORADO SCHOOL OF MINES 2017 FIELD SESSION

From RPG OA to PHP: IBM i Modernization and Mobile Approaches

Performance Case Study

Website SEO Checklist

Introduction to decoupled Drupal. Preston So 26 Sep 2017 DrupalCon Vienna 2017

Networking & The Web. HCID 520 User Interface Software & Technology

31CM From RPG OA to Node.js Modernization and Mobile. Presented by: Greg Patterson Senior Sales Engineer Fresche Solutions May 9, 2017

Transcription:

Makbul Khan Acquia Certified Developer Senior Software Engineer makbul_khan8 makbul_khan08 Nikhil Sukul Senior Drupal Architect nikhilsukul nikhilsukul

Topics 1. What is Isomorphic JavaScript 2. Why Isomorphic JavaScript 3. Isomorphic in a wild 4. How to Isomorph 5. Available libraries 6. Isomorphic JavaScript with Drupal 7. Stop talking. Show me the code!

What is Isomorphic JavaScript?

Iso. morphic Same Form

Isomorphic Application Dynamic website Capable of generating its html Use same code in both server and client side Client Shared code Server REST API

Javascript code that can be shared between Client and Server apps. Shared code

Why Isomorphic Javascript

Compiled Web applications Server-rendered application Client-rendered application Isomorphic web application

Server-rendered application

Server-rendered application DOM manipulation Response User interface Javascript Request Response View layer Client Application logic Request Routing Backend Persistence Drupal (PHP) Ruby Python Node.js

Server-rendered application Server Client Server response Download response Download assets Execute scripts End user sees content

Server-rendered application Server render content Improved user experience by using AJAX, JQuery,... Serving HTML on first-load is fast. Crawler, screen-readers are happy with HTML. But: Maintain UI render and logic in both Client & Server Duplication application logic in (usually) two languages, two frameworks, two development stack, two templates,...

Client-rendered application

Client-rendered application DOM manipulation View layer Application logic Response User interface Client Javascript Routing Request Backend Persistence Drupal (PHP) Ruby Python Node.js

Client-rendered application Server Client Server response End user sees content Download response Download assets Execute scripts Fetch data Render template

Client-rendered application Client side render content Separate application logic and data retrieval More interactivity, optimistic UI, offline, mobile Eg. Gmail and StackEdit Editor But: Not SEO friendly Users have to wait a few seconds of blank page or loading spinner before seeing the content Expensive maintenance

Server v/s Client Initial load Initial load SEO SEO User experience User experience

Server-rendered Application OR Client-rendered Application

We have another option: Isomorphic Web Application The best of both worlds

Isomorphic application DOM manipulation Javascript Request Response View layer User interface Client Application logic Shared Routing Javascript Request Response Backend Persistence Drupal (PHP) Ruby Python Node.js

Isomorphic application DOM manipulation Javascript Request Response View layer User interface Client Application logic Shared Routing Javascript Backend Persistence Drupal (PHP) Ruby Python Node.js

Isomorphic application DOM manipulation Response View layer User interface Request Response Application logic Client Javascript Request Shared Routing Javascript Request Response Backend Persistence Drupal (PHP) Ruby Python Node.js

Isomorphic application Server Client Server response Download response Load app logic Hook into rendered app End user sees content

Isomorphic application DOM manipulation Response User Interface Markup Request Client Javascript Data presentation View layer Application logic Shared RoutingI18n Javascript Date, Currency formatting Response Request URL formatting Backend Persistence Drupal (PHP) Ruby Python Node.js

Why go to the trouble?

Performance Initial page load speed. SEO Crawlable single-page apps. Flexibility Run code anywhere. Maintainability Reduce code duplication.

Isomorphic in a wild

Flickr Yahoo s Modown libraries (successor to Mojito).

Instagram Facebook s React library in a Django app.

Meteor Realtime app framework.

Lullabot React, Node.js, CouchDB and Drupal as the backend CMS.

How to Isomorph

Isomorphic JavaScript can be environment agnostic or shimmed per environment.

Environment agnostic Does not depend on browser-specific properties (window) or server-specific properties (process.env, req.cookies).

Shimmed per Environment Provide shims for accessing environment-specific properties so module can expose a single API. window.location.pathname vs req.path

Abstractions

Isomorphism Isomorphic Code Client Server Abstract all the things!!

Abstraction Cookies setcookie( mycookie, root ); document.cookie = mycookie=root; Domain=.example.org ; response.setheader( Set-Cookie: mycookie=root; + Domain=.example.org ); Client Server

Abstraction Redirects this.transitionto( /login ); document.location.href = /login ; window.pushstate({},, /login ); response.redirect( /login ); Client Server

Most of your favourite JS libraries are Isomorphic

You can use these libraries

React (JavaScript framework by Facebook) New and fashionable Uses a virtual DOM, and syncs only the changed parts A javascript library for building user interface Strict data control mechanism

Isomorphic Javascript with Drupal

Available libraries in Drupal as a Module React -- Recommended release (react & myreactjs) Meteor -- Sandbox Rendr -- No module yet

Stop talking. Show me the code!!

THANK YOU FAICHI SOLUTIONS PVT LTD USA: OFFICE NO. 230, 640 WEST CALIFORNIA AVENUE SUITE 210 SUNNYVALE, CA 94086 TEL: +1 (408) 769-4941 INDIA: ACCORD IT PARK, BANER ROAD, PUNE, MAHARASHATRA-411045 PH. NO. +91-20-65291435