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

Fetching data from the server


Let's learn another good trick which may help you develop isomorphic components. Say that we need to have an HTTP client utility that will be used to request data from the server. The implementation of this utility will differ based on what environment it's targeting. In Node.js, it will use native http module, and on the client, it will use the browser's XMLHttpRequest. Or, if we want to work with a higher level of abstraction, we can use the node-fetch module on the server and the whatwg-fetch module on the client.

You can install these two npm modules by running the following:

npm install whatwg-fetch node-fetch --save

The first one uses XHTMLHttpRequest behind the scene and the later one-Node.js http module, both providing almost the same API.

Now, create two files, one for each of the environments we're targeting:

// core/fetch/fetch.client.js 
import 'whatwg-fetch'; 
 
export default self.fetch.bind(self); 
exportconst Headers = self.Headers; 
exportconst Request...