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:
The Isomorphic Go book will be released in December 2017. Pre-order the book from Packt.
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.
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.
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.
With Isomorphic Go, the elimination of the mental context shifts between front-end and back-end coding, allows for faster software development iteration cycles.
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.
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.
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 isokit package provides common isomorphic functionality in one kit, including isomorphic template rendering and end to end application routing.
The isogoapp, is a basic, barebones web app, intented to be used as a starting point for developing an Isomorphic Go application.
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.
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.
Copyright © The Isomorphic Go Project. All Rights Reserved
"Isomorphic Go" and the Isomorphic Go logo are trademarks of The Isomorphic Go Project. "Wirecog" and "Wireframe Cognition" are trademarks of Wirecog, LLC.