Sign in to confirm you’re not a bot
This helps protect our community. Learn more
Spike Brehm: Building Isomorphic Apps [JSConf2014]
63Likes
5,735Views
2014Jul 3
After building more and more rich and complex JavaScript apps at Airbnb, we started to see the single-page app approach break down. The language and environment barriers between our Rails server and fat client app caused code duplication and the lack of server-side rendering led to slow initial page load performance and SEO headaches. The dream of a shared UI layer and reusable business logic led us to start experimenting with ways to bring these apps back to the server. We started by converting our mobile web site, a Backbone app, to also run on Node.js and Express, which led to the open-source Rendr library. Since then we've learned a lot and have begun to refine our understanding of "isomorphic JavaScript". There are a wide range of approaches which might be considered "isomorphic" — an app could share just a few tiny modules of business logic, or just templates, or route definitions; or it might try to share the entire application code. The more code that is shared, the more abstractions have to be built to shim the differences between the very dissimilar environments of web browser and server, and the more complex and tightly-coupled the result will be. This talk will give some broader context for isomorphic JavaScript, show some real world examples, explain common application patterns for isomorphic apps, and then dive into the open-source tools and libraries that you can use to build isomorphic apps: libraries like Handlebars and Superagent and build tools like Browserify and Esprima. http://2014.jsconf.us/

Follow along using the transcript.

JSConf

287K subscribers

JSConf US 2014

JSConf
21 / 49
1

Mark DiMarco: User Interface Algorithms [JSConf2014]

JSConf
2

Jenn Schiffer: What's the Harm In Sorting: Sanitizing Inputs For More Optimized JS [JSConf2014]

JSConf
3

G C Marty: Play DVDs in JavaScript for the sake of interoperability [JSConf2014]

JSConf
4

David Calhoun: Realtime Satellite Tracking in the Browser [JSConf2014]

JSConf
5

Marco Rogers: Finding Patterns Across Front-end Frameworks [JSConf2014]

JSConf
6

Nick Bray: Native Code on the Web? [JSConf2014]

JSConf
7

Ryan Paul: Composing frontend Web applications with MontageJS [JSConf2014]

JSConf
8

Jenn Turner: Lessons in Emotional Safety FTW [JSConf2014]

JSConf
9

Nico Bevacqua: Front End Ops Tooling [JSConf2014]

JSConf
10

Neil Green: Writing Custom DSLs [JSConf2014 ]

JSConf
11

Richard Pack & Ryan Spohn: Salesforce1: Developing at Enterprise Scale [JSConf2014]

JSConf
12

Kawandeep Virdee: Open Web Art: JS for Interactive, Collaborative, and Hackable Art [JSConf2014]

JSConf
13

Brian J Brennan: Being Human [JSConf2014]

JSConf
14

Kassandra Perch: Modular Application Architectures in Javascript [JSConf2014]

JSConf
15

Bodil Stokke: Reactive Game Development For The Discerning Hipster [JSConf2014]

JSConf
16

David Nolen: Immutability: Putting The Dream Machine To Work [JSConf2014]

JSConf
17

John-David Dalton: Fearless Browser Testing [JSConf2014]

JSConf
18

Kevin Whinnery: Designing Modules for the Browser and Node with Browserify [JSConf2014]

JSConf
19

Forrest L Norvell: Learning ES6 as a Community [JSConf2014]

JSConf
20

Marcy Sutton: Accessibility of Web Components [JSConf2014]

JSConf

Spike Brehm: Building Isomorphic Apps [JSConf2014]

JSConf
22

Ryan Florence: Embularactymerbone [JSConf2014]

JSConf
23

Christoph Burgmer: Hacking a HTML renderer in plain browser-side JS [JSConf2014]

JSConf
24

Jordan Santell: Signal Processing with the Web Audio API [JSConf2014]

JSConf
25

Dan Silvestru: Distributed Complex Computing Using Node.js [JSConf2014]

JSConf
26

Jordan Matthiesen: Modern mobile app tool-chains [JSConf2014]

JSConf
27

Oytun Sengul: Architecture of Cross-Platform Native App Development [JSConf2014]

JSConf
28

Angelina Fabbro: Improving 2D & 3D Canvas Performance on the Web, One Frame at a Time [JSConf2014]

JSConf
29

Jake Verbaten: NPM-style Frontend [JSConf2014]

JSConf
30

Christopher Chedeau: Why does React Scale? [JSConf2014]

JSConf
31

Guy Bedford: Package Management for ES6 Modules [JSConf2014]

JSConf
32

Matt Robenolt: Everything is broken, and I don't know why! [JSConf2014]

JSConf
33

Jeff Morrison: JavaScript Unit Testing with Jest [JSConf2014]

JSConf
34

Poornima Venkatakrishnan: Template Specialization with Express Apps [JSConf2014]

JSConf
35

Josh McClain: Black Magic APIs [JSConf2014]

JSConf
36

Ben Newman: Yield Ahead: Regenerator in Depth [JSConf2014]

JSConf
37

Tomasz Janczuk: On the edge of Node.js and CLR [JSConf2014]

JSConf
38

John Hann: Introducing RaveJS - Zero-config JavaScript applications [JSConf2014]

JSConf
39

John Riviello: The Truth About Your Web App's Performance [JSConf2014]

JSConf
40

Matthew Bergman: Health Myths We Tell Ourselves in Tech [JSConf2014]

JSConf
41

Raquel Velez & Friends: NodeBots: LIVE! [JSConf2014]

JSConf
42

Matthew Whittemore: Social Tables Swaziland [JSConf2014]

JSConf
43

Edward Kim: Engineers as Makers, Not Order Takers [JSConf2014]

JSConf
44

David Catuhe: Unleash 3D games with Babylon.js [JSConf2014]

JSConf
45

Ron Evans: Cylon.js: The JavaScript Evolution Of Open Source Robotics [JSConf2014]

JSConf
46

Zach Carter: Armchair Type Theory [JSConf2014]

JSConf
47

Kate Hudson: Contributors Wanted: Encouraging Diversity in Your Open Source Project [JSConf2014]

JSConf
48

Kyle Lambert: Make It Pop: Visual Design Simplified [JSConf2014]

JSConf
1 unavailable video is hidden