All Projects → hexops → Vecty

hexops / Vecty

Licence: bsd-3-clause
Vecty lets you build responsive and dynamic web frontends in Go using WebAssembly, competing with modern web frameworks like React & VueJS.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Vecty

gox
JSX for Go
Stars: ✭ 165 (-92.36%)
Mutual labels:  gopherjs, vecty
Goplayspace
Advanced Go Playground frontend written in Go, with syntax highlighting, turtle graphics mode, and more
Stars: ✭ 765 (-64.6%)
Mutual labels:  gopherjs, frontend
qlql
No description or website provided.
Stars: ✭ 26 (-98.8%)
Mutual labels:  gopherjs, vecty
Rfs
✩ Automates responsive resizing ✩
Stars: ✭ 2,789 (+29.06%)
Mutual labels:  frontend, responsive
Wasmplay
WASM Web "Framework" Playground
Stars: ✭ 105 (-95.14%)
Mutual labels:  webassembly, frontend
Vue
The progressive framework for WebAssembly applications.
Stars: ✭ 211 (-90.24%)
Mutual labels:  gopherjs, webassembly
Mini.css
A minimal, responsive, style-agnostic CSS framework!
Stars: ✭ 2,938 (+35.96%)
Mutual labels:  frontend, responsive
Prism
Build frontend web apps with Ruby and WebAssembly
Stars: ✭ 251 (-88.39%)
Mutual labels:  webassembly, frontend
Easygrid
EasyGrid - VanillaJS Responsive Grid
Stars: ✭ 77 (-96.44%)
Mutual labels:  frontend, responsive
Rust Webapp Template
Template project for Rust web app
Stars: ✭ 64 (-97.04%)
Mutual labels:  webassembly, frontend
vecty-chatapp
Vecty Samples
Stars: ✭ 13 (-99.4%)
Mutual labels:  gopherjs, vecty
Godom
Make DOM manipulation in Go as similar to JavaScript as possible. (via GopherJS or WebAssembly)
Stars: ✭ 125 (-94.22%)
Mutual labels:  gopherjs, frontend
Tinygo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
Stars: ✭ 9,068 (+319.62%)
Mutual labels:  webassembly, tinygo
Tachyons
Functional css for humans
Stars: ✭ 11,057 (+411.66%)
Mutual labels:  frontend, responsive
Percy
Build frontend browser apps with Rust + WebAssembly. Supports server side rendering.
Stars: ✭ 1,856 (-14.11%)
Mutual labels:  webassembly, frontend
Uibench
UI Benchmark
Stars: ✭ 163 (-92.46%)
Mutual labels:  frontend
S3m Spec
Stars: ✭ 165 (-92.36%)
Mutual labels:  webassembly
Learning Pwa
📱some samples and blogs about how to start with your first PWA
Stars: ✭ 162 (-92.5%)
Mutual labels:  frontend
Wasm Pdf
Generate PDF files with JavaScript and WASM (WebAssembly)
Stars: ✭ 163 (-92.46%)
Mutual labels:  webassembly
Adam Blog
Adam Blog is a minimal clear theme for Jekyll
Stars: ✭ 167 (-92.27%)
Mutual labels:  responsive

Vecty lets you build responsive and dynamic web frontends in Go using WebAssembly, competing with modern web frameworks like React & VueJS.

Build Status PkgGoDev GoDoc codecov

Benefits

  • Go developers can be competitive frontend developers.
  • Share Go code between your frontend & backend.
  • Reusability by sharing components via Go packages so that others can simply import them.

Goals

  • Simple
    • Designed from the ground up to be easily mastered by newcomers (like Go).
  • Performant
    • Efficient & understandable performance, small bundle sizes, same performance as raw JS/HTML/CSS.
  • Composable
    • Nest components to form your entire user interface, seperating them logically as you would any normal Go package.
  • Designed for Go (implicit)
    • Written from the ground up asking the question "What is the best way to solve this problem in Go?", not simply asking "How do we translate $POPULAR_LIBRARY to Go?"

Features

  • Compiles to WebAssembly (via standard Go compiler).
  • Small bundle sizes: 0.5 MB hello world (see section below).
  • Fast expectation-based browser DOM diffing ('virtual DOM', but less resource usage).

Vecty vs. Vugu

If you're wondering if you should use Vecty or Vugu, consider reading this Twitter thread for advice from both myself and the creator of Vugu.

Current Status

Vecty is currently considered to be an experimental work-in-progress. Prior to widespread production use, we must meet our v1.0.0 milestone goals, which are being completed slowly and steadily as contributors have time (Vecty is over 4 years in the making!).

Early adopters may make use of it for real applications today as long as they are understanding and accepting of the fact that:

  • APIs will change (maybe extensively).
  • A number of important things are not ready:
    • Extensive documentation, examples and tutorials
    • URL-based component routing
    • Ready-to-use component libraries (e.g. material UI)
    • Server-side rendering
    • And more, see milestone: v1.0.0
  • The scope of Vecty is only ~80% defined currently.
  • There are a number of important open issues.

For a list of projects currently using Vecty, see the doc/projects-using-vecty.md file.

Near-zero dependencies

Vecty has nearly zero dependencies, it only relies on reflect from the Go stdlib. Through this, it is able to produce the smallest bundle sizes for Go frontend applications out there, limited only by the Go compiler itself:

Example binary Compiler uncompressed gzip --best brotli
hellovecty.wasm tinygo 0.14.0 252K 97K 81K
hellovecty.wasm go 1.15 2.1M 587K 443K
markdown.wasm go 1.15 3.6M 1010K 745K
todomvc.wasm go 1.15 2.9M 825K 617K

Note: Bundle sizes above do not scale linearly with more code/dependencies in your Vecty project. hellovecty is the smallest base-line bundle that the compiler can produce with just Vecty as a dependency, other examples above pull in more of the Go standard library and you would not e.g. have to pay that total cost again.

Community

Changelog

See the doc/CHANGELOG.md file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].