Frappe Framework
Utiliser Vue dans une page du bureau
On crée une Page, un composant Vue et un bundle. Au chargement, le bundle est requis et monté. Le mode développeur peut recharger à chaud.
Pourquoi
Une page du bureau (Desk) peut utiliser la réactivité de Vue et les appels serveur, sans configurer une application Vue à part. L’API de la page est dans API Page.
Page
Dans le DocType Page (/app/page), créez une entrée. Des fichiers apparaissent dans le module choisi. Pour test_vue : __init__.py, test_vue.json et test_vue.js. Le JavaScript appelle frappe.ui.make_app_page avec le parent, le titre None et single_column: true. La route /app/test-vue affiche alors une page vide titrée None.
Fichiers Vue
Frappe transpile et empaquette les .vue. Sous public/js, l’exemple place TestVue.vue et test_vue.bundle.js. Le composant affiche un ref « Hello, World ». Le bundle importe createApp, monte le composant sur l’élément du wrapper, et expose frappe.ui.setup_vue.
Charger
Dans le test_vue.js généré, on_page_load crée la page avec le titre Test Vue. Si frappe.boot.developer_mode est vrai, un rappel est poussé dans frappe.hot_update pour rappeler load_vue. La ligne publiée frappe.hot_update ??= frappe.hot_update ne change pas la valeur. on_page_show appelle aussi load_vue.
load_vue vide .layout-main-section, attend frappe.require("test_vue.bundle.js"), puis frappe.ui.setup_vue sur ce conteneur. Le résultat est gardé dans frappe.test_vue_app.
Construire
bench build reconstruit le front de toutes les applications du bench. Pour surveiller une application, depuis bench/apps/frappe :
npm run build -- --apps app --watchLe navigateur recharge à chaud. La page doit afficher le message du composant.
Point d’attention
Le bundle doit s’appeler comme l’argument de frappe.require. bench build ne se limite pas à l’application en cours. Le titre initial None vient du fichier généré : l’exemple le remplace par Test Vue au moment du chargement Vue.
