Pemikiran dan amalan pemisahan bahagian hadapan dan belakang berdasarkan NodeJS (3) Rangka kerja pemodelan konfigurasi antara muka ringan_node.js

WBOY
Lepaskan: 2016-05-16 16:35:21
asal
1132 orang telah melayarinya

Kata Pengantar

Model pembangunan menggunakan Node untuk memisahkan bahagian hadapan dan bahagian belakang membawa beberapa kelebihan dalam prestasi dan proses pembangunan, tetapi ia juga menghadapi banyak cabaran. Di bawah seni bina teknikal dan perniagaan kompleks Taobao, bahagian belakang mesti bergantung pada Java untuk membina infrastruktur dan menyediakan antara muka perniagaan yang berkaitan untuk digunakan oleh bahagian hadapan. Salah satu tugas Node yang paling penting dalam keseluruhan persekitaran ialah memproksi antara muka perniagaan ini untuk memudahkan bahagian hadapan (bahagian Nod dan bahagian pelayar) untuk menyepadukan data untuk pemaparan halaman. Bagaimana untuk melakukan kerja yang baik dalam kerja agensi supaya selepas pemisahan pembangunan front-end dan back-end, proses itu masih boleh disambungkan dengan lancar, adalah isu yang perlu kita pertimbangkan. Artikel ini akan membincangkan isu ini dan mencadangkan penyelesaian.

Memandangkan antara muka yang disediakan oleh bahagian belakang mungkin pelbagai, mungkin terdapat juga pelbagai cara untuk pembangun mengakses antara muka ini semasa menulis kod sisi Nod. Jika kami tidak melaksanakan pemprosesan seni bina bersatu dari segi kaedah capaian antara muka dan penggunaan, masalah berikut akan timbul:

1. Setiap pembangun menggunakan gaya pengekodan mereka sendiri untuk menulis kod akses antara muka, menyebabkan kekeliruan dalam direktori projek dan gaya pengekodan, menjadikan penyelenggaraan agak sukar.
2. Setiap pembangun menulis kaedah data olok-oloknya sendiri Selepas pembangunan, dia perlu mengubah suai kod secara manual untuk mengalih keluar olok-olok.
3. Setiap pembangun boleh mengekalkan beberapa fail konfigurasi untuk menukar antara persekitaran antara muka yang berbeza (harian, pra-keluaran, dalam talian).
4. Kaedah panggilan antara muka data tidak boleh digunakan semula dengan mudah oleh pelbagai model perniagaan.
5. Perihalan antara muka data bertaburan di setiap sudut kod, dan mungkin tidak konsisten dengan dokumen antara muka yang dipersetujui oleh kakitangan bahagian belakang.
6. Selepas keseluruhan projek dibangunkan secara berasingan, kos penyahpepijatan bersama atau regresi ujian antara muka masih sangat tinggi, dan setiap pembekal antara muka dan pengguna perlu terlibat.
Jadi kami berharap untuk mempunyai rangka kerja sedemikian yang menggunakan mekanisme yang disediakan oleh rangka kerja untuk menerangkan semua antara muka luaran yang bergantung kepada projek, mengurusnya secara seragam, menyediakan pemodelan antara muka yang fleksibel dan kaedah panggilan, dan menyediakan persekitaran dalam talian yang mudah dan Persekitaran pengeluaran kaedah pensuisan membolehkan penyepaduan lancar pembangunan bahagian hadapan dan belakang. ModelProxy ialah rangka kerja ringan yang memenuhi keperluan sedemikian Ia adalah salah satu komponen teras Rangka Kerja Midway dan juga boleh digunakan secara bebas. Menggunakan ModelProxy boleh membawa kelebihan berikut:

1. Pembangun yang berbeza menulis kod akses antara muka dengan cara yang bersatu, dengan maksud yang jelas dan mengurangkan kesukaran penyelenggaraan.
2. Mod tunggal kilang diguna pakai di dalam rangka kerja untuk merealisasikan konfigurasi antara muka sekali dan menggunakan semula beberapa kali. Dan pembangun boleh menyesuaikan dan memasang model perniagaan mereka sendiri (suntikan kebergantungan) sesuka hati.
3. Sangat mudah untuk bertukar antara persekitaran dalam talian, harian dan pra-keluaran.
4. Enjin olok-olok terbina dalam seperti olok-olok sungai dan olok-olok menjadikannya sangat mudah untuk menyediakan data olok-olok.
5. Gunakan fail konfigurasi antara muka untuk mengurus huraian kebergantungan antara muka secara seragam untuk mengelakkan daripada bertaburan di antara pelbagai kod.
6. Menyokong Model kongsi sebelah pelayar, yang boleh digunakan oleh penyemak imbas untuk pemaparan data bahagian hadapan. Keseluruhan proses proksi adalah telus kepada penyemak imbas.
7. Fail konfigurasi antara muka itu sendiri ialah dokumen penerangan berstruktur, dan koleksi alat sungai boleh digunakan untuk menjana dokumen secara automatik. Ia juga boleh digunakan untuk ujian antara muka automatik yang berkaitan, menjadikan keseluruhan proses pembangunan membentuk gelung tertutup.

Rajah prinsip kerja ModelProxy dan gambar rajah proses pembangunan yang berkaitan

