tinybind is the espiritual sucessor of Rivets.js, a lightweight data binding and templating system that facilitates building data-driven views. It is agnostic about every aspect of a front-end MV(C|VM|P) stack, making it easy to introduce it into your current workflow or to use it as part of your own custom front-end stack comprised of other libraries.
npm install tinybind
Use in a script tag...
<script src="node_modules/tinybind/dist/tinybind.js"></script>
... or import using a bundler like webpack
import tinybind from 'tinybind'
<section id="auction">
<h3>{ auction.product.name }</h3>
<p>Current bid: { auction.currentBid | money }</p>
<aside rv-if="auction.timeLeft | lt 120">
Hurry up! There is { auction.timeLeft | time } left.
</aside>
</section>
tinybind.bind($('#auction'), {auction: auction})
Documentation is available on the homepage. Learn by reading the Guide and refer to the Binder Reference to see what binders are available to you out-of-the-box.
- Public interface
- Uses web components specs instead of custom implementation
- Implement computed feature using
watch
formatter instead of a specific syntax - Add not/negate builtin formatters
- Remove unless and unchecked binders in favor of combining not/negate formatters with if/checked binders
- Add ability to customize input event through event-name attribute
- Internal changes
- Written in ES6 instead of coffeescript
- Change how scope of iteration binder works. Instead of copying properties down to children, uses a prototype like approach
- Related: 486 512 417
- More info in the documentation
- Change name of rv-each index property from index to $index
- Change how to customize index name in each binder (using an attribute)
- Do not bind publish, bind and unbind methods to binding instances
- Register default binder through fallbackBinder option instead of * binder
- Integrate sightglass into tinybind code base
- Remove view.select method
- Rename binding property args to arg and changed type from array to string
- The rv-* attributes are removed after binding
- Changes how observer is registered / notified. Instead of passing a function (sync), pass an object with a sync method
First install any development dependencies.
$ npm install
tinybind.js uses rollup as it's bundling / build tool. Run the following to compile the source into dist/
.
$ npm run build
tinybind.js uses mocha as it's testing framework, alongside should for expectations and sinon for spies, stubs and mocks. Run the following to run the full test suite.
$ npm test
The documentation is built with harp which must be installed globally
$ cd docs
$ harp compile _harp ./
- Ensure the bug can be reproduced on the latest master.
- Open an issue on GitHub and include an isolated JSFiddle demonstration of the bug. The more information you provide, the easier it will be to validate and fix.
- Fork the repository and create a topic branch.
- Make sure not to commit any changes under
dist/
as they will surely cause conflicts for others later. Files underdist/
are only committed when a new build is released. - Include tests that cover any changes or additions that you've made.
- Push your topic branch to your fork and submit a pull request. Include details about the changes as well as a reference to related issue(s).
Copyright (c) 2019 Luiz Américo Pereira Câmara
Copyright (c) 2011 Michael Richards