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:
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 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.