Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development
Code

Bekerja Dengan Data dalam Sails.js

by
Difficulty:IntermediateLength:LongLanguages:

Malay (Melayu) translation by Fodal Fadul (you can also view the original English article)

Sails.js adalah rangka kerja Node.js yang akan datang, dengan fokus pada kebebasan dan kegagalan pintar. Dalam artikel ini, kita akan melihat beberapa ciri data Sails menyediakan out-of-the-box, dengan mudah membuat aplikasi yang kompleks.


Mengapa Sails Berbeda Daripada Rangka Kerja Lain

Sebab untuk memilih Sails adalah yang terbaik diletakkan oleh pencipta Sails, Mike McNeil, 'Sails dibuat daripada keperluan'. Banyak kerangka yang anda lihat di sekeliling, dibina hampir untuk sisi akademik perkara, rangka kerja ini biasanya memupuk amalan terbaik, dan mewujudkan platform bagi pemaju untuk membuat sesuatu lebih cepat, atau lebih baik.

Sails di sisi lain, dicipta untuk pengeluaran, ia tidak cuba untuk memberi anda sintaks atau platform baru, ia adalah asas yang kukuh, bertujuan untuk mewujudkan 'kerja pelanggan' dengan kelajuan. Sebaliknya mungkin halus, tetapi terdapat beberapa perbezaan yang berbeza.

Untuk menggambarkan apa yang saya maksudkan, mari lihat Meteor. Meteor mungkin merupakan platform utama JS pada hari ini, tetapi ia merupakan contoh utama rangka kerja, demi rangka kerja. Sekarang ini bukan perkara yang buruk, saya seorang penyokong besar Meteor, apa yang saya maksudkan, mereka menetapkan untuk membina kerangka kerja dan mereka melakukan tugas yang baik di atasnya, Mike sebaliknya membuat kerja klien lebih cepat . Sails hanyalah satu cara untuk mencapai tujuan.

Di Meteor, hampir semua perkara telah dialihkan dan anda menggunakan JavaScript serta API Meteor untuk mengodkan semuanya. Sedangkan Sails tidak dimaksudkan untuk menjadi platform baru, sehingga tidak ada yang tersembunyi.

Ia terletak di atas Socket.io dan kerangka Express popular, dan anda mempunyai akses kepada mereka secara keseluruhan, secara asli. Adakah anda mula melihat perbezaannya?

Selain itu, sejak Sails diarahkan untuk pengeluaran pertama, ia dibina dengan pelbagai pilihan untuk skala dan keselamatan.

Terdapat banyak untuk dibincangkan, tetapi dalam artikel ini saya ingin memberi tumpuan kepada bagaimana Sails menangani data, dan bagaimana anda boleh memanfaatkan beberapa ciri Sails 'yang lebih maju untuk melakukan beberapa tindakan yang sangat keren.


Pemasangan

Sekiranya anda tidak mempunyai Sails lagi, anda boleh melakukannya melalui NPM dengan menjalankan:


Socket.io & Express

Sekarang mari kita bercakap sedikit tentang Socket.io dan Express sebelum kita masuk ke Sails. Terdapat satu siri premium yang baik di Express oleh Andrew Burgess jika anda berminat, tetapi saya akan meneruskan asas-asas yang berkaitan kedua-dua perpustakaan ini di sini:

Socket.io

Socket.io adalah pub / sub perpustakaan, yang dijalankan di kedua-dua pelayan dan klien, dan membolehkan mereka untuk bercakap melalui soket web.

Contoh ringkas boleh kelihatan seperti ini:

Kod ini bermula dengan menghendaki perpustakaan socket.io, mendengar sambungan, dan kemudian apabila soket lain menyambungkan, ia akan menghantar mesej, dialamatkan kepada acara welcomeMessage, dan akhirnya melewati beberapa JSON.

Seterusnya, pada pelanggan anda akan menulis sesuatu seperti:

Di sini kita menyambung ke pelayan dan mendengar acara welcomeMessage yang baru kita buat. Memandangkan anda dapat melihatnya adalah menerbitkan / melanggan pelayan yang agak sederhana, yang merupakan bidirectional (klien boleh memancarkan mesej untuk pelayan juga).

