Book Image

Isomorphic JavaScript Web Development

By : Tomas Alabes, Konstantin Tarkus
Book Image

Isomorphic JavaScript Web Development

By: Tomas Alabes, Konstantin Tarkus

Overview of this book

<p>The latest trend in web development, Isomorphic JavaScript, allows developers to overcome some of the shortcomings of single-page applications by running the same code on the server as well as on the client. Leading this trend is React, which, when coupled with Node, allows developers to build JavaScript apps that are much faster and more SEO-friendly than single-page applications.</p> <p>This book begins by showing you how to develop frontend components in React. It will then show you how to bind these components to back-end web services that leverage the power of Node. You'll see how web services can be used with React code to offload and maintain the application logic. By the end of this book, you will be able to save a significant amount of development time by learning to combine React and Node to code fast, scalable apps in pure JavaScript.</p>
Table of Contents (16 chapters)
Title Page
Credits
About the Authors
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface

Implementing a basic isomorphic router


We are going to cover routing and navigation in one of the later chapters in this book; but for now, let's see how a basic isomorphic router may look like.

Router is the core component in any web application, the main function of which is being able to match any specific URL string (for example /search?q=canon) to a corresponding action method, which is responsible for rendering a web page or screen. In its simplest form, a router is just a collection of routes plus a matching method. Each route is just a combination of a URL path string (or, regular expression pattern) and one or more action methods (actions). On the client side, it is used in a combination with a navigation component (for example, the one powered by HTML5 History API).

Let's add the core/Router.js file with the following contents:

// TODO: Register more routes here 
const routes = [ 
  require('../routes/Home') 
]; 
 
const router = { 
  match(location) { 
    const route = routes.find...