Web uygulamasında bir arka uç modülü bir uygulama olarak kullanılır: ana ekrandan açılır, bölümlerini sekmeler olarak gösterir ve kullanıcı ondan ayrıldığında arka planda çalışmaya devam eder. Bu sayfa istemcinin okuduğu uygulama kataloğu girdilerini, webapp/js/module-app.js dosyasının bir modül uygulamasını nasıl kurduğunu, çalışan uygulamaların ekranlarını nasıl koruduğunu ve webapp/js/app-scope.js dosyasının hangi modüllerin kurulu olduğunu nasıl yayımladığını açıklar. Ana ekranın kendisi ana ekran, dock ve başlatıcı sayfasındadır.
Kısaca¶
- İstemci uygulamalarını yalnız
GET /app_store/registryucundan bilir; bu uç oturum açmış kullanıcı için her uygulamanın manifestosunu ve hak durumunu döndürür (webapp/js/home.js:409-419,src/cluster_erp/modules/app_store/routes.py:18-40). - Katalog dosyası 28 uygulama manifestosu içerir;
screendeğerlerimodule(20),list(2) ve birer adetsettings,library,store,assistant,mailveappmgrolur (src/cluster_erp/modules/app_store/catalog.jsonayrıştırılarak sayıldı). screenRenderer(a)screendeğerini bir çizim işlevine eşler;moduledeğerimakeModuleScreenolur (webapp/js/home.js:2415-2441).makeModuleScreenher kenar çubuğu bölümünü alttaki sekme çubuğunun bir sekmesine çevirir (webapp/js/module-app.js:69-235).- Bir uygulamadan ayrılmak canlı ekranını bellekte tutar; onu yalnız açık uygulamalar ekranındaki kapatma sıfırlar (
webapp/js/home.js:2252-2326,webapp/js/home.js:2535-2557).
Nasıl çalışır¶
Uygulama manifestoları¶
Her kayıt girdisi katalogdan bir manifesto taşır. İstemci şu manifesto alanlarını okur:
| Alan | İstemcideki kullanım | Kaynak |
|---|---|---|
id, label, glyph, color, bg |
Kutucuk, dock simgesi ve başlık | webapp/js/home.js:520, webapp/js/home.js:1063-1070 |
screen |
Uygulamayı hangi çizicinin açacağı | webapp/js/home.js:2415-2441 |
module, modules |
Uygulamanın gösterdiği arka uç modülü ve kapsadığı her modül | webapp/js/home.js:794-800, webapp/js/home.js:2429 |
entity, endpoint |
Bir list uygulamasının varlığı |
webapp/js/home.js:2431-2437 |
tableList |
Uygulamanın listelerinde tam sütunlu tablolar | webapp/js/home.js:2429-2437 |
menu |
Uygulama çalışan bir uygulama değil, geçici bir menü olarak açılır | webapp/js/home.js:2452-2465, webapp/js/home.js:2469-2473 |
permanent |
Kutucuk ana ekrandan kaldırılamaz | webapp/js/home.js:742-744 |
dock_fixed |
Uygulama dock'un başına sabitlenir ve sabitlemesi kaldırılamaz | webapp/js/home.js:990-997 |
folder |
Uygulama ana ekrana eklendiğinde bir sistem klasörüne katılır | webapp/js/home.js:762-780 |
gated_entry |
Uygulamanın özel kodu kapılı bir paket olarak gelir | webapp/js/home.js:452-457 |
Kayıttan gelen durum haritası, kurulu, lisanslı ve kullanıcının rollerinden birine koltuk atanmış olmadıkça bir uygulamayı her yüzeyde gizler (webapp/js/home.js:425-430). Bu bayrakların arkasındaki katmanlar uygulama mağazası, lisans ve haklar sayfasında anlatılır.
Bir modül uygulamasını kurma¶
makeModuleScreen(moduleName, {table, accent}), metadata'yı ve modülün kapılı paketini bekleyen, sonra modülün kenar çubuğunu okuyan bir çizim işlevi döndürür (webapp/js/module-app.js:69-101):
hidden_from_bartaşıyan bölümler atlanır. Aramadan ulaşılabilir kalırlar (webapp/js/module-app.js:103-105).required_permissiontaşıyan bölümler o koda sahip olmayan kullanıcı için atlanır (webapp/js/module-app.js:106-108).- Kalan her bölüm bir sekme,
tabbed_listiçin varlık başına bir sekme olur (webapp/js/module-app.js:109-137).view_typebaşına motor için bkz. metadata çizimi. - Tek sekmeli bir modül içeriğini sekme çubuğu olmadan gösterir (
webapp/js/module-app.js:148-154). - Sekme çubuğu gezen odaklı bir
tablistöğesidir; sol ve sağ ok tuşları sekmeler arasında gezer (webapp/js/module-app.js:156-212). - Her sekme yeni bir bölmeye boyar; böylece önceki bir sekmeden gelen geç yanıt geçerli sekmenin üzerine yazamaz (
webapp/js/module-app.js:183-192). - Bir modül ve bölüm anahtarı taşıyan
cluster:module-tabolayı sekme değiştirir; parametreler hedef sekme zaten etkinken bile onu yeniden çizer (webapp/js/module-app.js:213-231).
Sekme simgeleri bölümün icon adına göre TAB_ICONS içinde aranır; geri dönüş bir karedir (webapp/js/module-app.js:21-66).
Çalışan uygulamalar ve arka planda canlı tutma¶
Ana ekran, her birinin kendi görünüm yığını olan çalışan uygulamaların bir listesini tutar (webapp/js/home.js:2223-2234):
openApp(a)geçerli uygulamanın ekranını kenara alır ve ya hedef uygulamanın ekranını geri getirir ya da kökünü çizer (webapp/js/home.js:2469-2500).stashActive()canlı DOM düğümlerini, kaydırma konumlarını, başlığı ve geri etiketini bir belge parçasına taşır ve görülen veri sürümünü kaydeder (webapp/js/home.js:2252-2291).unstashInto(entry)düğümleri geri koyar. Arada veri değiştiyse veya ekran uzaktayken bir boyama düştüyse ekran yeniden çizilir; açık bir form varsa çizilmez (webapp/js/home.js:2293-2326). Bkz. veri tazeleme ve değişiklik sinyalleri.- Bir dil değişiminden sonra saklanan ekranlar bayat işaretlenir ve dönüşte yeniden çizilir (
webapp/js/home.js:2334-2342,webapp/js/home.js:2501-2511). closeRunningApp(id)saklanan ekranı ve modülün form taslaklarını atar (webapp/js/home.js:2533-2557).- Çıkışta
closeAllApps()uygulama içerik alanını boşaltır; böylece eski oturumun hiçbir ekranı kalmaz (webapp/js/home.js:2559-2578).
pushView(title, render) etkin yığına bir alt ekran ekler ve popView() onu kaldırır; kökü kapatmak uygulama çalışmaya devam ederken ana ekrana döner (webapp/js/home.js:2400-2413). Özellik kodu bunları home.js'nin yüklemede doldurduğu nav.js üzerinden çağırır; böylece motorlar kabuğu hiç içe aktarmaz (webapp/js/nav.js:5-30, webapp/js/home.js:2848-2849).
Bir bölümü başka bir yerden açma¶
Bir bileşen dokunuşu, bir kayıt bağlantısı ve bir arama sonucu bir uygulama bölümünü aynı yoldan açar. openModuleSection(module, section, params) modülü kapsayan uygulamayı açar, kök ekranına döner ve sekme çubuğu oluştuktan sonra cluster:module-tab yayar (webapp/js/home.js:221-240). Kabuğu içe aktaramayan genel kod bunun yerine cluster:open-section yayar (webapp/js/home.js:512-519, webapp/js/gen-form.js:2371-2385).
Uygulama kapsamı¶
syncAppScope() kurulu her uygulamanın modules değerini toplar ve setInstalledModules işlevine verir (webapp/js/home.js:792-800). app-scope.js sıralı listeyi saklar ve değiştiğinde cluster:apps-changed yayar (webapp/js/app-scope.js:7-18). Asistan bu listeyi her iletiyle gönderir ve modülü kaldırılan açık bir görev kartını iptal eder (webapp/js/assistant.js:201-230). Bkz. asistan ve sohbet ekranları.
Neden böyle kurulu¶
- Projenin yazılı mühendislik kuralları bir modülün bir uygulama olduğunu ve sayfalarının o uygulamanın sekmeleri olduğunu, CRM klasörünün ise onaylı bir istisna olduğunu belirtir.
webapp/js/home.js:2252-2258içindeki yorum, arka planda canlı tutmanın yazılan girdiyi, alt sayfaları ve kaydırma konumlarını hiçbir şeyi serileştirmeden koruduğunu, bu yüzden durumun oturumla birlikte öldüğünü belirtir.webapp/js/module-app.js:183-187içindeki yorum, sekme başına bölmelerin önceki bir sekmeden gecikmiş bir yanıtın yeni sekmenin üzerine yazmasını engellediğini belirtir.
Kurallar ve sınırlar¶
crmmodülünün bir modül uygulaması yoktur. Varlıkları ikilistuygulamasında (customer-parts,rfqs) vepartiesuygulamasınınmodulesdeğerinde görünür (src/cluster_erp/modules/app_store/catalog.json:1002-1150).- Bir menü uygulaması (
menu: true, Uygulamalar kitaplığı) çalışan uygulamalara hiç eklenmez ve açık uygulamalar ekranında hiç görünmez (webapp/js/home.js:2448-2465). - Tarayıcı testleri:
web-client/_e2e_switcher.mjs,web-client/_e2e_keepalive_paint.mjs,web-client/_e2e_lang_background.mjs,web-client/_e2e_mobile_app.mjs.
Diğer parçalarla etkileşim¶
- Özel bölümler kapılı paketlerdeki bileşenlerle çizilir; bkz. kapılı uygulama paketleri.
- Mağaza, uygulama yöneticisi ve lisans ekranları
webapp/js/home.js:3588-4319içindekirenderStore,renderAppManagerverenderLicenseile kurulur. Sunucu tarafları uygulama mağazası modülü sayfasındadır.
Sınırlar ve açık noktalar¶
view_type: "detail"değeriSidebarSectionMetatarafından kabul edilir amamakeModuleScreeniçinde onun için bir dal yoktur (webapp/js/module-app.js:109-137). Hiçbir modül onu bildirmez.- Bir yenileme çalışan uygulamaları yalnız kök ekranlarında geri getirir (
webapp/js/home.js:2579-2598).
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| module app | makeModuleScreen |
Kenar çubuğu bölümleri sekme olan bir uygulama olarak sunulan arka uç modülü. | modül uygulaması | webapp/js/module-app.js:69 |
| app manifest | registry.apps[].manifest |
İstemciye bir uygulamayı nasıl göstereceğini ve açacağını söyleyen katalog girdisi. | uygulama manifestosu | webapp/js/home.js:447 |
| keep-alive | stashActive |
Ayrılınan bir uygulamanın canlı ekranını kapatılana kadar bellekte tutmak. | arka planda canlı tutma | webapp/js/home.js:2259 |
| app scope | setInstalledModules |
Kurulu uygulamaların kapsadığı modüllerin listesi. | uygulama kapsamı | webapp/js/app-scope.js:9 |
İlgili sayfalar¶
- Web uygulaması platformu
- Metadata çizimi
- Ana ekran, dock ve başlatıcı
- Kapılı uygulama paketleri
- Modül yaşam döngüsü
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.