Sekarang mari kita lihat Express:

Express

Bentuk laluan Express yang paling sederhana dapat seperti:

Ini mendefinisikan laluan mudah, supaya apabila pengguna pergi ke alamat laman web anda dan cuba mengakses halaman / pengguna, mereka akan dibentangkan dengan mesej 'Hello from '/ users'!'.

Jadi Express adalah kerangka untuk mengendalikan permintaan HTTP dan Socket.io adalah perpustakaan komunikasi websocket. Apa yang telah dilakukan oleh pasukan Sails, peta semua laluan Ekspres ke Socket.io secara dalaman. Apa maksudnya, anda boleh memanggil mana-mana laluan HTTP melalui soket web.

Sekarang itulah keren! Tetapi, masih ada satu teka-teki yang hilang dan itu adalah Blueprints Pelayar.

Sails membolehkan anda menjana model sama seperti dalam rangka kerja lain, perbezaannya, Sails juga boleh menghasilkan RESTfull API siap produksi untuk pergi bersama mereka. Ini bermakna jika anda menjana model bernama 'pengguna', anda boleh segera menjalankan pertanyaan RESTfull pada sumber '/ pengguna' tanpa sebarang pengekodan yang diperlukan.

Jika anda baru untuk API RESTful, ia hanya satu cara untuk mengakses data, ke mana operasi CRUD dipetakan ke pelbagai kaedah HTTP.

Jadi permintaan GET untuk '/ pengguna' akan mendapat semua pengguna, permintaan POST akan mencipta pengguna baru, dsb.

Jadi apa maksudnya semua ini?

Ini bermakna kita mempunyai API RESTfull penuh, dipetakan ke Socket.io melalui Sails, tanpa menulis satu baris kod!

Tetapi mengapa soket lebih baik untuk mendapatkan data kemudian permintaan Ajax? Nah, selain menjadi protokol yang lebih lega, soket tetap terbuka untuk komunikasi dua hala, dan Sails telah mengambil kesempatan ini. Bukan sahaja Sails akan menghantar data kepada anda, namun ia akan melanggan anda secara automatik pada pangkalan data pada pangkalan data itu, dan apabila ada sesuatu yang ditambahkan, dialihkan, atau dikemas kini, klien anda akan menerima pemberitahuan melalui soket web, yang membolehkan anda mengetahui tentangnya.

Inilah sebab mengapa Sails begitu hebat!


Sails + Backbone

Topik seterusnya yang saya ingin tutup adalah penyepaduan Backbone, kerana jika anda tidak menggunakan kerangka kerja JavaScript, anda melakukannya dengan salah.

Dengan ini, Sails and Backbone adalah pasangan yang sempurna. Backbone, seperti Sails, sangat tidak mengganggu, semua ciri-cirinya tersedia, mampu ditindih, dan pilihan.

Jika anda telah menggunakan Backbone sebelum itu, anda mungkin tahu ia menghubungkan secara asli dengan API REST, jadi keluar dari kotak, anda boleh menyegerakkan data di bahagian hadapan dengan aplikasi Sails anda.

Tetapi cukup bercakap untuk sekarang, mari kita lihat semua ini dalam tindakan dengan membuat aplikasi sembang asas. Untuk memulakan, buka tetingkap terminal dan taipkan:

Ini akan membuat aplikasi baru dan menghasilkan beberapa fail untuk kami. Anda boleh melihat dari atas, terdapat dua sumber yang berbeza yang boleh anda hasilkan; model dan pengawal. Jika anda sudah biasa dengan corak reka bentuk MVC, maka anda harus tahu apa ini, tapi ringkasnya, model data dan pengawal anda memegang kod logik anda. Jadi kita akan memerlukan dua koleksi, satu untuk memegang pengguna, dan satu untuk mesej.

Seterusnya, bagi pengawal, kita memerlukan seseorang untuk mengendalikan laluan halaman, saya panggil ia 'utama', maka kita mempunyai pengawal kedua bernama 'mesej'. Kini anda mungkin tertanya-tanya mengapa saya mencipta pengawal dengan nama yang sama seperti model mesej kami? Nah, jika anda masih ingat, saya berkata Sails boleh membuat API REST untuk anda. Apa yang berlaku ialah, dengan mewujudkan pengawal kosong dengan nama yang sama sebagai model, Sails akan tahu untuk kembali dan membina API REST untuk sumber yang sama.

