Isomorphic Go

What is Isomorphic Go?

Isomorphic Go is the methodology to create isomorphic web applications using the Go (Golang) programming language.

An isomorphic web application, is a web application, that contains code which can run, on both the web client and the web server.

Here's an introduction to Isomorphic Go, given by Kamesh Balasubramanian:


Learn Isomorphic Go

The Isomorphic Go book will be released in December 2017. Pre-order the book from Packt.

Book Description

The Isomorphic Go book begins with an in-depth exploration of the benefits provided by the isomorphic web application architecture. The reader is introduced to the Isomorphic Go toolchain, and how it can be utilized to write Go code that functions across environments. The reader will also learn how to create Go programs in the web browser using GopherJS, render isomorphic templates, perform end-to-end application routing, use isomorphic handoff to seamlessly transition state from the web server to the web browser, and compose isomorphic forms that have the ability to re-use form validation logic. The reader will also be exposed to advanced concepts including the implementation of real-time web application functionality with websockets, the creation of reusable components (cogs) that are rendered using the virtual DOM, and finally, the reader will learn how to deploy an Isomorphic Go web application to a production environment.

What You Will Learn

Benefits of Isomorphic Go

Modern Technology

Go is a modern programming language that's designed to be relevant in an age of multi-core processors and distributed systems.

Unlike Node.js, back-end web server instances implemented in Go, are multi-threaded, using cheap, lightweight threads known as goroutines.

Go has an implicit build system which eliminates the need to manually create and maintain build files.

Go comes with a robust standard library, giving us a lot of functionality out of the box.

Go's powerful concurrency constructs allow us to avoid callback hell.

Client-Server Synergy

Isomorphic Go eliminates mental context-shifts between back-end and front-end coding, since the entire application is written in Go.

Isomorphic Go allows for seamless data exchange between the client and the server using a native, binary format.

Increased Productivity, Better Maintainability

With Isomorphic Go, the elimination of the mental context shifts between front-end and back-end coding, allows for faster software development iteration cycles.

Unlike JavaScript, Go provides type safety, allowing us to find and eliminate many bugs at compile time itself.

Isomorphic Go gives us the ability to share parts of the application codebase, between the client and the server, allowing us to reuse code and avoid repetition.

Unlike JavaScript, Go was designed to scale for large codebases. Go's implementation of packages, makes this possible.

High Performance

With Isomorphic Go, we no longer have to place loading prompts while the page initially loads. We can simply render the initial page load.

Unlike Node.js, there is no language-specific, virtual machine running on the server. Go code on the server, gets compiled to a native binary, and the machine executes it.

SEO Friendly

Isomorphic Go allows us to create web applications that are friendly for both humans and search engine bot crawlers. This is possible, since web site templates can be rendered either on the server-side or the client-side.


The Isomorphic Go Toolchain

IsoKit

The isokit package provides common isomorphic functionality in one kit, including isomorphic template rendering and end to end application routing.

Isomorphic Go App

The isogoapp, is a basic, barebones web app, intented to be used as a starting point for developing an Isomorphic Go application.

Kick

Kick is a lightweight mechanism to provide an instant kickstart to a Go web server instance, upon the modification of a Go source file within a particular project directory (including any subdirectories).

An instant kickstart consists of a recompilation of the Go code and a restart of the web server instance.

Kick comes with the ability to take both the go and gopherjs commands into consideration when performing the instant kickstart. This makes it a really handy tool for isomorphic golang projects.

Colophon

You might be wondering why the Isomorphic Go logo contains the racing motif. Our logo is inspired by the concept of "Mechanical Sympathy" which is attributed to the legendary race car driver, Jackie Stewart. The car and the Gopher's wardrobe are fashioned from that classic racing era.

The Isomorphic Go Logo was created by Olga Shalakhina. It is inspired by the Go Gopher artwork created by Renée French.