Hoppa till innehåll

OWL-ramverket: frontend-utveckling i Odoo 18

Odoos egna JavaScript-ramverk

OWL (Odoo Web Library) är Odoos JavaScript-ramverk för frontend. Det ersatte den äldre widget-arkitekturen och påminner om React och Vue: komponenter, reaktiv state, hooks och templates. I Odoo 18 är OWL 2 standard.

Komponenter

En OWL-komponent är en JavaScript-klass med en XML-template. State hanteras med useState. Props skickas från förälder till barn. Livscykelmetoder: setup, onMounted, onWillUnmount. Om du kan React eller Vue känner du igen mönstret.

Templates

QWeb-templates i XML, samma syntax som backend-templates men renderade i webbläsaren. t-esc för text, t-foreach för loopar, t-if för villkor. Templates kompileras till effektiv JavaScript vid build.

Hooks

useService ger tillgång till Odoo-tjänster (RPC, notification, action). useEnv ger environment-objekt med konfiguration. useRef för DOM-referens. Samma hook-pattern som React, men anpassat till Odoos arkitektur.

RPC-anrop

ORM-anrop från frontend: this.env.services.rpc('/web/dataset/call_kw', { model, method, args, kwargs }). Hämta data, skapa poster, anropa servermetoder. Allt asynkront med promises.

Registries

Odoo använder registries för att koppla komponenter till vyer, fältwidgets och actions. Registrera din komponent som en fältwidget: registry.category('fields').add('my_widget', MyWidget). Den dyker upp som val i vyerna.

Debugging

Odoo Debug Mode (Inställningar → Aktivera utvecklarläge). Browser DevTools med OWL DevTools-extension. Console.log fungerar, men OWL:s reaktiva system kan göra det svårt att spåra state-ändringar manuellt.

Odoo Multi-Company: hantera flera bolag i ett system
Koncernstruktur utan separata installationer