Oleh itu, kami telah mencipta pengawal bagi model mesej kami, tetapi tidak perlu membuat satu untuk model pengguna, jadi saya hanya meninggalkannya. Dan itu semua adalah untuk mewujudkan model dan pengawal.

Seterusnya, mari membuat persediaan beberapa laluan.

Routes

Laluan selalu menjadi tempat yang selamat untuk bermula, kerana anda biasanya mempunyai idea yang baik tentang halaman mana yang akan dibuat.

Oleh itu, buka fail routes.js yang berada dalam folder config, mungkin kelihatan sedikit pada mulanya, tetapi jika anda memadam semua komen dan menambah di laluan berikut, anda akan ditinggalkan dengan sesuatu seperti ini:

Kami mempunyai halaman rumah, halaman sembang, dan kemudian dua halaman untuk menangani kedua-dua halaman log masuk dan pendaftaran. Saya meletakkan mereka semua dalam pengawal yang sama, tetapi dalam Sails, anda boleh membuat seberapa banyak pengawal yang anda suka.

Models

Seterusnya, mari kita lihat model mesej yang dihasilkan yang boleh didapati di 'api> model> Messages.js'. Kami perlu menambah lajur yang diperlukan untuk model kami. Sekarang ini tidak semestinya perlu, tetapi ia akan mewujudkan fungsi penolong untuk kita yang boleh kita gunakan:

Untuk model mesej, kita mulakan dengan id pengguna bahawa mesej ini dimiliki, nama pengguna jadi kami tidak perlu membuat pertanyaan secara berasingan, dan kemudian mesej sebenar.

Sekarang mari kita isi model pengguna:

Dan itu sahaja, kita hanya mempunyai atribut nama pengguna dan kata laluan. Langkah seterusnya adalah untuk mewujudkan fungsi laluan kami di dalam MainController.

Controllers

Jadi buka MainController, yang boleh didapati di 'api> controllers > MainController.js'. Mari kita mulakan dengan mewujudkan fungsi untuk setiap laluan yang kami tentukan di atas:

Jika anda sudah biasa dengan Express, maka anda akan senang melihat bahawa fungsi ini adalah fungsi laluan Express standard. Mereka menerima dua pembolehubah, req untuk permintaan HTTP dan res untuk membuat respons.

Berikutan corak MVC, Sails menawarkan fungsi untuk memaparkan pandangan. Halaman rumah tidak memerlukan apa-apa yang istimewa, jadi mari kita hanya memberikan pandangan.

Sails bersandar lebih kepada konvensyen berbanding konfigurasi, jadi apabila anda memanggil res.view (); Sails akan mencari fail paparan (dengan pelanjutan .ejs secara lalai) menggunakan corak berikut: 'views> controllerName> methodName.ejs'. Oleh itu untuk panggilan ini, ia akan mencari 'views> main> index.ejs'. Ia juga diperhatikan, pandangan ini hanya mengandungi bahagian-bahagian tertentu halaman. Jika anda melihat 'views> layout.ejs', anda akan melihat panggilan di tengah untuk <% - body%>, ini adalah di mana fail paparan anda akan dimasukkan. Secara lalai ia menggunakan 'layout.ejs' ini fail, tetapi anda boleh menggunakan fail susun atur lain hanya dengan meluluskan nama susun atur ke fungsi res.view (), di bawah sifat yang bernama 'susun atur'. Sebagai contoh: 'res.view ({layout: 'other.ejs'});'.

Saya akan menggunakan fail susun atur lalai dengan pelarasan kecil, saya akan menambah jQuery, Backbone, dan Underscore. Jadi dalam 'layout.ejs' fail sebelum penutupan , tambahkan baris berikut:

Dengan itu, kami kini bersedia untuk membuat halaman rumah.

Laman Utama

Mari buat folder baru di dalam folder paparan yang dinamakan utama, dan dalam folder utama baru kami, kami akan membuat fail baru bernama 'index.ejs'.

Di dalam fail mari kita buat borang log masuk dan pendaftaran:

