Bagi pemaju depan, menguasai Node.js kekal sebagai kemahiran yang berharga. Walaupun Deno menawarkan alternatif untuk JavaScript sisi pelayan, ekosistem yang luas Node.js memastikan kaitannya yang berterusan. Artikel ini menganggap anda sudah biasa dengan JavaScript berasaskan pelayar dan ingin meneroka pembangunan sisi pelayan menggunakan Node.js. Bagi Node.js dan pemula NPM, "Bermula dengan Node" Jamie Corkhill adalah sumber yang hebat.
JavaScript Asynchronous: Perbezaan utama
Penyemak imbas JavaScript sering menggunakan kod tak segerak yang minimum (contohnya, fetch
panggilan API). Node.js, bagaimanapun, hampir selalu memerlukan pengaturcaraan tak segerak. Gelung acara tunggalnya, yang bergantung kepada panggilan balik tak segerak, adalah asas kepada reka bentuknya. Pendekatan pertama yang pertama adalah penting untuk kejayaan Node.js, tetapi ia memberikan keluk pembelajaran bagi mereka yang biasa dengan pengekodan segerak.
Membina contoh aplikasi kuiz
Mari kita bina aplikasi kuiz mudah untuk menggambarkan konsep Node.js. Versi yang lebih lengkap boleh didapati di GitHub. Aplikasi ini menggunakan pangkalan data SQLite dengan jadual untuk kuiz, soalan, dan jawapan. Setiap soalan mempunyai banyak jawapan, hanya satu daripadanya betul. SQLite tidak mempunyai jenis boolean; Kami akan menggunakan 0 untuk palsu dan 1 untuk benar.
Pertama, mulakan NPM dan pasang pakej sqlite3
:
npm init -y NPM Pasang SQLITE3
Tambah "type":"module"
ke package.json
anda untuk membolehkan modul ES6. Buat migrate.js
untuk menubuhkan jadual pangkalan data:
// Migrate.js Import SQLite3 dari "SQLite3"; biarkan db = sqlite3.database baru ("quiz.db"); db.serialize (fungsi () { // ... (penciptaan skema pangkalan data dan penyisipan data awal) ... }); db.close ();
Skrip ini mewujudkan jadual dan memakannya dengan data sampel. Jalankannya dengan node migrate.js
.
Menavigasi cabaran tak segerak
Mari kita pertanyaan pangkalan data. Dalam index.js
, kami mengimport sqlite3
, membuat objek pangkalan data, dan gunakan fungsi get
:
// index.js Import SQLite3 dari "SQLite3"; biarkan db = sqlite3.database baru ("quiz.db"); db.get (`pilih * dari kuiz di mana quizid = 0`, (err, baris) => { jika (err) { console.error (err.message); } console.log (baris); db.close (); });
Ini mencetak data kuiz ke konsol.
Mengelakkan perangkap panggil balik
Mari buat fungsi getQuiz(id)
untuk mendapatkan kuiz oleh ID. Hanya mengembalikan hasil dari dalam panggilan balik adalah salah kerana pelaksanaan tidak segerak:
// Tidak betul - Elakkan ini! fungsi getQuiz (id) { // ... (pertanyaan pangkalan data dengan panggilan balik) ... hasil pulangan; // Hasil tidak akan ditentukan! }
Pendekatan yang betul menggunakan panggilan balik untuk mengendalikan hasil yang tidak segerak:
fungsi getQuiz (id, panggilan balik) { // ... (pertanyaan pangkalan data, panggilan balik dengan hasil) ... } getQuiz (0, (kuiz) => { Console.log (kuiz); });
Beyond Callbacks Mudah: Janji dan Async/Menunggu
Berantai pelbagai panggilan asynchronous membawa kepada "panggil balik neraka." Janji menawarkan penyelesaian yang lebih bersih:
fungsi mendapatkan (param) { // ... (pertanyaan pangkalan data dibungkus dengan janji) ... } Dapatkan ({Table: "Jawapan", lajur: "Jawapan", Nilai: 2}) .then (...) .then (...) .then (...) .catch (...);
Async/Tunggu lagi memudahkan kod tak segerak, menjadikannya menyerupai kod segerak:
fungsi async printquizfromanswer () { const answer = menunggu mendapatkan ({jadual: "jawapan", lajur: "answerId", nilai: 2}); // ... (juga menunggu panggilan berikutnya) ... } printquizfromanswer ();
Menunggu peringkat teratas (tersedia dalam versi Node.js terkini) membolehkan lebih banyak kod ringkas.
Mengoptimumkan dengan SQL bergabung
Untuk kecekapan, gunakan SQL bergabung untuk mendapatkan data yang berkaitan dalam pertanyaan tunggal:
fungsi QuizFromanswer (AnswerId, Callback) { // ... (SQL Sertai pertanyaan untuk mengambil jawapan, soalan, dan data kuiz) ... }
Ini mengurangkan bilangan panggilan pangkalan data.
API dan Konvensyen Node.js
Node.js memperkenalkan API baru untuk interaksi pangkalan data, akses sistem fail, pelayan HTTP, dan banyak lagi. Memahami Konvensyen Node.js, termasuk fail package.json
dan panggil balik pertama ralat, adalah penting. Perbezaan antara modul CommonJS dan modul ES juga memerlukan perhatian.
Pertimbangan Server-Side
Pembangunan sisi pelayan Node.js memerlukan pengendalian pengecualian yang teliti dan kelemahan keselamatan, tidak seperti JavaScript sisi klien di mana kesilapan sering menjejaskan pengguna individu.
Kesimpulan
Node.js memberi kuasa kepada pemaju front-end untuk memanfaatkan kemahiran JavaScript mereka untuk pembangunan sisi pelayan. Walaupun sifat asynchronous membentangkan lengkung pembelajaran, manfaat keserasian dan ekosistem yang luas menjadikannya alat yang berkuasa. Ingatlah untuk membiasakan diri dengan konsep JavaScript Asynchronous, Node.js API, dan amalan terbaik keselamatan.
Atas ialah kandungan terperinci Membandingkan Node JavaScript ke JavaScript dalam penyemak imbas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel membincangkan harta margin CSS, khususnya "Margin: 40px 100px 120px 80px", permohonannya, dan kesan pada susun atur halaman web.

Artikel ini membincangkan sifat sempadan CSS, memberi tumpuan kepada penyesuaian, amalan terbaik, dan respons. Hujah utama: Radius sempadan adalah yang paling berkesan untuk reka bentuk responsif.

Artikel ini membincangkan sifat latar belakang CSS, kegunaan mereka dalam meningkatkan reka bentuk laman web, dan kesilapan umum untuk dielakkan. Fokus utama adalah pada reka bentuk responsif menggunakan saiz latar belakang.

Artikel membincangkan warna CSS HSL, penggunaannya dalam reka bentuk web, dan kelebihan RGB. Tumpuan utama adalah untuk meningkatkan reka bentuk dan kebolehcapaian melalui manipulasi warna intuitif.

Artikel ini membincangkan penggunaan komen dalam CSS, memperincikan sintaksis komen tunggal dan multi-line. Ia berpendapat bahawa komen meningkatkan kebolehbacaan kod, kebolehkerjaan, dan kerjasama, tetapi mungkin memberi kesan kepada prestasi laman web jika tidak diuruskan dengan betul.

Artikel ini membincangkan pemilih CSS, jenis mereka, dan penggunaan untuk elemen HTML gaya. Ia membandingkan pemilih ID dan kelas dan menangani masalah prestasi dengan pemilih yang kompleks.

Artikel ini membincangkan keutamaan CSS, memberi tumpuan kepada gaya inline yang mempunyai kekhususan tertinggi. Ia menerangkan tahap kekhususan, kaedah utama, dan alat penyahpepijatan untuk menguruskan konflik CSS.

Artikel membincangkan tiga kaedah untuk menambah CSS ke HTML: inline, dalaman, dan luaran. Kesan setiap kaedah terhadap prestasi laman web dan kesesuaian untuk pemula dianalisis. (159 aksara)


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
