-
-
Notifications
You must be signed in to change notification settings - Fork 35
Home
Gowut (Go Web UI Toolkit) is a full-featured, easy to use, platform independent Web UI Toolkit written in pure Go, no platform dependent native code is linked or called.
The usage of the Gowut is similar to Google's GWT and the Java Swing toolkit. If you are familiar with those, you will get started very easily. The main difference compared to GWT is that this solution does not compile into JavaScript but remains and runs as Go code (on the server side). Remaining on the server side means you don't have to hassle with asynchronous event handlers like in GWT, you can write real synchronous event handlers (like in Java Swing).
You can use this toolkit and build user interfaces with writing Go code only: you can assemble the client interface in Go, and write event handlers in Go. You may optionally spice it and make it more customized with some HTML and CSS (also added from Go code), but that is not required.
The UI can be simply assembled hierarchically from containers and components. Components can generate events which are dispatched to event handlers - also written in pure Go. If there is no component for an HTML tag you wish to use, you can use the Html component to wrap your custom HTML code. Components also allow you to specify custom HTML attributes that will be added for their (wrapper) HTML tags.
Creating user interfaces using Gowut does not require you to think like that the clients will view it and interact with it through a browser. The "browser" layer is hidden by Gowut. While styling the components is done through CSS (either by calling the style builder's methods or passing direct CSS codes), think of it like a way similar to formatting HTML tags with CSS.
The state of the components are stored on server side, in the memory. This means that if a browser is closed and reopened, or you navigate away and back, the same state will be rendered again. AJAX technology is used to automatically synchronize component's state from browser to server, and to dispatch events.
AJAX technology is used also to refresh some parts (components) that change (during event handling) without having to reload the whole page to see the changes.
To quickly test it and see it in action, run the "Showcase of Features" application by typing: (assuming you're in the root of your GOPATH
)
go run src/github.com/icza/gowut/_examples/showcase/showcase.go
Check out the live demo here: https://gowut-demo.appspot.com/show
Read the complete documentation here: Documentation
Check out a full application example here: Full App Example
Check out the godoc of Gowut: http://godoc.org/github.com/icza/gowut/gwu
Bug reporting, issue tracking: https://github.com/icza/gowut/issues
Development takes place in the dev branch: https://github.com/icza/gowut/tree/dev
Discussion forum: https://groups.google.com/d/forum/gowebuitoolkit