Cukup mudah, hanya yang penting.

Kawasan Masuk dan Pendaftaran

Seterusnya kita perlu menambah sedikit JS untuk mendapatkan ini berkomunikasi dengan pelayan. Sekarang ini tidak akan menjadi Sails khusus, kami hanya akan menghantar permintaan AJAX melalui jQuery ke pelayan Sails.

Kod ini boleh dimasukkan ke dalam halaman itu sendiri atau dimuatkan melalui fail JS yang berasingan. Demi kemudahan, saya hanya akan meletakkannya di bahagian bawah halaman yang sama:

Ini hanya standard JS dan jQuery, kami sedang mendengar acara klik pada butang log masuk, memastikan bidang nama pengguna dan kata laluan diisi, dan menyiarkan data ke laluan '/ login'. Jika login berjaya, kami mengalihkan pengguna ke halaman sembang, jika tidak, kami akan memaparkan ralat yang dikembalikan oleh pelayan.

Seterusnya, mari buat perkara yang sama untuk kawasan pendaftaran:

Kod ini hampir sama, begitu juga, bahawa anda mungkin hanya abstrak keseluruhan bahagian Ajax ke dalam fungsinya sendiri, tetapi untuk tutorial ini ia baik-baik saja.

Sekarang kita perlu kembali ke 'MainController' dan mengendalikan kedua-dua laluan ini, tetapi sebelum kita melakukan itu, saya mahu memasang modul Node. Kami akan memerlukan hash kata laluan, kerana kata laluan teks biasa bukanlah perkara yang baik, bukan untuk demonstrasi! Saya dapati modul yang bagus bernama 'password-hash' oleh David Wood yang akan berfungsi dengan baik.

Untuk memasangnya, pergi ke root aplikasi Sails anda, dari dalam terminal anda dan ketik: npm pasang kata laluan pasang.

Setelah memasang, mari buka MainController dan laksanakan dua laluan yang diperlukan. Mari bermula dengan pendaftaran:

Ini sedikit lebih terperinci, tetapi semua yang kita lakukan di sini adalah membaca nama pengguna dan kata laluan dari permintaan POST dan memastikan nama pengguna tidak diambil. Anda dapat melihat saya juga menggunakan kata laluan-pemacu yang kami pasang, sangat mudah digunakan, lulus kata laluan ke dalam kaedah menghasilkan dan ia akan menggunakannya menggunakan garam rawak.

Ia juga bernilai menyebutkan, bahawa di setiap lokasi yang mungkin di mana kita mungkin mengalami kesilapan atau masalah, kami menghantar semula kod ralat HTTP dan mengembalikan mesej melalui header khusus bernama 'ralat' yang, jika anda masih ingat, kami memaparkan dalam mesej amaran pada halaman indeks.

Satu lagi titik penting, adalah hakikat bahawa kita menggunakan fungsi 'sihir' bernama 'findByUsername', ini dimungkinkan kerana kita mempunyai lajur nama pengguna di dalam model Pengguna kami.

Akhirnya, di bahagian bawah anda dapat melihat jika semuanya berjalan lancar, kami menyimpan pengguna dalam pembolehubah sesi dan mengembalikannya dengan kod status lalai sebanyak 200, yang akan memberitahu jQuery bahawa permintaan AJAX berjaya.

Seterusnya, mari kita tulis fungsi log masuk:

Sekali lagi, ini sangat mirip dengan fungsi pendaftaran sebelumnya, kami sedang mencari pengguna dengan nama pengguna yang sama yang diposkan dari borang dan jika ia mendapati satu, kami periksa apakah kata laluan tersebut sepadan dengan menggunakan kaedah verifikasi hasher. Alasannya kita tidak boleh hanya kata laluan lagi dan lulus ke dalam fungsi mencari model adalah kerana hasher menggunakan garam secara rawak, jadi jika kita menghidupkan kata laluan sekali lagi ia akan sama dengan sesuatu yang lain.

Selebihnya kod yang sama; jika semuanya selesai, kami menyimpan pengguna dalam sesi dan mengembalikannya, jika tidak, kami akan menghantar kembali mesej ralat.

Sistem log masuk kini selesai dan akhirnya kami dapat beralih untuk membina ciri sembang.