Dalam rajah di atas, pembangun perlu terlebih dahulu menulis perihalan semua antara muka belakang yang bergantung dalam projek ke dalam fail konfigurasi antara muka.json dalam format json yang ditentukan. Jika perlu, anda perlu menulis fail peraturan untuk setiap antara muka, yang merupakan bahagian peraturan antara muka dalam rajah. Fail peraturan ini digunakan untuk mengejek data semasa fasa pembangunan atau menggunakan set alat River untuk mengesahkan antara muka semasa fasa penyahpepijatan bersama. Kandungan fail peraturan bergantung pada enjin olok-olok yang digunakan (seperti mockjs, river-mock, dsb.). Selepas konfigurasi selesai, anda boleh mencipta model perniagaan anda sendiri dalam kod mengikut keperluan anda sendiri.

Berikut ialah contoh mudah:

【Contoh 1】

Langkah pertama ialah mencipta antara muka fail konfigurasi antara muka.json dalam direktori projek dan menambah definisi json antara muka carian utama di dalamnya

Salin kod Kod adalah seperti berikut:

{
"title": "takrif pengumpulan antara muka data projek pad Taobao",
"versi": "1.0.0",
"enjin": "mockjs",
"rulebase": "./interfaceRules/",
"status": "dalam talian",
"antara muka": [ {
"name": "Antara muka carian utama",
"id": "Search.getItems",
“url”: {
"dalam talian": "http://s.m.taobao.com/client/search.do"
}
} ]
}

Langkah 2: Buat dan gunakan model dalam kod

Salin kod Kod adalah seperti berikut:

//Perkenalkan modul
var ModelProxy = memerlukan( 'modelproxy' );

// Permulaan global memperkenalkan fail konfigurasi antara muka (nota: kerja pemulaan berlaku sekali sahaja)
ModelProxy.init( './interface.json' );

//Buat model Sila rujuk artikel berikut untuk lebih banyak mod penciptaan
var searchModel = ModelProxy baharu( {
SearchItems: 'Search.getItems' // Nama kaedah tersuai: ID Antara Muka ditakrifkan dalam fail konfigurasi
} );

// Menggunakan model, ambil perhatian: parameter yang diperlukan untuk memanggil kaedah adalah parameter yang diperlukan oleh antara muka sebenar.
searchModel.searchItems( { q: 'iphone6' } )
// !Perhatikan bahawa kaedah yang dilakukan mesti dipanggil untuk menentukan fungsi panggil balik untuk mendapatkan data yang diperoleh dengan memanggil searchItems secara tidak segerak di atas!
.done( function( data ) {
console.log( data );
} )
.error( function( err ) {
console.log(err);
} );

Kekayaan ciri ModelProxy ialah ia menyokong pelbagai bentuk profil untuk mencipta model perniagaan yang diperlukan:

Buat menggunakan ID antara muka> Objek yang dihasilkan akan mengambil perkataan selepas '.' yang terakhir sebagai nama kaedah

Salin kod Kod adalah seperti berikut:

ModelProxy.create( 'Search.getItem' );

Gunakan objek JSON nilai kunci> Nama kaedah tersuai: ID Antara Muka

Salin kod Kod adalah seperti berikut:

ModelProxy.create( {
GetName: 'Session.getUserName',
GetMyCarts: 'Cart.getCarts'
} );

Gunakan borang tatasusunan> Ambil perkataan selepas yang terakhir sebagai nama kaedah
Nama panggilan kaedah yang dijana dalam contoh berikut ialah: Cart_getItem, getItem, suggest, getName

Salin kod Kod adalah seperti berikut:

ModelProxy.create( [ 'Cart.getItem', 'Search.getItem', 'Search.suggest', 'Session.User.getName' ] );

Borang awalan> Semua ID antara muka yang memenuhi awalan akan dimasukkan ke dalam objek, dan separuh kedua akan digunakan sebagai nama kaedah

Salin kod Kod adalah seperti berikut:

ModelProxy.create( 'Cari.*' );

Pada masa yang sama, menggunakan Model ini, anda boleh melaksanakan permintaan gabungan atau permintaan pergantungan dengan mudah dan melakukan pemaparan templat yang berkaitan

[Contoh 2] Permintaan gabungan

Salin kod Kod adalah seperti berikut:

var model = ModelProxy baharu( 'Cari.*' );

// Permintaan gabungan (kecuali selesai, kaedah model yang dipanggil di bawah semuanya ditentukan semasa mengkonfigurasi id antara muka)
model.cadangkan( { q: 'perempuan' } )
.list( { kata kunci: 'iphone6' } )
.getNav( { kunci: 'Pakaian Bergaya' } )
.selesai( fungsi( data1, data2, data3 ) {
                 // Susunan parameter adalah konsisten dengan susunan panggilan kaedah
console.log( data1, data2, data3 );
} );

[Contoh 3] Permintaan pergantungan

Salin kod Kod adalah seperti berikut:

var model = ModelProxy baharu( {
GetUser: 'Session.getUser',
GetMyOrderList: 'Order.getOrder'
} );
// Dapatkan ID pengguna dahulu, dan kemudian dapatkan senarai pesanan berdasarkan nombor ID
model.getUser( { sid: 'fdkaldjfgsakls0322yf8' } )
.done( function( data ) {
      var uid = data.uid;
                    // Permintaan data kedua bergantung pada nombor ID yang diperoleh buat kali pertama
This.getMyOrderList( { id: uid } )
            .selesai( fungsi(data) {
console.log(data);
               } );
} );

Selain itu, ModelProxy boleh digunakan bukan sahaja di bahagian Node, tetapi juga di bahagian penyemak imbas. Hanya perkenalkan modelproxy-client.js yang disediakan oleh pakej rasmi ke dalam halaman.
[Contoh 4] Menggunakan ModelProxy

pada bahagian penyemak imbas

Salin kod Kod adalah seperti berikut:



Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan