>> Jadi, dengan itu yang berkata,
hanya jenis mudah yang pengenalan kepada prototaip
dan model objek JavaScript.
Kami tidak akan beralih gear sedikit bercakap
JavaScript mengenai lanjut mengenai pelayan dan Perpustakaan rak buku
dan sambungan Perpustakaan Knex itu.
Jadi, anda boleh sebenarnya hanya -
jika anda mencari Bookshelf.js ia harus cukup mudah
untuk mencari, harus menjadi yang pertama hasil, dan rak buku
seperti Daud yang tersebut hanya memberikan banyak struktur
sekitar objek JavaScript dan bekerja dengan mereka relationally
dalam pangkalan data hubungan.
Jadi, banyak ciri-ciri yang sama yang sebenarnya banyak yang diilhamkan
oleh PRO Laravel sebagai serta Backbone.js,
yang merupakan akhir hadapan MVC perpustakaan yang membolehkan anda
untuk menstrukturkan kod anda, sama dengan apa yang saya telah menunjukkan
dengan contoh-contoh yang prototaip di mana anda boleh -
bukan hanya sewenang-wenangnya membuang kelas
pada pandangan anda di sana sini.
Ia memberikan model dan koleksi model-model
yang sepatutnya bertindak sebagai semacam satu titik kebenaran
tentang data untuk permohonan anda.
Dan kemudian anda mendengar, seperti orang-orang model perubahan, kamu berkata, OK,
menyebabkan semula template ini di sini dan satu ini di sini
dan bukan hanya menambah kelas di sini, menambah kelas di sana dan memilih jenis
pada selectors dan membuat Spiderweb kod jQuery.
Ia memberikan lebih daripada berasaskan kelas struktur kepada keping individu,
tetapi satu komponen penting dalam perpustakaan yang model
yang mempunyai struktur yang sama apa model rak buku lakukan.
Jadi, jika anda sudah biasa dengan Rak buku anda cukup juga
agak biasa dengan Backbone.js model,
dan saya akan mengesyorkan mengambil lihat ini.
Jadi, ciri-ciri utama
ia memberikan anda hanya keupayaan untuk menetapkan data pada objek
untuk memanggil mengambil, yang mengembalikan satu rekod individu
dari pangkalan data, mewujudkan hubungan sebagai sama
dengan apa yang anda diuruskan dalam dalam Laravel
di mana anda boleh berkata pesakit menetapkan kaedah rekod
dan berkata ini telah memenangi rekod
di mana objek rekod itu adalah rekod kesihatan nama jadual.
Mari kita lihat.
Mempunyai banyak - ia tergolong dalam -
hanya barangan yang anda agak sama -
agak biasa dengan sudah, tetapi dalam JavaScript.
Dan di bawah hood, untuk rak buku,
ia menggunakan pembina pertanyaan dipanggil Knex.js.
Jadi, itulah Knex, knexjs.org.
Ia merujuk kepada mainan jika sesiapa yang pernah bermain dengan ini.
Tetapi ia membolehkan anda - dalam keadaan yang sama, untuk jQuery,
anda hanya jenis mewujudkan rantaian kaedah yang berbeza
bahawa anda menyeru anda berturut-turut pangkalan data supaya anda boleh -
anda bermula dengan mengatakan Knex dan nama meja.
Jadi, sebagai contoh, pengguna Knex, memilih lajur yang akan anda,
di mana, dan mempunyai mana berbeza Syarat yang dan anda boleh mempunyai
DAN di mana, ATAU di mana, di mana antara, di mana tidak,
anda sekarang, ke bawah baris.
Anda boleh menentukan yang berbeza menyertai antara jadual pangkalan data anda
yang rak buku menggunakan dalaman untuk menubuhkan jenis sihir
sekitar hasOne itu, hasMany, belongsTo, belongsToMany.
Dan sebagainya kombinasi
kedua-dua membiarkan anda melakukan cukup banyak apa yang anda akan digunakan
dalam rangka kerja seperti Laravel dari segi
fungsi bekerja dengan pangkalan data.
Jadi, mari kita pergi ke hadapan dan mengambil lihat contoh yang mudah
untuk aplikasi Express yang menggunakan model
dan koleksi Rak buku jazz [fonetik].
Jadi, saya tetapkan hanya permohonan yang mudah di sini.
Saya dilucutkan beberapa barangan yang yang Memulakan nyata
dan bergerak itu ke dalam init satu direktori yang saya buat.
Salah satu perkara yang baik tentang bekerja dengan Express seperti yang disangkakan
untuk Laravel adalah bahawa ada benar-benar tidak banyak dikuatkuasakan
pada anda conventionalized.
Jadi, anda boleh mencipta direktori -
ia tidak benar-benar memberi anda banyak keseluruhan untuk bekerja di luar daripada.
Anda mempunyai hanya beberapa jenis tetapan asas dan kemudian -
tetapi ia tidak peduli di mana anda meletakkan mereka.
Anda tidak perlu mempunyai direktori pengawal itu.
Anda tidak perlu untuk mempunyai model direktori, direktori config.
Anda boleh mewujudkan jenis mereka sebagai keperluan projek anda
dan menetapkan perkara sehingga cara yang masuk akal yang paling kepada anda.
Jadi, daripada mempunyai semua boilerplate ekspres ini
dalam app.js utama yang saya katakan setaraf aplikasi memerlukan init / ekspres.
Jadi dengan INIT,
folder Memulakan Saya hanya ekspres di sini,
dan ini memerlukan Express, panggilan fungsi persediaan, memanggil -
set up enjin pandangan, JSON penghurai, semua itu.
Jadi sekarang, mari kita terus ke bawah.
Jadi saya memerlukan mesyuarat kursus pengajar
dan keperluan model.
Jadi ini adalah dalam folder yang Saya hanya membuat keputusan untuk model nama.
Ia tidak perlu menjadi yang cara bagaimanapun ia masuk akal,
tetapi model hanya cukup biasa jadi saya akan mengesyorkan ia.
Tetapi - Jadi mari kita pergi untuk kursus.
Saya rasa saya menggunakan - yeah, dan contoh-contoh
turun di sini semuanya berasaskan sekitar model kursus.
Jadi mari kita hanya mengambil yang melihat itu.
Jadi, sekarang, hanya satu baris pertama model ini,
Saya sudah memerlukan sesuatu yang lain.
Jadi, jika anda akan notis dalam nod anda perlu memerlukan
atau anda akan berakhir yang memerlukan sejumlah
fail yang berbeza yang terletak
di tempat-tempat yang berbeza dalam permohonan anda.
Dan laluan relatif ke mana saja anda berada
dalam permohonan semasa anda,
melainkan jika ia adalah peringkat tertinggi sudah ditakrifkan sebagai dalam anda memasangnya
dengan MPM seperti rak buku atau Knex atau Express atau sesuatu,
mereka tidak relatif.
Ya? Zum masuk lagi?
OK. OK. Jadi, anda akan akhirnya memerlukan sejumlah
fail hanya berbeza dalam anda kod, yang baik dan buruk.
Dengan cara yang baik anda tahu di mana perkara-perkara yang dan ia bukan jenis
sihir tentang apa yang berlaku di bawah hood,
yang benar-benar boleh mengelirukan
apabila anda mempunyai sangat Jawa berat -
atau rangka kerja yang sangat berat seperti Laravel, yang jenis kata,
kita akan menjaga ini supaya anda tidak mempunyai
untuk menghendaki semua tetapi anda perlu
tahu bagaimana semua kerja-kerja untuk menggunakannya.
Di mana seperti dalam kes ini, ia sangat mudah untuk
mana segala-galanya, mereka hanya hujung
sehingga menjadi menaip lebih sedikit.
Sama seperti di sebelah saya suka untuk digunakan, ada plugin
jika anda menggunakan teks buta
di mana anda boleh memasang nod modul pembantu dan anda boleh memulakan
menaip seperti Pengajar dan ia mewujudkan path relatif
kepada di mana anda berada dengan fail kod, jenis berguna.
Jadi, model kursus adalah memerlukan pangkalan di sini
dan kemudian asas pelatih memerlukan init / rak buku
dan kemudian rak buku, ia memerlukan rak buku peringkat tertinggi
dan kemudian kepada asal dengan Knex contoh dimulakan,
yang menetapkan nama pelanggan
dan sambungan tetapan untuk pangkalan data.
Jadi saya hanya menggunakan mudah yang contoh sekuel Pro yang -
MySQL, saya mengakses dengan Sekuel Pro dan ia mempunyai hanya jenis
pangkalan data yang sama persediaan kerana kami terpaksa
dalam permohonan sampel pertama dengan katalog kursus.
Jadi, saya menetapkan sambungan saya tetapan di sini,
dan ini adalah semua didokumentasikan pada halaman projek Knex.js
tentang bagaimana untuk persediaan sambungan ini.
Jadi, saya kini mempunyai model asas saya.
Dan seperti yang saya disebut dengan perubahan prototaip,
supaya boleh sebenarnya menjadi jenis banyak -
menambah banyak boilerplate kepada kod anda supaya konvensyen
yang telah disesuaikan oleh Backbone.js
dan kini adalah Bookshelf.js untuk menambahnya melanjutkan kaedah
sebagai harta statik pada objek JavaScript anda,
yang memberikan ia satu bentuk hampir berasaskan kelas warisan alam semula jadi
di mana jika anda memanggil melanjutkan anda boleh menubuhkan apa-apa
daripada kaedah prototaip yang anda mahu di sini
dan kemudian anda boleh - apa-apa kaedah statik tambahan
yang mungkin anda mahu, anda hanya boleh menetapkan mereka sendiri
di sini jadi saya boleh melanjutkan dengan - jadi jika sebagai contoh,
pelbagai model diperlukan memaparkan nama dan ini mendapat nama.
Jadi, di sini, yang saya katakan itu nama paparan untuk model
secara lalai adalah apa sahaja namanya harta selainnya pulangan
tiada nama.
Dan sekarang pada setiap model itu adalah -
yang memanjangkan model asas ini, saya kini mempunyai kaedah nama paparan
pada prototaip rantaian di suatu tempat.
Dan jika saya mahu tindih Saya hanya boleh menetapkan ia - menetapkan apa -
getname akan berada di sini.
Dan ia membolehkan anda untuk meniru warisan klasik
dalam JavaScript, yang boleh bagus untuk perkara-perkara tertentu
yang meminjamkan diri mereka menjadi kelas berasaskan seperti model objek.
Jadi mari kita melompat kembali ke dalam kod aplikasi.
Jadi saya mendapat laluan untuk hanya slash, hanya untuk indeks saya
dan kemudian mengurangkan kursus.
Dan kedua-dua ini menyeru kaedah renderCourses.
Jadi sekali lagi, fungsi kelas pertama dan boleh diwariskan
sebagai hujah untuk kaedah.
Jadi, dalam app.get ini, Saya menyeru -
Saya lulus renderCourses sebagai hujah.
Dan berikanlah - atau fungsi boleh setup seperti var -
seperti yang saya lakukan sebelum ini var renderCourses sama fungsi
atau mereka boleh hanya renderCourses fungsi.
Ia tidak terlalu banyak perbezaan.
Anda sebenarnya boleh mempunyai apa yang dipanggil fungsi nama
ungkapan, yang renderCourses var setaraf
renderCourses fungsi.
Dan, sebab untuk mahu mempunyai menamakan fungsi terutamanya
dalam nod ialah ia memberikan anda lebih bersih -
Penjejak tindanan lebih senang dibaca.
Jadi jika anda mempunyai sejumlah
fungsi tanpa nama ia akan berkata -
apabila anda mempunyai kesilapan dalam karena kod anda -
anda tidak akan tahu yang berfungsi ia memanggil anda akan perlu melihat
di nombor kod dan nombor baris yang
dan ia kadang-kadang lebih mudah hanya untuk visual menghurai
apabila anda sebenarnya mempunyai nama-nama
bagi fungsi diri mereka di sebelah pelayan.
Jadi ini renderCourses, mari kita memanggil aplikasi nod -
jadi saya mendengar pada Teras 3000 [fonetik].
Dan jadi semua ini adalah melakukan hak di sini hanya mendapat semua
kursus dari pangkalan data.
Saya tidak mengehadkan jadi ia melakukan sebilangan besar
baris ia kembali.
Dan untuk melakukan ini,
kepada model kursus di sana adalah sebuah hartanah statik
dipanggil koleksi.
Dan jadi saya hanya memanggilnya - Saya berkata membuat koleksi baru
untuk kursus ini, dan kemudian mengambil ia,
dan kemudian kembali kursus-kursus koleksi di sini dalam janji.
Jadi secara dalaman, Daud dalam - yang Separuh lepas diajar sedikit
tentang janji-janji dan janji-janji adalah digunakan sangat besar dalam kedua-dua Knex
dan rak buku kerana ia meminjamkan yang -
ia memberi anda keupayaan untuk mempunyai sekumpulan
panggilan tak segerak yang berbeza dan jenis menyertai kemudian bersama-sama
atau mengambil sesuatu, dan kemudian
dengan panggilan yang lain panggilan pangkalan data tak segerak
dan mengembalikan nilai itu dan kemudian melompat ke depan kemudian
dan seterusnya kemudian dan kemudian mempunyai menangkap pada akhir sangat untuk menyusun
daripada meniru tangkapan tak segerak cuba tingkah laku dengan kod tak segerak,
kerana anda lihat sekarang
tetapi ia lebih keras sekali anda mula menanganinya.
Kod Asynchronous hanya di mana-mana
di sebelah pelayan JavaScript dan benar-benar ke tahap yang lebih besar
daripada anda digunakan untuk jika anda telah melakukan JavaScript
di sebelah pelanggan.
Jadi yang benar-benar, benar-benar membantu anda di luar sana.
Tetapi hanya untuk menunjukkan kepada anda Penyataan penyahpepijat
yang saya bercakap tentang di alat pemeriksa nod,
Saya akan pergi ke hadapan dan membuang garis penyahpepijat sini
dalam fungsi renderCourses yang dan melihat di mana yang membawa saya
apabila saya - jadi nod inspektor boleh dipasang
dengan melakukan NPM Pasang dengan bendera G,
yang bermaksud Global Inspektor nod.
Dan ia akan mengambil untuk NMP dan install di peringkat global
untuk aplikasi anda jadi anda hanya boleh memanggil ia
daripada baris arahan.
Saya telah dipasang ia jadi saya akan teruskan dan -
sebenarnya ia mungkin mempunyai menunggu ia hanya akan mengambil,
mengambil dua saat.
Dan apa inspektor nod sekali lagi membolehkan anda
lakukan adalah mempunyai berkepala ini versi konsol penyahpepijat
yang anda digunakan untuk apabila bekerja di sebelah pelanggan dan dapat
berhenti, hanya tambah dinyatakan mata dalam kod anda.
Menghentikan pelaksanaan dan mengambil melihat apa yang berlaku,
yang perlu benar-benar sangat berguna jika ciri yang
seperti yang terdapat
apabila debugging anda Kod PHP saya pasti.
Jadi mari kita hanya mengambil yang melihat itu.
Jadi saya hanya boleh menghubungi nod inspektor
dan ia akan berkata lawati URL ini port 5858 untuk memulakan debugging,
itu hanya lalai bagaimana ia bermula.
Jadi, saya kini mempunyai - ada apa-apa berlaku di sini
kerana saya perlu untuk bermula.
Jadi nod kebuntuan [fonetik] yang bendera debug dan kemudian app.js.
Jadi ia berkata penyahpepijat mendengar pada port 5858,
Mendengar pelayan Express pada 3000.
Oleh itu, kita baik untuk pergi.
Biar saya menyegarkan ini.
Dan kini saya boleh melihat app.js kod yang saya hanya melihat
tetapi di sini di konsol.
Jadi sekarang, jika saya cuba untuk menjalankan ini, anda boleh melihatnya, ia berhenti.
Ia hanya menunggu kerana yang keseluruhan pelaksanaan kod kini
berhenti di penyahpepijat ini garis yang saya telah dimasukkan ke dalam sana.
Dan sekarang saya boleh pelayan -
[Didengar Catatan]
Oh, yeah. Apakah kata kunci jalan pintas untuk zoom skrin?
Oh ada.
Dah dapat. OK.
[Jeda]
Oh, ia tidak mencari [Fonetik] itu.
Jadi, kursus adalah benar-benar besar
kerana saya tidak melakukan menghadkan fasal atau apa-apa,
ia hanya semasa mengambil yang keseluruhan pangkalan data kursus
yang banyak daripada mereka.
Dan sebagainya - yang merupakan objek
yang benar-benar mungkin kemalangan inspektor contoh nota.
It's - OK.
Biar saya buat had dan maka kita boleh melihat
apabila ia tidak semasa mengambil beratus-ratus kursus.
Jadi, membunuh pelayan dan inspektor
dan saya akan melakukan yang tentu had koleksi pertanyaan 20.
Jadi, dalam rak buku, tidak seperti di Laravel
di mana anda hanya boleh menghubungi menghadkan secara langsung atau memanggil mana-mana
ini kaedah SQL yang anda gunakan
untuk langsung pada contoh PRO itu.
Bila-bila masa yang anda menggunakan hanya Kaedah SQL yang disediakan
dalam Knex, anda perlu panggilan pertanyaan untuk menyusun
daripada memanfaatkan rantaian pertanyaan.
Dan ini boleh dituntut dengan sama ada fungsi,
jadi anda boleh mengatakan, fungsi had ini 10 atau anda memanggilnya
dengan menentukan yang kaedah yang anda ingin untuk memanggil
pada contoh Knex yang dan kemudian yang nilai.
Jadi, kita akan lakukan menghadkan 20 dan kemudian ditetapkan.
Kami benar-benar tidak perlu penyahpepijat sini
kerana kita boleh hanya set titik putus
dan yang menjadikan ia lebih mudah.
Baiklah.
Jadi, mari kita set takat putus yang di sini dan cuba memuatkannya.
Line salah.
Di sini.
[Jeda]
OK. Jadi ia berhenti lagi.
Jadi sekarang, kursus adalah membantah dengan panjang 20
dan kita boleh melihat semua berbeza model bahawa itu diambil
daripada pangkalan data yang betul di sini jadi saya mendapat objek model
yang mempunyai, di dalam atribut harta
pada Objek adalah semua perkara yang bahawa ia terdapat dalam pangkalan data.
Apa-apa kejadian yang mempunyai telah didaftarkan
jadi anda boleh mendaftar acara yang berbeza,
sebagai contoh apabila model dipadamkan
atau apabila ia sedang diambil,
anda boleh menetapkan yang berbeza hartanah atau mengubah suai sesuatu.
Ada banyak mata kail yang berbeza dan ini adalah semua didokumentasikan
dalam Bookshelf.js dokumentasi yang membolehkan anda
untuk melakukan apa-apa jenis bahawa anda benar-benar mahu melakukan
dengan model anda dan koleksi.
Anda boleh - mereka bermakna untuk menjadi benar-benar disesuaikan
dan benar-benar mudah untuk anda untuk menyesuaikan diri mereka
untuk keperluan anda permohonan.
Tetapi hanya melihat melalui di sini,
Saya dapat melihat apa yang berbeza kursus boleh didapati.
Dan dalam kes ini, saya sebenarnya tidak mengambil
dengan mana-mana data lain selain daripada hanya kursus-kursus yang diri mereka sendiri.
Tetapi dalam keadaan yang sama untuk yang fasih PRO anda boleh menetapkan
sehingga hubungan, jadi kursus milik pengajar banyak.
Jadi, jika saya pergi ke hadapan dan berhenti permohonan itu,
melompat ke ini mengambil panggilan, anda boleh menentukan pilihan yang berbeza
yang anda hendak lulus bersama dengannya.
Dan salah seorang daripada mereka adalah keupayaan untuk memuatkan kod yang berkaitan
dengan menentukan withRelated pengajar maka kursus.
Jadi mari kita kembali dan segar ini di sini dan berhenti lagi.
Jadi sekarang, kursus-kursus membantah, Bilangan yang sama model,
tetapi kini setiap model mempunyai hash hubungan
yang mempunyai tenaga pengajar bahawa itu berkaitan dengan.
Kursus ini sebagai contoh
yang tentu 082 mempunyai dua model pengajar yang berkaitan.
Dan anda sudah boleh melihat bagaimana lebih mudah ini adalah untuk menyusun
daripada visual bekerja dengan daripada apabila anda berurusan dengan barangan
bahawa anda semacam menukar kod dan kemudian cuba sekali lagi dalam PHP.
Hakikat bahawa anda boleh hanya menghentikan pelaksanaan sepenuhnya
dan menilai apa yang di sini dan - dalam konsol, yang -
zum keluar, kursus, anda tahu,
apa yang skop tempatan pembolehubah boleh didapati
dan ini pada masa ini adalah global objek kerana anda melihatnya,
melainkan jika anda memanggil dengan konteks tertentu, ia tidak akan
mempunyai sesuatu yang berkaitan di sini.
Dan kemudian, - biarlah saya menunjukkan beberapa lagi contoh-contoh
melaksanakan janji-janji.
Jadi, daripada melakukan ini pengajar withRelated sini saya
akan pergi ke hadapan dan bergerak ini mengambil dan kemudian kursus,
Saya akan kembali pengajar courses.load.
Dan kemudian - maka anda memanggil kemudian.
[Jeda]
Demikian maka pada ketika ini, kursus boleh dimuatkan
dengan tenaga pengajar, yang tindakan tak segerak.
Tetapi kerana kita pulang dari janji, nilai seterusnya
untuk kemudian adalah apa sahaja ini pulangan panggilan tak segerak
yang pada beban kes ini adalah satu kaedah di rak buku
yang benar-benar kembali koleksi itu sendiri.
Jadi ia memuatkan pengajar di sana
dan kemudian anda boleh menentukan - jika ia hanya satu hartanah,
anda boleh menentukan ini sebagai rentetan, jika tidak,
yang boleh anda lakukan pengajar dan keperluan
sebagai kaedah - maaf, sebagai array.
Dan kemudian jika anda ingin mendapatkan benar-benar mewah dan mengekang apa-apa
ini diberikan ditambah dengan faktor, anda boleh menentukan ia sebagai hash
dengan tenaga pengajar dan kemudian apa anda suka untuk menghadkan pertanyaan pada.
Jadi, saya ingin memuatkan semua pengajar pada kursus-kursus di mana -
jadi QB untuk pertanyaan pembina di mana status aktif.
Dan anda boleh mendapatkan benar-benar mewah dengan mana-mana
satu pertanyaan yang berkaitan anda ingin membina.
Tetapi, hanya untuk sekarang, kita akan berpegang kepada hanya pengajar
dan kami kembali nilai yang
demikian maka seterusnya maka harus mempunyai semua kursus yang dimuatkan
dengan betul.
Dan jika ada kesilapan di mana-mana langkah dalam rantaian itu,
ia akan melompat ke tangkapan.
Jadi mari kita pergi ke hadapan dan berjalan itu.
Jadi setiap masa - tidak seperti di PHP, satu downside adalah
"Kerana nod" adalah berjalan yang panjang proses, anda sebenarnya perlu
untuk menghentikan proses nod kerana anda mengemaskini kod anda,
kerana versi bahawa itu berjalan dalam masa jangka masa adalah,
versi yang kod yang dimuatkan
apabila mula tidak apa yang anda mempunyai jenis
daripada dikemaskini kod anda dengan sejak itu.
OK. Kami akan menetapkan takat putus yang di sini, di sini dan menyegarkan.
[Jeda]
Oh, saya sebenarnya tidak muat semula halaman ini sama ada
jadi ia adalah proses yang lama.
Jadi anda menyegarkan kedua-dua ini dan inspektor nod.
Jadi sekarang kita lihat kursus.
Jika kita hanya mengambil sampel salah satu model,
kita dapat melihat bahawa hubungan objek kosong, tetapi kini -
dan sebab yang anda perlu untuk menetapkan titik putus, baik,
Saya menyebut bahawa anda boleh melompat ke dalam surih tindanan
dan melihat anda tahu, di mana ia akan dalam app.
Jadi sekarang saya boleh melihat apa yang berlaku dalam kaedah beban,
yang saya telah ditakrifkan mengenai koleksi.
Ia semacam "beban Bersemangat hubungan ke satu sudah ".
Dan anda boleh melangkah melalui dan melihat baris demi baris
di mana barangan ini adalah berterusan yang besar.
Jika anda mempunyai sesuatu itu dipecahkan dalam kod anda,
ia membuang beberapa kesilapan dan anda seperti, saya benar-benar mahu
untuk melihat di mana ini akan.
Tetapi sebaik sahaja anda menghadapi sesuatu yang tak segerak, yang -
ia pergi ke depan semak gelung acara
dan anda akan kehilangan anda - anda kehilangan tempat anda
dalam inspektor nod.
Jadi anda perlu untuk mengatakan, "OK, sekali saya kehilangan ini,
ia perlu berhenti sekarang di garisan ini lagi. "
'Sebab jika saya terus memukul turun, turun tindanan,
ia akan akhirnya hanya pergi telah saya tidak menetapkan ini
beratur 22 talian rehat biru.
Jadi sekarang, jika saya melihat di padang-padang di sini,
ia perlu diberikan kepada berhubung pengajar
dan kemudian mempunyai pengajar melampirkannya.
Jadi, anda boleh melihat bahawa saya kembali janji dari janji yang pertama
dan kemudian anda boleh terus melakukan yang turun baris.
Jadi janji yang berbeza, berjanji perpustakaan,
Saya menggunakan satu dipanggil Bluebird yang benar-benar berguna.
Ia menambah banyak bagus ini untuk menukar tak segerak -
berubah panggil balik kod asas ke dalam barangan
yang berfungsi dengan baik dengan janji-janji.
Tetapi - maaf [didengar] apa Saya akan mengatakan ia di sana.
Mari kita lihat satu walaupun di -
jadi mari kita mengatakan bahawa terdapat masalah semasa mengambil sesuatu.
Jadi saya mempunyai laluan lain ini untuk mencari dipanggil kursus ID.
Jadi mari kita buat kursus 2.
Bolehkah saya mendapatkan - kursus JSON.
Dan ini tidak [didengar].
[Jeda]
Saya bau sesuatu yang tidak kena di sini.
Tidak pada 3000, saya pada tab inspektor Chrome.
OK. Jadi mari kita pergi ke kursus - kursus JSON 1.
Dan ini kembali hanya dalam JSON format, kursus ini dimuatkan
dengan beberapa tenaga pengajar.
Tetapi contoh yang saya mahu untuk memberi di sini ialah,
Yang saya lakukan JSON kursus ID.
Dan dalam parameter mengambil, Saya menyatakan memerlukan benar,
yang merupakan pilihan itulah didokumenkan dalam rak buku
di mana ia mengatakan bahawa, "Jika, Saya cuba mencari kursus ini
dan ia tidak ada, kemudian membuang ralat. "
Dan yang perlu ditangkap oleh menangkap blok di sini.
Jadi mari kita pergi ke hadapan dan melompat kembali ke dalam inspektor nod dan cuba
dan memecahkan ini dan lihat apa yang kita dapat.
Jadi mari kita set berehat di sini pada kursus JSON.
Baiklah.
Saya akan pergi ke kursus dan JSON Saya hanya akan dimasukkan ke dalam beberapa -
[Jeda]
Ia boleh menjadi sedikit rumit kadang-kadang apabila anda cuba
untuk menguruskan mana satu telah dimuat semula
dan yang mempunyai tidak - mari kita lihat.
Jadi ia memanggil ralat respon kosong.
[Jeda]
Mari kita membuang penyahpepijat di sini.
Kerana bagaimana nod sebenarnya mengoptimumkan
untuk runtime JavaScript menjadi begitu pantas pada pelayan,
kadang-kadang penyahpepijat nod mempunyai beberapa kesilapan apabila anda cuba
dan menetapkan titik putus dinamik dan anda benar-benar melakukannya perlu
menggunakan penyahpepijat dan tidak garis demi garis.
Jadi mari kita lihat jika ini mendapat kita apa yang kita mahu.
Jadi saya tetapkan, app.get id kursus json,
dan saya tetapkan penyahpepijat saya di sana
dalam satu kenyataan tangkapan di bahagian bawah.
Kutip memerlukan benar, ia perlu - semua betul, ada kita pergi, patah.
Jadi, sekarang saya dapat melihat bahawa ia berhenti
di ini tangkapan blok akhir kerana withRelated -
atau kerana memerlukan benar dinyatakan dan ada tentu tiada
dengan ID ini besar bilangan melalui pengecualian
yang kini Emessage.
Dan setiap kesilapan dalam JavaScript mempunyai harta timbunan
yang datang bersama-sama dengannya.
Jadi ia sering berguna hingga ke satu contohnya,
memujuk log keluar e.stack.
Dan saya benar-benar boleh melihat apabila saya menghadapi ralat.
Jadi saya mendapat ralat kosong tindak balas, itu mesej
yang telah dihantar melalui rak buku.
Tetapi sekarang, saya boleh melihat di, panggilan timbunan dan melihat
bahawa dalam rak buku dialek SQL model 83,
respon kosong ini kesilapan telah dibuang.
Dan ini adalah di mana saya disebutkan, ia dot tanpa nama
kerana ia tanpa nama fungsi.
Jika itu fungsi nama anda akan mempunyai idea yang lebih baik
yang berfungsi sebenarnya melalui tanpa perlu pergi
kepada kod model.js itu.
Walaupun ia bertujuan untuk menjadi adil, agak boleh dibaca,
jadi saya boleh lihat dalam talian itu.
Apa yang mereka memberitahu saya adalah talian 83.
Jadi, jika options.require dan sambutan yang tidak wujud,
sekarang melemparkan baru ralat respon kosong.
Jadi anda boleh melihat cantik mudah bagaimana yang berfungsi.
Dan dalaman dalam rak buku,
ada Hanya keseluruhannya sekumpulan penggunaan janji.
Jadi, anda boleh menentukan Promise.method
dengan perpustakaan Bluebird yang menyimpan konteks yang betul
daripada selama ini kembali janji.
Dan jadi saya - Saya mengikat nilai ini sama
untuk apa yang saya disebut sebelum ini, tetapi menggunakan janji-janji
dan kemudian saya boleh - baru.
Ia boleh tak segerak atau tidak jika saya mahu.
Dan kemudian saya melakukan perkara-perkara lain yang boleh
atau mungkin tidak tak segerak dan maka macam melompat ke bawah ini.
Jadi Promise.all adalah pembantu yang banyak perpustakaan popular mempunyai
di mana anda boleh mempunyai pelbagai berpotensi boleh
atau mungkin tidak janji-janji.
Dan sekali semua mereka adalah selesai, anda kembali bahawa
dan kemudian ia melompat ke baris seterusnya
dan anda boleh lihat bagaimana ia benar-benar flattens keluar piramid
yang anda dapat, yang neraka panggilan balik sebagai yang diketahui
jika anda lakukan segala-galanya dengan panggilan balas baris demi baris.
Terdapat pelbagai cara untuk mendapatkan sekitar itu tetapi janji-janji adalah satu
satu cara terbaik pada pendapat saya
untuk benar-benar menyimpan kod anda bersih dan mudah untuk dibaca.
Jadi yang hanya pendek pengenalan kepada JavaScript
dan ke rak buku dan Knex amnya.
Dan, jika ada apa-apa soalan, Saya tahu ia adalah satu tan bahan
untuk jenis cuba dan penutup terutamanya sejak bahasa,
tidak seperti kebanyakan yang anda biasa dengan jadi saya hanya mahu
untuk menjadikannya supaya sekurang-kurangnya jika anda menghadapi masalah
dengan kod anda, anda jenis boleh melompat dalam -
itulah yang saya suka lakukan, adalah semacam melompat ke dalam perpustakaan
bahawa saya menggunakan dan melihat bagaimana perkara-perkara yang berstruktur.
Ada satu yang telah saya nyatakan sebelum ini dikenali sebagai Backbone.js
dan sebenarnya ia [Didengar] di sebelah pelanggan
untuk membantu memberi gambaran model struktur pengawal
kepada kod anda.
Tetapi ia sebenarnya mempunyai beranotasi sumber dokumentasi
yang membolehkan anda untuk melihat jenis.
Ia benar-benar baik didokumenkan, apa yang berlaku,
bagaimana ia Menambahkan fungsi Ajax
atau fungsi acara atau model dan koleksi jenis
menjelaskan apa yang berlaku dalam proses.
Dan jika anda memahami asas-asas JavaScript
seperti warisan prototypal dan bagaimana fungsi digunakan
kerana kedua-dua objek dan nilai-nilai dan kelas dan segala-galanya.
Ia menjadikannya lebih mudah untuk memahami apa yang berlaku
pada berpotensi dalam perpustakaan yang anda menggunakan
dan kod penyahpepijat dan dapat untuk tidak terhantuk kepala anda
dinding kerana anda tidak memahami bagaimana
keping yang berbeza bekerja, demikian.