OWL Framework

Mysterious OWL: A web framework for structured, dynamic and maintainable applications

Why OWL?

XML based

Templates are based on the XML format, which allows interesting applications. For example, they could be stored in a database and modified dynamically with xpaths.

Templates compiled in the browser

This may not be a good fit for all applications, but if you need to generate dynamically user interfaces in the browser, this is very powerful. For example, a generic form view component could generate a specific form user interface for each various models, from a XML view.

No toolchain required

This is extremely useful for some applications, if, for various reasons (security/deployment/dynamic modules/specific assets tools), it is not ok to use standard web tools based on npm.

Example

class Counter extends owl.Component {
  state = { value: 0 };

  increment() {
    this.state.value++;
  }
}

const qweb = new owl.QWeb(TEMPLATES);
const counter = new Counter({ qweb });
counter.mount(document.body);
<templates>
  <button t-name="Counter" t-on-click="increment">
    Click Me! [<t t-esc="state.value"/>]
  </button>
</templates>

Note that we assume here that the xml templates are available in the TEMPLATES string. More interesting examples can be found on the Playground application.