Kapabilitas Umum
Object Context menyediakan berbagai kapabilitas built-in NocoBase. Namun beberapa kapabilitas hanya tersedia di Plugin, beberapa hanya tersedia di Component, dan beberapa tersedia di kedua sisi tetapi dengan cara penulisan yang berbeda. Mari kita lihat ringkasan terlebih dahulu:
Selanjutnya, mari kita bahas satu per satu berdasarkan namespace.
API Request (ctx.api)
Memanggil API backend melalui ctx.api.request(), dengan penggunaan yang konsisten dengan Axios.
Menggunakan di Plugin
Menggunakan di Component
Berkombinasi dengan ahooks useRequest
Di Component, Anda dapat menggunakan useRequest dari ahooks untuk menyederhanakan manajemen state request:
Request Interceptor
Melalui ctx.api.axios Anda dapat menambahkan request/response interceptor, biasanya diatur di load() Plugin:
Custom Header NocoBase
NocoBase Server mendukung custom header berikut, biasanya disuntikkan secara otomatis oleh interceptor, tidak perlu diatur secara manual:
Internasionalisasi (ctx.t / ctx.i18n)
Plugin NocoBase mengelola file multibahasa melalui direktori src/locale/, dan menggunakan terjemahan dalam code melalui ctx.t().
File Multibahasa
Buat file JSON berdasarkan bahasa di src/locale/ plugin:
Pertama kali menambahkan file bahasa perlu restart aplikasi agar berlaku.
ctx.t()
Mendapatkan teks terjemahan di Component melalui ctx.t():
this.t()
Di Plugin, lebih nyaman menggunakan this.t() — ini akan menyuntikkan nama paket plugin sebagai namespace secara otomatis, tidak perlu meneruskan ns secara manual:
ctx.i18n
ctx.i18n adalah instance i18next tingkat rendah, biasanya menggunakan ctx.t() saja sudah cukup. Namun jika Anda perlu mengganti bahasa secara dinamis, mendengarkan perubahan bahasa, dll., Anda dapat menggunakan ctx.i18n:
tExpr()
tExpr() digunakan untuk menghasilkan string ekspresi terjemahan tertunda, biasanya digunakan di FlowModel.define() — karena define dieksekusi pada saat module loading, ketika instance i18n belum tersedia:
Untuk penggunaan internasionalisasi yang lebih lengkap (cara penulisan file terjemahan, hook useT, tExpr, dll.) lihat i18n Internasionalisasi. Untuk daftar lengkap kode bahasa yang didukung NocoBase lihat Daftar Bahasa.
Logging (ctx.logger)
Output log terstruktur melalui ctx.logger, berbasis pino.
Menggunakan di Plugin
Menggunakan di Component
Level log dari tertinggi ke terendah: fatal > error > warn > info > debug > trace. Hanya log dengan level lebih besar atau sama dengan level yang dikonfigurasi saat ini yang akan dioutput.
Routing (ctx.router / ctx.route / ctx.location)
Kapabilitas terkait routing dibagi menjadi tiga bagian: registrasi (hanya Plugin), navigasi dan pengambilan informasi (hanya Component).
Registrasi Route (this.router / this.pluginSettingsManager)
Daftarkan route halaman melalui this.router.add() di load() Plugin, dan daftarkan halaman pengaturan plugin melalui this.pluginSettingsManager:
Untuk penggunaan detail lihat Router. Untuk contoh halaman pengaturan lengkap lihat Membuat Halaman Pengaturan Plugin.
this.router adalah RouterManager, digunakan untuk mendaftarkan route. this.pluginSettingsManager adalah PluginSettingsManager, digunakan untuk mendaftarkan halaman pengaturan. Keduanya berbeda dengan ctx.router di Component (React Router, digunakan untuk navigasi halaman).
Navigasi Halaman (ctx.router)
Di Component, lakukan navigasi halaman melalui ctx.router.navigate():
Informasi Route (ctx.route)
Di Component, dapatkan informasi route saat ini melalui ctx.route:
Tipe lengkap ctx.route:
URL Saat Ini (ctx.location)
ctx.location menyediakan informasi detail URL saat ini, mirip dengan window.location di browser:
Walaupun ctx.route dan ctx.location juga dapat diakses melalui this.context di Plugin, URL saat plugin dimuat tidak pasti, sehingga nilai yang didapat tidak bermakna. Disarankan menggunakannya di Component.
Manajemen View (ctx.viewer / ctx.view)
ctx.viewer menyediakan kapabilitas imperatif untuk membuka dialog, drawer, dll. Tersedia di Plugin maupun Component.
Menggunakan di Plugin
Menggunakan di Component
Method Umum
Operasi di Dalam View (ctx.view)
Di dalam Component dialog/drawer, Anda dapat menggunakan ctx.view untuk mengoperasikan view saat ini (misalnya menutupnya):
FlowEngine (this.flowEngine)
this.flowEngine adalah instance FlowEngine, hanya tersedia di Plugin. Biasanya digunakan untuk mendaftarkan FlowModel:
FlowModel adalah inti dari sistem konfigurasi visual NocoBase — jika Component Anda perlu muncul di menu "Tambah Block / Field / Action", maka perlu di-wrap dengan FlowModel. Untuk penggunaan detail lihat FlowEngine.
Kapabilitas Lainnya
Kapabilitas berikut mungkin digunakan dalam skenario yang lebih lanjut, di sini hanya didaftar secara singkat:
Untuk penggunaan detail kapabilitas ini, lihat Dokumentasi FlowEngine Lengkap.
Tautan Terkait
- Ikhtisar Context — Persamaan dan perbedaan dua entry point Context
- Plugin — Properti shortcut Plugin
- Pengembangan Component — Penggunaan useFlowContext di Component
- Router — Registrasi dan navigasi route
- Dokumentasi FlowEngine Lengkap — Referensi FlowEngine lengkap
- i18n Internasionalisasi — Cara penulisan file terjemahan, tExpr, useT
- Daftar Bahasa — Kode bahasa yang didukung NocoBase
- Membuat Halaman Pengaturan Plugin — Contoh penggunaan ctx.api lengkap
- Ikhtisar FlowEngine — Penggunaan dasar FlowModel