Membina Ciri Sembang

Oleh kerana kami akan menggunakan Backbone untuk mendapatkan mesej, fungsi laluan sebenarnya akan sangat mudah. Berikut adalah fungsi sembang lengkap:

Kami mulakan dengan memeriksa jika pengguna log masuk atau tidak, jika ini menyemak, maka ia akan memuatkan pandangan, lulus nama pengguna yang berada dalam sesi, jika tidak, kami hanya mengarahkan semula ke halaman utama.

Sekarang mari kita buat pandangan baru bernama 'chat.ejs' di dalam folder utama. Buka ia dan ciptakan borang yang mudah untuk menghantar mesej baru dan bekas div untuk memaparkan semuanya.

Jadi untuk pandangan ini, kami hanya menggunakan beberapa HTML standard yang cukup. Satu-satunya perkara yang mungkin memerlukan penjelasan adalah kod <% = nama pengguna%>, gaya pengekodan ini tidak khusus untuk Sails, sebenarnya sintaks bagi EJS. Sintaks ini sangat mirip dengan tag pendek PHP. <% adalah bersamaan dengan <? di PHP dan <%= bersamaan dengan <?=. Coretan pertama EJS membolehkan anda mengintegrasikan kod JS standard pada halaman, sedangkan yang kedua mencetak kod dalam. Di sini kita hanya mencetak nama pengguna yang kami lulus dari pengawal.

Selebihnya ciri sembang kami akan menjadi semua JavaScript. Untuk bermula, mari kita lihat bagaimana anda akan menulis fungsi sembang menggunakan Backbone standard, dan kemudian kita akan melihat bagaimana untuk memanfaatkan soket web.

Di bahagian bawah halaman, tambah JS yang berikut:

Oleh kerana Sails secara automatik mewujudkan API yang Backbone memahami secara asli, tiada kod pelayan tambahan harus ditulis, ia tidak mendapat lebih mudah daripada itu. Inilah yang saya bicarakan ketika saya mengatakan bahawa Sails tidak dibuat sebagai 'rangka kerja'. Ia tidak cuba untuk membuat anda menggunakan sintaks sendiri, ia dibuat untuk menyelesaikan sesuatu dan seperti yang anda lihat, ia menyampaikan.

Untuk mengujinya, buka tetingkap terminal dan navigasi ke folder Apl Pelayar anda, kemudian taipkan 'gerakkan layar' untuk memulakannya. Secara lalai ia akan dilancarkan ke http: // localhost: 1337. Kini hanya mendaftar dan hantar beberapa mesej.

Untuk melihat mesej anda yang disiarkan anda boleh konsol.log pembolehubah mesej, atau melihatnya di dalam konsol pelayar. Kini perkara seterusnya yang perlu kita laksanakan ialah pandangan supaya kita dapat melihat mesej yang disiarkan dalam penyemak imbas.

Kami bermula dengan mendefinisikan pandangan, melampirkannya kepada div yang kami buat sebelum ini, kemudian kami menambah pengendali acara pada koleksi untuk membuat semula div setiap kali model baru ditambahkan ke koleksi.

Anda boleh melihat di bahagian atas, saya perlu mengubah tetapan Underscore lalai daripada menggunakan sintaks EJS di dalam templat, sebaliknya, gunakan sintaks Mustache. Ini kerana halaman itu sudah menjadi dokumen EJS, jadi ia akan diproses di pelayan dan tidak di Underscore.

Nota: Saya tidak datang dengan Regex untuk ini, kredit itu pergi ke dokumen Underscore itu sendiri.

Akhir sekali, di bahagian bawah anda dapat melihat kami membuat contoh baru dari paparan ini, meluluskannya sebagai pemboleh ubah pengumpulan.

Sekiranya semuanya berjalan lancar, anda kini akan melihat mesej anda dalam penyemak imbas, dan ia perlu dikemas kini apabila anda membuat jawatan baru.


Dasar Sails

Sekarang anda mungkin perhatikan bahawa kami tidak menetapkan userId atau nama pengguna apabila kami menyerahkan siaran, dan ini untuk tujuan keselamatan.

