Open and modern framework for building user interfaces.
特性
- 超小的尺寸,7 kb (gzip)
- 良好的兼容性,支持IE8
- 完全面向对象的组件体系
- 局部CSS,HTML+ Scoped CSS + JS组成可复用的组件
- 更自由的更新,每个组件都有update方法,自由选择时机进行更新
- 模板引擎可替换,开发者可以重写Omi.template方法来使用任意模板引擎
- 提供了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.lite.js版本(不包含mustachejs模板引擎)的话,也可以使用 ${this.data.name} 的方式。
你可以使用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写Omi程序]
中文 | English
- If you want to experience the Omi framework, please click Omi Playground
- If you want to use the Omi framework,please read the Omi documentation
- If you want to develop and improve the Omi framework, there are better solutions or ideas, please read develop the Omi framework step by step
- If you want to get a better reading experience of the above two categories of documents, you can visitDocs Website
- If you are too lazy to build a project scaffolding, you can try Scaffolding for Omi
- If you have Any problems,please New issue
- If you want to be more convenient on the exchange of all Omi can join the QQ Omi exchange group (256426170)
Fetures
- Super tiny size, 7 KB (gzip)
- Good compatibility, support IE8
- Fully object-oriented component system
- Support Scoped CSS, reusable components are composed of HTML, Scoped CSS and JS
- More free updates, each component has a update method, free to choose the right time to update
- Template engines can be replaced, developers can override the Omi.template method to use any template engine
- Provides two development way ( ES6+ and ES5) for developers to choose freely
Plugins
Install
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");
[Try it on Playground]
You can use Omi.makeHTML to generate component tags for nesting.
Omi.makeHTML('Hello', Hello);
Then you can use it in other components, and pass parameter to the component through the data-* , such as:
...
render() {
return `
<div>
<div>Test</div>
<Hello data-name="Omi" />
</div>
`;
}
...
[Try it on Playground]
You can use webpack + babel,configure the babel-loader in the module settings of webpack,then you can use ES6+ to write your web program.
Omi did not abandon the ES5 users, you can also use ES5 to write Omi.[Try Omi-ES5 on Playground]
Contributors
License
This content is released under the MIT License.