Dalam episod ini kita akan melihat pendekatan pemalam untuk NGV, rangka kerja Pemapar 3D Moden kami. Ini adalah sebahagian daripada siri NGV.
Satu pendekatan adalah untuk menyasarkan pengguna akhir bukan pembangun dengan penyelesaian "klik sahaja untuk mendayakan". Kelemahannya ialah anda perlu menulis dan menyelenggara banyak kod tambahan, dokumentasi dan itu menjadikannya memakan masa dan tegar.
Akibatnya, kami menyasarkan pembangun dan memberi tumpuan untuk memudahkan mereka. Sebenarnya terdapat banyak teknologi di sekitar pemalam dan kod boleh guna semula yang boleh kami manfaatkan: git, modul ES, docker...
Satu lagi penyederhanaan besar ialah tidak mempunyai pemalam luaran: untuk memanjangkan pengguna perisian harus menghentikan projek dan membinanya.
Pemalam adalah baik untuk penyelesaian yang boleh diselenggara. Dengan pemalam anda terpaksa berfikir tentang apa yang teras dan apa yang tidak; apa yang perlu dipanjangkan atau diganti. Anda perlu memperkenalkan abstraksi, antara muka dan itu menjadikan kod lebih terpencil dan lebih mudah difahami. Selain itu, anda menulis dokumentasi dan arahan untuk membantu orang di luar pembangun teras memahami API anda: yang menjadikannya lebih mudah untuk semua orang.
Contohnya, kami telah mencipta pemalam ngv-plugin-cesium-widget untuk mengasingkan kod Cesium peringkat rendah daripada kod aplikasi. Kami merancang untuk mempunyai berpuluh-puluh aplikasi: mempunyai kod biasa dalam pemalam membolehkan kami berkongsi kod tetapi juga konsep antara aplikasi. Pemalam adalah generik dan kami mendedahkan antara muka untuk mengkonfigurasinya: pemalam boleh mengendalikan sebarang konfigurasi, ia adalah kalis masa hadapan.
@customElement('ngv-plugin-cesium-widget') export class NgvPluginCesiumWidget extends LitElement { public viewer: CesiumWidget; @property({type: Object}) cesiumContext: IngvCesiumContext; @property({type: Object}) modelCallback: (name: string, model: Model) => void;
Dengan sistem pemalam, pengguna mempunyai kuasa untuk melampaui konfigurasi. Penyelesaiannya boleh disesuaikan dan juga dilanjutkan.
Sebagai contoh, semua aplikasi geospatial mempunyai bar carian, tetapi tidak ada yang sama: hujung belakang berbeza, format berbeza, ciri berbeza.
Pemalam carian boleh disertakan dengan pembekal yang dipratentukan (cth: OpenstreetMap Nominatim) dan membolehkan anda memberikan milik anda (cth: Pelias, Photon, ...).
Pembekal ini bebas daripada aplikasi itu dan boleh dikongsi atau disumbangkan ke hulu dengan mudah.
Selain itu, pemalam carian boleh digantikan sepenuhnya dengan pelaksanaan lain, selagi ia mematuhi antara muka asas.
for (const pc of descr.config.providers) { const initialize = providerInitializers[pc.name]; if (!initialize) { console.error("could not find provider", pc.name, "skipping it"); continue; } const provider = initialize(pc.config); this.providers.push(provider); } this.autocomplete = new Autocomplete(this.autocompleteRef.value, { search: this.search.bind(this), onSubmit: this.onSubmit.bind(this), renderResult: this.renderResult.bind(this), getResultValue: this.getResultValue.bind(this), });
Sangat hampir dengan idea "plugin" ialah konsep "modul". Sesungguhnya, modul Ecmascript ialah cara teknikal kami "mengemas" dan menyediakan pemalam kami, secara dalaman, dalam rangka kerja NGV.
Dengan cara yang sama, komponen web, ialah standard teknikal yang membolehkan kami mendedahkan pemalam UI kepada DOM.
Kami juga boleh melihat git sebagai alat asas yang membolehkan strategi pemalam kami, dengan memperkasakan pengguna untuk bercabang, menyesuaikan diri, menyumbang.
Penyelesaian kami kepada masalah pemalam ialah seni bina yang bergantung pada standard, memanfaatkan pengetahuan pembangun dan ekosistem, ia membolehkan kod lebih mudah difahami, terpencil dan lebih boleh diselenggara.
Adakah anda telah mereka bentuk sistem pemalam? Atau adakah anda mula memikirkannya? Beritahu saya maklum balas anda dalam ulasan.
Atas ialah kandungan terperinci NGV: pemalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!