After version 0.3.0: regularjs change the default TAG from `{{}}` to the more clean`{}`, please use `Regular.config({BEGIN:'{{', END: '}}'})` if you need the old syntax`
Regularjs is a living template engine that helping us to create data-driven component.
- String-based template make it flexible to build your component.
- data-binding is based on dirty-check, angular experience also make sense to regularjs
- self-contained and well encapsulation, make it be easily integrated with other framework
- composite component , using component as 'custom element'.
- directive, filter, event and animation... all you need is provided out of box with concise API
var Note = Regular.extend({
template:
"<input {#if !disabled} r-model='hello' {#else} disabled {/if} > {hello} \
<button on-click={disabled = !disabled}>{disabled? 'active': 'disable'} it</button>"
})
// inject component into #app , you can also inject at 'before' , 'after', 'top'.
var note = new Note().$inject("#app");
the Example is dead simple, but you can find the directive and attribute is easily switched by statement 'if'. which is difficult with other mvvm framework.
var NoteList = Regular.extend({
template:
"<ul>{#list notes as nt}" +
"<li class={nt.done? 'done': ''} on-click={nt.done= !nt.done}>{{nt.content}}</li>" +
"{/list}</ul>"
});
var list = new NoteList({
data: {notes: [{content: 'playgame'}, {content: 'homework'}]}
}).$inject("#app");
In this Example, we create a ListView by statement list
.
we need refactor Note to make it composable.
var Note = Regular.extend({
name: 'note', // register component during the definition of Component
template:
"<input r-model={draft}> <button on-click={this.post()}> post</button>",
post: function(){
var data = this.data;
this.$emit('post', data.draft);
data.draft = ""; //clear the draft
}
});
Regular.component('list', NoteList); // manual register a component
when 'Enter' is pressed, we emit a 'post' event with the draft
as the $event object.
the
this
in template is pointing to the component self.
then, define Core Component: NoteApp.
var NoteApp = Regular.extend({
template:
"<note on-post={notes.push({ content: $event} )}/>"+
"<list notes ={notes}></list>"
})
var noteapp = new NoteApp({
data: {notes:[] }
});
noteapp.$inject('#app');
you can register a component(via attribute name
or method Component.component
) to make them composable in other component.
See more on Guide: Quirk Start
IE7+ and other modern browser.
###bower
bower install regularjs
dist/regular.js
have been packaged as a standard UMD, you can use it in AMD、commonjs and global.
npm install regularjs
use
var Regular = require('regularjs');
component install regularjs/regular
use
var Regular = require('regularjs/regular');
- NetEase : operator of famous www.163.com.
-
If you find bugs or have suggestion, please feel free to open an issue
-
Ask any questions on Stack Overflow with tag
regularjs
. -
Social
- twitter: follow the @regularjs.
- gitter: talk on
- weibo: @拴萝卜的棍子
regularjs is still in heavily development, helping us with feedback. there is some recommend to contributor.
- Please open issue before sending pull request,
- if needed, add your testcase at
test/specs
folder. always make sure thegulp test
is passed, and thetest/runner/index.html
is passed in every target browser (if you doesn't have some browser installed that list in gulpfile's karmaConfig)
MIT.