Git Product home page Git Product logo

regular's Introduction

![regularjs](http://regularjs.github.io/image/regular-icon-100.png)

Regularjs

Build Status

Regularjs is a living template engine that helping us to create data-driven component.

Features

  • 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

Quirk Start

Example 1: define a simple Note Component

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"); 

Example1 on codepen.io

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.

Example 2: define a List Component

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.

Example2 on codepen.io

Example 3: combine Note with NoteList

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}} on-enter={{this.post()}}>", 
  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.

Example3 on codepen.io

See more on Guide: Quirk Start

Resources

Browser Compatibility

IE7+ and other modern browser.

Community

Contribute

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 the gulp test is passed, and the test/runner/index.html is passed in every target browser (if you doesn't have some browser installed that list in gulpfile's karmaConfig)

Who are use ?

  1. NetEase : operator of famous www.163.com.

LICENSE

MIT.

regular's People

Contributors

leeluolee avatar mekto avatar jabez128 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.