mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
d1708fc252db3b5d527c11d39998e9c3f6f072f7
🦉 Odoo Web Library 🦉
Project Overview
The Odoo Web Library (OWL) is a small UI framework intended to be the basis for the Odoo Web Client, and hopefully many other Odoo related projects. OWL's two key features are:
- a declarative component system, with QWeb as a template engine, asynchronous rendering, and an underlying virtual dom,
- and a store, which is a state management solution, loosely inspired by VueX and React/Redux.
If you are interested, you can find a discussion on what makes OWL different from React and Vue here
Try it online!
An online playground is available at https://odoo.github.io/owl/playground to let you experiment with the OWL framework.
Example
Here is a short example to illustrate interactive widgets:
class ClickCounter extends owl.Component {
inlineTemplate = `
<button t-on-click="increment">
Click Me! [<t t-esc="state.value"/>]
</button>`;
state = { value: 0 };
increment() {
this.state.value++;
}
}
const qweb = new owl.QWeb();
const counter = new ClickCounter({qweb});
counter.mount(document.body);
More interesting examples can be found on the playground application.
Installing/Building
If you want to use a simple <script> tag, the last release can be downloaded here:
Some npm scripts are available:
| Command | Description |
|---|---|
npm install |
install every dependency required for this project |
npm run build |
build a bundle of owl in the /dist/ folder |
npm run minify |
minify the prebuilt owl.js file |
npm run test |
run all tests |
npm run test:watch |
run all tests, and keep a watcher |
Documentation
The complete documentation can be found here. The most important sections are:
License
OWL is GPL licensed.
Languages
TypeScript
87.3%
JavaScript
12.1%
CSS
0.5%
Python
0.1%