Anda tidak mahu meletakkan kawalan semacam ini pada pihak klien. Jika semua orang perlu lakukan ialah mengubah suai pemboleh ubah JavaScript untuk mengawal akaun pengguna lain, anda akan menghadapi masalah besar.

Jadi, bagaimana anda perlu mengendalikan ini? Nah, dengan dasar tentu saja.

Dasar pada dasarnya adalah middleware, yang berjalan sebelum permintaan web sebenar, di mana anda boleh menghentikan, mengubah suai, atau mengalihkan permintaan itu semula, seperti yang diperlukan.

Untuk aplikasi ini, mari buat dasar untuk mesej kami. Dasar digunakan untuk pengawal, jadi ia boleh dijalankan di halaman biasa, tetapi untuk tutorial ini, mari kita hanya berpegang pada satu untuk mesej Model kami.

Buat fail bernama 'MessagesPolicy.js' di dalam folder 'api> dasar', dan masukkan yang berikut:

Jadi, apa yang berlaku di sini? Anda dapat melihat fungsi ini menyerupai fungsi laluan normal, perbezaannya adalah parameter ketiga, yang akan memanggil middleware seterusnya dalam timbunan. Sekiranya anda baru dengan idea middleware, anda boleh memikirkannya seperti anak patung bersarang Rusia. Setiap lapisan mendapat permintaan, bersama-sama dengan pembolehubah tindak balas dan mereka boleh mengubah suai mereka sebagaimana yang mereka lihat patut. Sekiranya mereka melepasi semua keperluan, lapisan itu boleh menyebarkannya lagi, sehingga ia mencapai pusat, yang merupakan fungsi laluan.

Jadi di sini kita, semak jika pengguna log masuk, jika pengguna tidak, kami memaparkan ralat 403 dan permintaan itu berakhir di sini. Jika tidak, (iaitu pengguna log masuk) kami memanggil seterusnya (); untuk lulus. Di tengah-tengah kod di atas, di mana kita menyuntik beberapa pemboleh ubah pos. Kami memohon ini kepada semua panggilan pada pengawal 'mesej' (pada dasarnya API), jadi kami mendapat tindakan dan periksa apakah permintaan ini cuba untuk membuat mesej baru, dalam hal ini kami menambah bidang pasang untuk id pengguna dan nama pengguna.

Seterusnya, buka fail policies.js yang berada dalam folder config dan tambahkan dasar yang baru kami buat. Oleh itu, fail anda seharusnya kelihatan seperti ini:

Dengan ini, kami perlu memadamkan semua rekod lama, kerana mereka tidak mempunyai maklumat baru ini. Oleh itu, tutup pelayan Pelayar (ctrl-c) dan dalam jenis tetingkap terminal yang sama: rm -r .tmp untuk mengalih keluar pangkalan data sementara yang memberikan kita slate bersih.

Seterusnya, mari tambahkan nama pengguna ke jawatan sebenar, jadi dalam 'chat.ejs' tukar templat kepada:

Mulakan semula pelayan Pelayar (sekali lagi dengan menggunakan lift) dan mendaftar pengguna baru untuk mengujinya. Sekiranya semuanya berfungsi dengan betul, anda harus dapat menambah mesej dan melihat nama anda dalam siaran.

Pada ketika ini kami mempunyai persediaan yang cukup bagus, kami mengambil pos secara automatik menggunakan Backbone dan API, dan kami mempunyai beberapa keselamatan asas. Masalahnya ialah, ia tidak akan dikemas kini apabila orang lain menghantar mesej. Kini anda boleh menyelesaikannya dengan membuat selang JavaScript dan membuat tinjauan untuk kemas kini, tetapi kami boleh melakukannya dengan lebih baik.

Memanfaatkan Websockets

Saya sebutkan tadi bahawa Sails memanfaatkan kebolehduaian websockets 'untuk menyiarkan kemas kini pada data yang dilanggan. Menggunakan kemas kini ini, kami boleh mendengar penambahan baharu pada jadual mesej dan mengemas kini koleksi dengan sewajarnya.

Jadi dalam fail chat.ejs, mari kita buat koleksi baru; a SailsCollection:

