mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[IMP] owl: introduce dev mode
This commit adds a static key 'dev' on QWeb (which acts as a central point of access in owl internal code), and a 'mode' key on the value exported by owl to let external code manipulate it. closes #117
This commit is contained in:
@@ -13,4 +13,5 @@
|
|||||||
## Miscellaneous
|
## Miscellaneous
|
||||||
- [Quick Start](quick_start.md)
|
- [Quick Start](quick_start.md)
|
||||||
- [Animations](animations.md)
|
- [Animations](animations.md)
|
||||||
|
- [Tooling](tooling.md)
|
||||||
- [Comparison with React/Vue](comparison.md)
|
- [Comparison with React/Vue](comparison.md)
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# 🦉 Tooling 🦉
|
||||||
|
|
||||||
|
## Development mode
|
||||||
|
|
||||||
|
By default, Owl is in *production* mode, this means that it will try to do its
|
||||||
|
job fast, and skip some expensive operations. However, in some cases, it is
|
||||||
|
convenient to have better information on what is going on, this is the purpose
|
||||||
|
of the dev mode.
|
||||||
|
|
||||||
|
Owl has a mode flag, in `owl.__info__.mode`. Its default value is `prod`, but
|
||||||
|
it can be set to `dev`:
|
||||||
|
|
||||||
|
```js
|
||||||
|
owl.__info__.mode = 'dev';
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that templates compiled with the `prod` settings will not be recompiled.
|
||||||
|
So, changing this setting is best done at startup.
|
||||||
+17
-3
@@ -12,12 +12,26 @@ export { Observer } from "./observer";
|
|||||||
// themselves in QWeb, otherwise these files will not even be loaded.
|
// themselves in QWeb, otherwise these files will not even be loaded.
|
||||||
import "./qweb_directives";
|
import "./qweb_directives";
|
||||||
import "./qweb_extensions";
|
import "./qweb_extensions";
|
||||||
export { QWeb } from "./qweb_core";
|
import { QWeb } from "./qweb_core";
|
||||||
|
export { QWeb };
|
||||||
|
|
||||||
export { connect, Store } from "./store";
|
export { connect, Store } from "./store";
|
||||||
import * as _utils from "./utils";
|
import * as _utils from "./utils";
|
||||||
|
|
||||||
export const __info__ = {}
|
export const __info__ = {};
|
||||||
|
|
||||||
|
|
||||||
|
Object.defineProperty(__info__, "mode", {
|
||||||
|
get() {
|
||||||
|
return QWeb.dev ? "dev" : "prod";
|
||||||
|
},
|
||||||
|
set(mode: string) {
|
||||||
|
QWeb.dev = mode === "dev";
|
||||||
|
if (QWeb.dev) {
|
||||||
|
const url = `https://github.com/odoo/owl/blob/master/doc/tooling.md#development-mode`;
|
||||||
|
console.warn(
|
||||||
|
`Owl is running in dev mode. This is not suitable for production use. See ${url} for more information.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
export const utils = _utils;
|
export const utils = _utils;
|
||||||
|
|||||||
@@ -127,6 +127,9 @@ export class QWeb {
|
|||||||
templates: { [name: string]: Template } = {};
|
templates: { [name: string]: Template } = {};
|
||||||
utils = UTILS;
|
utils = UTILS;
|
||||||
|
|
||||||
|
// dev mode enables better error messages or more costly validations
|
||||||
|
static dev: boolean = false;
|
||||||
|
|
||||||
// the id field is useful to be able to hash qweb instances. The current
|
// the id field is useful to be able to hash qweb instances. The current
|
||||||
// use case is that component's templates are qweb dependant, and need to be
|
// use case is that component's templates are qweb dependant, and need to be
|
||||||
// able to map a qweb instance to a template name.
|
// able to map a qweb instance to a template name.
|
||||||
|
|||||||
Reference in New Issue
Block a user