Open and modern framework for building user interfaces. css
npm install omi
class Hello extends Omi.Component { constructor(data) { super(data); } style () { return ` <style> h1{ cursor:pointer; } </style> `; } 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");
[点击这里->在线试试]html
你可使用Omi.makeHTML来生成组件标签用于嵌套。webpack
Omi.makeHTML('Hello', Hello);
那么你就在其余组件中使用,而且经过data-*的方式能够给组件传参,如:git
... render() { return ` <div> <div>Test</div> <Hello data-name="Omi" /> </div> `; } ...
注意,style方法里面return包裹的<style></style>
不是必须的。主要是方便识别成jsx文件时候有css语法高亮。github
[点击这里->在线试试]web
你可使用 webpack + babel,在webpack配置的module设置babel-loader,立马就能使用ES6+来编写你的web程序。npm
固然Omi没有抛弃ES5的用户,你可使用ES5的方式编写Omi。babel
var Hello = Omi.create("Hello", { style: function () { return "<style>h1{ cursor:pointer }</style>"; }, 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的第一个参数的名称就是标签名。框架
Github: https://github.com/AlloyTeam/omi
I need you.