Kini mungkin panjang, tetapi sebenarnya sangat mudah, mari kita lalui. Kami bermula dengan menambahkan dua sifat baru ke objek Pengumpulan, satu untuk memegang nama model Sails 'dan satu untuk memegang soket web. Seterusnya, kami mengubah suai fungsi penyegerakan, jika anda sudah biasa dengan Backbone, maka anda akan mengetahui bahawa ini adalah fungsi yang mengawal pelayan dengan sewaktu anda memanggil perkara-perkara seperti mengambil. Biasanya, ia memadamkan permintaan Ajax, tetapi kami akan menyesuaikannya untuk komunikasi soket.

Sekarang, kami tidak menggunakan kebanyakan fungsi yang menawarkan fungsi penyegerakan, terutamanya kerana kami tidak menambahkan keupayaan untuk pengguna mengemas kini atau memadam mesej, tetapi hanya untuk lengkap, saya akan memasukkannya dalam definisi fungsi.

Mari kita lihat bahagian pertama fungsi penyegerakan:

Kod ini mula-mula memeriksa jika mana-mana klausa 'mana' dihantar melalui, ini akan membolehkan anda melakukan perkara-perkara seperti: messages.fetch ({where: {id: 4}}); untuk hanya mengambil baris di mana id sama dengan empat.

Selepas itu, kami mempunyai beberapa kod yang memastikan bahawa 'sifat sailsCollection' telah ditetapkan, jika tidak, kami log mesej ralat. Selepas itu, kami membuat soket baru dan menyambung ke pelayan, mendengar sambungan dengan acara ('sambung').

Sebaik sahaja disambungkan, kami meminta indeks 'sailsCollection' yang ditentukan untuk menarik dalam senarai model semasa. Apabila ia menerima data, kami menggunakan fungsi set kutipan untuk mula-mula menetapkan model.

Baiklah, sekarang setakat ini, kita mempunyai setaraf dengan standard yang diambil. Blok kod berikutnya adalah di mana notis pemberitahuan berlaku:

Sekarang tindakan yang sedang dilakukan (sama ada kita mencipta, mengemaskini, atau memusnahkan mesej) boleh didapati di dalam msg sebenar, yang kemudiannya berada di dalam jenis. Untuk mendapatkan tindakan, kami memecah URI pada garis miring ('/') dan merebut segmen terakhir menggunakan fungsi pop. Kami kemudian cuba menyamai dengan tiga tindakan yang mungkin dibuat, dikemaskini, atau dimusnahkan.

Selebihnya adalah Backbone standard, kami menambah, mengedit, atau mengeluarkan model yang ditentukan. Dengan kelas baru kami hampir selesai, semua perkara yang perlu dilakukan adalah menukar MessageCollection semasa. Daripada memperluaskan koleksi Backbone, ia perlu memperluaskan koleksi baru kami, seperti:

Sebagai tambahan untuk memperluaskan koleksi baru kami, kami akan membuat perubahan lain supaya bukannya menetapkan sifat URL, kami kini menetapkan properti sailsCollection. Dan itu semua ada padanya. Buka aplikasi itu menjadi dua pelayar yang berbeza (cth. Chrome dan Safari) dan pendaftaran dua pengguna berasingan. Anda harus melihat bahawa mesej yang diposkan dari salah satu penyemak imbas segera dipaparkan pada yang lain, tidak ada pengundian, tidak ada masalah.

Chat Screenshot

Kesimpulan

Sails adalah nafas udara segar, dalam kerangka kerangka. Ia memeriksa ego di pintu, dan melakukan apa yang dapat membantu pemaju daripada jenama. Saya telah berbual dengan Devs Sails dan saya dapat memberitahu anda bahawa terdapat lebih banyak perkara dalam kerja-kerja, dan ia akan menjadi menarik untuk melihat di mana rangka kerja ini berjalan.

Oleh itu, kesimpulannya, anda telah belajar cara membuat persediaan, penggunaan, dan mengamankan data anda dari dalam Sails, serta bagaimana untuk mengawalnya dengan perpustakaan Backbone yang popular.

Seperti biasa, jika anda mempunyai sebarang komen, berasa bebas untuk meninggalkannya di bawah atau menyertai kami di saluran Nettuts + IRC ('nettuts' di freenode). Terima kasih kerana membaca.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.