Giter VIP home page Giter VIP logo

todom's Introduction

toDOM

Build Status

Introduction

Fast and lightweight JSON to DOM generation in less than 60 lines.

You :

  • Do not like <html>
  • Do not want heavy templating system
  • Love javascript
  • Want performance
  • Are tired of document.createElement

Here is toDOM :

var scope = {};

var el = toDOM({
    attr : { className : 'my_class' },
    events : {
        click : function() {
            console.log('div clicked');
      },
  },
  children : [
    {
        tag : 'p',
        label : 'myParagraph',
        innerHTML : 'Hello',
        style : {
            backgroundColor : '#000'
        }
    }
  ]
}, scope);

document.body.appendChild(el);

Will create the following :

<body>
    <div class="my_class">
        <p style="background-color:#000">
            Hello
        </p>
    </div>
</body>

With a console.log on click and a reference of the <p> DOM element in scope :

    scope.myParagraph //  domElement
    scope.myParagraph.innerHTML // 'Hello'

Usage in object oriented javascript :

var View = function(o) {
    if (o.domDescription) {
      this.buildEl(o.domDescription);
    }
};

View.prototype = {
    buildEl : function(domDescription) {
        this.el = toDOM(domDescription, this);
  }
}

var myView = new View({
    domDescription : {
        tag : 'p',
        children : [
            {
                label : 'helloEl',
                innerHTML : 'hello!'
            }
        ]
    }
});

myView.el // DOM element
myView.helloEl // DOM element
myView.helloEl.innerHTML // 'hello!'

Also :

  • Default tag is 'div'

Demo

See cagosta.github.io/toDOM

## Install ##

toDOM is coded as AMD module but can be installed with npm, bower or old-fashioned src=".min.js".

With npm:

npm install todom

and use it with nodejs:

var toDOM = require('todom')

With bower:

bower install toDOM

Point toDOM to [bower_components_path]/toDOM/app/toDOM.js into your requirejs path config and load it with requirejs:

require(['toDOM/toDOM'], function( toDOM ){

})

With src=" .min.js"

Inside the dist folder, download latest standalone minified version or development version and include it in your html page:

<script src="[path_to_source]/toDOM-latest-standalone-min.js%>"></script>

The module is available via the scope

window.toDOM

To do

## Documentation ##

See jsdoc-generated documentation in /documentation

Folder Structure

app         ->  development files
|- bower_components          ->  [bower](https://github.com/bower/bower) front-end packages
|- main.js                   ->  main file for browser and node.js, handle AMD config
|- to_dom   -> main AMD module
test        ->  unit tests
|
tasks       -> [Grunt](http://gruntjs.com/) tasks, see [generator-mangrove-module](https://github.com/cagosta/generator-mangrove-module)
|
dist        ->  distribution & build files
|
node_modules -> node packages
|
documentation  -> [jsdoc](http://usejsdoc.org/about-jsdoc3.html) generated documentation 

Run unit tests

On the browser

Run grunt test:browser and open test/ on your browser.

#### On a headless browser ####

grunt test:headless will run your tests in a headless browser, with phantomjs and mocha

On node

grunt test:node will run your tests with node and mocha.

Because of requirejs, the mocha command does not work.

Build your own

This project uses Node.js, Grunt and Require.js for the build process. If for some reason you need to build a custom version install Node.js, npm install and run:

grunt build

## Yeoman Mangrove module Generator ##

This module is based on a Yeoman generator: Generator-mangrove-module
Check it for task-related references such as build, deploy etc ..

Authors

License

MIT License

todom's People

Contributors

cagosta avatar

Stargazers

 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.