2017年試試Web組件化框架Omi

Omi

Open and modern framework for building user interfaces.html

qq

特性

  • 超小的尺寸,7 kb (gzip)函數

  • 局部CSS,HTML+ Scoped CSS + JS組成可複用的組件。不用擔憂組件的CSS會污染組件外的,Omi會幫你處理好一切

  • 更自由的更新,每一個組件都有update方法,自由選擇時機進行更新。你也能夠和obajs或者mobx一塊兒使用來實現自動更新。

  • 模板引擎可替換,開發者能夠重寫Omi.template方法來使用任意模板引擎

  • 徹底面向對象,函數式和麪向對象各有優劣,Omi使用徹底的面向對象的方式來構建Web程序。

  • ES6+ 和 ES5均可以,Omi提供了ES6+和ES5的兩種開發方案。你能夠自有選擇你喜好的方式。

經過npm安裝

npm install omi

Hello World

class Hello extends Omi.Component {
    constructor(data) {
        super(data);
    }
    style () {
        return  `
            h1{
                cursor:pointer;
            }
         `;
    }
    handleClick(target, evt){
        alert(target.innerHTML);
    }
    render() {
        return  `
        <div>
            <h1 onclick="handleClick(this, event)">Hello ,{{name}}!</h1>
        </div>
        `;

    }
}

Omi.render(new Hello({ name : "Omi" }),"body");

點擊這裏->在線試試

你可使用Omi.makeHTML來生成組件標籤用於嵌套。

Omi.makeHTML('Hello', Hello);

那麼你就在其餘組件中使用,而且經過data-*的方式能夠給組件傳參,如:

...
  render() {
        return  `
        <div>
            <div>Test</div>
            <Hello data-name="Omi" />
        </div>
        `;
    }
    ...

點擊這裏->在線試試

你可使用 webpack + babel,在webpack配置的module設置babel-loader,立馬就能使用ES6+來編寫你的web程序。

固然Omi沒有拋棄ES5的用戶,你可使用ES5的方式編寫Omi。

ES5方式

var Hello =  Omi.create("Hello", {
    style: function () {
        return "h1{ cursor:pointer }";
    },
    handleClick: function (dom) {
        alert(dom.innerHTML)
    },
    render: function () {
        return ' <div><h1 onclick="handleClick(this, event)">Hello ,{{name}}!</h1></div>'
    }
});

var Test =  Omi.create("Test", {
    render: function () {
        return '<div>\
                    <div>Test</div>\
                    <Hello data-name="Omi" />\
                </div>'
    }
});

Omi.render(new Test(),'#test');

和ES6+的方式不一樣的是,再也不須要makeHTML來製做標籤用於嵌套,由於 Omi.create的第一個參數的名稱就是標籤名。

點擊這裏試試ES5寫Omi程序

加入Omi吧!

Github: https://github.com/AlloyTeam/omi

I need you.

相關文章
相關標籤/搜索