way.js is a simple, lightweight, persistent, framework-agnostic javascript library that allows you to bind DOM elements to an in-memory datastore (with no to little JS code).
If you like buzzwords, that means super easy two-way databinding.
Once you tried it here, check the documentation or play with some code on Codepen / jsFiddle.


This form is bound to the "formData" property and automatically parsed on each change.
Data is set to persistent. Try refreshing the page after changing some of its values.
Bonus: open the JS console to see watchers in action.
Name (uppercased):
The only code required to achieve that (wording excluded) is the following:

<form way-data="formData" way-persistent>
<input type="text" name="name">
<input type="text" name="picture">
<img way-data="formData.picture" way-default="[some url]">
<input type="checkbox" name="nationality[]" value="french"> [...]
<a way-action-push="formData.skills">Add a skill</a>
<div way-repeat="formData.skills">
<input type="text" way-data="title" way-persistent>
<input type="radio" value="noob" way-data="level" way-persistent> [...]
This is the data stored in way.js
Clear data