Pengaturcaraan yang didorong oleh peristiwa untuk node.js boleh menjadi rumit untuk pemula, tetapi ini tidak bermakna ia sukar untuk dimulakan. Artikel ini akan memperkenalkan asas -asas Node.js dan menjelaskan mengapa ia popular.
Pengenalan
Untuk memulakan dengan node.js, anda mesti terlebih dahulu memahami perbezaan antara node.js dan persekitaran skrip sisi pelayan tradisional seperti PHP, Python, atau Ruby.
Pengaturcaraan Asynchronous
Anda mungkin biasa dengan pengaturcaraan tak segerak; Setiap fungsi dalam nod tidak segerak. Oleh itu, semua operasi yang biasanya menyekat benang dilaksanakan di latar belakang menggunakan janji. Ini adalah perkara yang paling penting mengenai Node. Sebagai contoh, jika anda membaca fail pada sistem fail, fungsi tak segerak akan digunakan.
Jika anda menggunakan beberapa versi fungsi nod, gunakan fungsi panggil balik, yang direka sebelum janji muncul. Kebanyakan fungsi nod kini mempunyai persamaan janji, jadi lebih baik untuk menukar fungsi panggil balik yang digunakan di sini untuk setara berasaskan janji dan bandingkan sintaks.
Mengawal keseluruhan proses
Dengan Node, anda perlu melakukan banyak kerja sendiri. Sebagai contoh, modul HTTP sangat diselaraskan dan tidak berpegang pada gaya tertentu. Ini mungkin menggembirakan pemula, tetapi manfaatnya adalah keupayaan untuk membina aplikasi web berprestasi tinggi (walaupun prestasi JavaScript sebahagian besarnya dikaitkan dengan enjin yang dioptimumkan V8). Satu skrip mengendalikan semua komunikasi dengan semua pelanggan. Ini sangat mengurangkan jumlah sumber yang digunakan oleh aplikasi. Sebagai contoh, inilah kod aplikasi Node.js mudah:
Const I, A, B, C, Max; max = 1000000000; var d = date.now (); untuk (i = 0; i <max i a="1234" b="1234" c="1234/2" console.log d><p> Berikut adalah kod setara yang ditulis dalam PHP:</p> <pre class="brush:php;toolbar:false"> $ a = null; $ b = null; $ c = null; $ i = null; $ max = 100000000; $ start = microTime (true); untuk ($ i = 0; $ i <p> Sekarang mari kita lihat data penanda aras. Jadual berikut menyenaraikan masa tindak balas dalam milisaat untuk kedua -dua aplikasi mudah ini:</p><pre class="brush:php;toolbar:false"> const http = memerlukan ('http');
Pembolehubah HTTP.
Dalam kod di atas, kami lulus nama modul ke objek Eksport dan mengisi sifat dan kaedahnya dengan coretan kod yang akan didedahkan. Pertimbangkan contoh modul berikut:
eksports.area = fungsi (r) { kembali math.pi * r ** 2; }; eksports.circumference = fungsi (r) { kembali 2 * math.pi * r; };
Kod ini mewujudkan objek Eksport. Fungsi -fungsi ini boleh diakses di luar modul kerana ia ditakrifkan pada PI dan dilindungi sepenuhnya dari gangguan luaran. Oleh itu, anda boleh yakin bahawa litar () akan sentiasa berfungsi seperti yang diharapkan (hanya memberikan nilai untuk kata kunci import):
// fail import mymodule dari "./mymodule.js" // Node terbina dalam/pakej import http dari "http"
Dalam penyemak imbas, ESM hanya boleh mencari dengan laluan fail relatif, seperti yang ditunjukkan di atas. Walau bagaimanapun, dalam nod, anda boleh lulus laluan tanpa nod: awalan.
Walau bagaimanapun, kaedah sebelumnya hanya berfungsi untuk eksport lalai. Jika anda menggunakan Eksport Dinamakan (lebih lanjut mengenai ini kemudian), anda perlu menggunakan sintaks yang sedikit berbeza.
Import {ExportOne, ExportTwo} dari "./mymodule.js"
Untuk mengeksport kandungan, gunakan kata kunci lalai eksport. Eksport digunakan untuk eksport yang dinamakan, dan lalai eksport digunakan untuk eksport lalai. Dinamakan Eksport membolehkan anda mengeksport kandungan yang berbeza dan menggunakan hanya satu daripada mereka dalam modul yang berbeza menggunakan sintaks import di atas. Jika anda mengeksport hanya satu kandungan, lebih mudah untuk dieksport secara lalai.
// Nama Eksport Fungsi ExportOne () { … } Eksport Eksport ExportTwo () { … } // Fungsi Eksport Default DefaultFunction () {) { … }
Di seluruh tutorial ini, kami akan menggunakan ESM.
Skop global
Node adalah persekitaran JavaScript yang berjalan dalam enjin V8 JavaScript Google. Oleh itu, kita harus mengikuti amalan terbaik yang kita gunakan dalam pembangunan pelanggan. Sebagai contoh, kita harus mengelakkan meletakkan apa -apa ke dalam skop global. Walau bagaimanapun, ini tidak selalu mungkin. Skop global dalam nod adalah (tetingkap dalam penyemak imbas), dan anda boleh dengan mudah membuat pembolehubah global fungsi dengan menghilangkan VAR apabila mengisytiharkan pembolehubah.
Pasang
Sememangnya, kita perlu memasang nod sebelum menulis dan melaksanakan aplikasi. Jika anda menggunakan Windows atau MacOS, pemasangan sangat mudah; Untuk Linux, gunakan mana -mana pengurus pakej. Sebagai contoh, jika anda menggunakan pengedaran yang menyokong APT, buka terminal dan jenis:
Sudo Apt-Get Update nod pemasangan sudo apt-get
atau:
Kemas kini bakat sudo nod pemasangan bakat sudo
Node.js terletak di repositori SID;
sudo echo deb https://ftp.us.debian.org/debian/ sid main> /etc/apt/sources.list.d/sid.list
Tetapi sedar bahawa memasang pakej SID pada sistem yang lebih lama boleh merosakkan sistem anda. Berhati -hati dan padamkan module_name.
Hello World App
Sudah tentu, skrip Node.js pertama kami akan mencetak teks "Hello World!"
Pelayan http
Mari kita teruskan dan mempunyai aplikasi yang lebih maju; Mari kita mulakan dengan kod berikut. Baca komen dan kemudian baca penjelasan di bawah:
// Termasuk modul HTTP. import {createeserver} dari "http" // Buat pelayan. Fungsi yang diluluskan sebagai parameter dipanggil setiap kali permintaan dibuat. // Pemboleh ubah permintaan menjimatkan semua parameter permintaan // Pembolehubah tindak balas membolehkan anda melakukan tindakan apa -apa pada respons yang dihantar kepada klien. CreateServer (fungsi (permintaan, respons) { // Lampirkan pendengar ke acara akhir. // Acara ini dipanggil apabila pelanggan menghantar semua data dan menunggu respons. request.on ("end", function () { // Tulis tajuk ke respons. // 200 adalah kod status HTTP (kod ini menunjukkan kejayaan) // parameter kedua menjimatkan medan pengepala di objek // kami menghantar teks biasa, jadi jenis kandungan harus teks/biasa Response.WriteHead (200, { 'Kandungan-jenis': 'Teks/Plain' }); // Hantar data dan tamatkan respons. response.end ('Hello http!'); }); // Dengar port 8080. }). Dengar (8080);
Kod ini sangat mudah. Anda boleh menghantar lebih banyak data kepada pelanggan dengan menggunakan response.end (). Simpan kod ini sebagai http.js dan taipkan arahan berikut dalam konsol:
Node http.js
Buka penyemak imbas dan navigasi ke https://www.php.cn/link/7232a90ea7d391905f9ee07bcc7c5967 . Anda mesti melihat teks hello http!
Proses Parameter URL
Seperti yang dinyatakan sebelum ini, kita perlu melakukan semua kerja dalam nod sendiri, termasuk menghuraikan parameter permintaan. Walau bagaimanapun, ini agak mudah. Lihat kod berikut:
// termasuk CreateServer import {createeserver} dari "http" // dan modul URL, yang sangat berguna dalam parameter permintaan parsing. url = memerlukan ("url"); // Buat pelayan. CreateServer (fungsi (permintaan, respons) { // Lampirkan pendengar ke acara akhir. request.on ('end', function () { // parameter permintaan parse dan simpannya dalam pembolehubah _get. // Fungsi ini menghidupkan URL dari permintaan dan mengembalikan perwakilan objek. var _get = url.parse (request.url, true) .Query; // Tulis tajuk ke respons. Response.WriteHead (200, { 'Kandungan-jenis': 'Teks/Plain' }); // Hantar data dan tamatkan respons. response.end ('Inilah data anda:' _get ['data']); }); // Dengar port 8080. }). Dengar (8080);
Kod ini menggunakan atribut pertanyaan, yang mengambil parameter URL. Simpan fail ini sebagai get.js dan laksanakan dengan arahan berikut:
node get.js
Kemudian, menavigasi ke parameter data tidak mengganggu skrip.
Baca dan tulis fail
Untuk menguruskan fail dalam nod, kami menggunakan modul FS (modul teras). Kami menggunakan kaedah Fs.WriteFile () untuk membaca dan menulis fail masing -masing. Saya akan menerangkan parameter selepas kod berikut:
// termasuk createeserver, import {createeserver} dari "http" // dan FS Fungsi Import {ReadFile, WriteFile} dari "FS" // Buat pelayan HTTP. CreateServer (fungsi (permintaan, respons) { // Lampirkan pendengar ke acara akhir. request.on ("end", function () { // Baca fail. ReadFile ("test.txt", 'UTF-8', fungsi (ralat, data) { // Tulis ke tajuk. Response.WriteHead (200, { 'Kandungan-jenis': 'Teks/Plain' }); // Meningkatkan nombor yang diperoleh dari fail. data = parseInt (data) 1; // Tulis nombor kenaikan ke fail. WriteFile ('test.txt', data); // menamatkan respons dengan beberapa mesej yang bagus. response.end ('halaman ini disegarkan' data 'kali!'); }); }); // Dengar port 8080. }). Dengar (8080);
Simpan ini sebagai fail.js. Sebelum menjalankan skrip ini, buat fail bernama Test.txt dalam direktori yang sama seperti Files.js .
Kod ini menunjukkan kaedah Fs.WriteFile (). Setiap kali pelayan menerima permintaan, skrip membaca nombor dari fail, kenaikan nombor itu, dan menulis nombor baru ke fail. Kaedah Fs.WriteFile () menerima nama fail dan data sebagai parameter. Ia juga menerima hujah -hujah ketiga dan keempat (kedua -dua pilihan), menentukan fungsi pengekodan dan panggilan balik masing -masing.
Sekarang mari kita jalankan skrip ini dengan arahan berikut:
nod files.js
Buka di penyemak imbas di https://www.php.cn/link/7232A90EA7D391905F9EE07BCC7C5967 dan menyegarkannya beberapa kali. Sekarang, anda mungkin berfikir terdapat ralat dalam kod anda kerana nampaknya bertambah dua kali. Ini bukan kesilapan. Setiap kali URL ini diminta, dua permintaan dihantar ke pelayan. Permintaan pertama dikeluarkan secara automatik oleh penyemak imbas, yang meminta favicon.ico , dan tentu saja permintaan kedua adalah untuk URL ( https://www.php.cn/link/7232a90ea7d391905f9ee07bcc7c5967 ).
Walaupun tingkah laku ini tidak salah secara teknikal, ia bukanlah tingkah laku yang kita mahu. Kami boleh dengan mudah membetulkannya dengan memeriksa url permintaan. Berikut adalah kod yang diubah suai:
// termasuk createeserver, import {createeserver} dari "http" // dan FS Fungsi Import {ReadFile, WriteFile} dari "FS" // Buat pelayan HTTP. CreateServer (fungsi (permintaan, respons) { // Lampirkan pendengar ke acara akhir. request.on ('end', function () { // periksa sama ada pengguna meminta/ jika (request.url == '/') { // Baca fail. ReadFile ('test.txt', 'UTF-8', fungsi (ralat, data) { // Tulis ke tajuk. Response.WriteHead (200, { 'Kandungan-jenis': 'Teks/Plain' }); // Meningkatkan nombor yang diperoleh dari fail. data = parseInt (data) 1; // Tulis nombor kenaikan ke fail. WriteFile ('test.txt', data); // menamatkan respons dengan beberapa mesej yang bagus. response.end ('halaman ini disegarkan' data 'kali!'); }); } else { // Menunjukkan bahawa fail yang diminta tidak dijumpai. Response.WriteHead (404); // dan tamatkan permintaan tanpa menghantar sebarang data. response.end (); } }); // Dengar port 8080. }). Dengar (8080);
Sekarang menguji ia; ia harus berfungsi seperti yang diharapkan.
Mengakses pangkalan data MySQL
Kebanyakan teknologi pelayan tradisional mempunyai kaedah terbina dalam untuk menyambung dan menanyakan pangkalan data. Dengan Node.js, anda perlu memasang perpustakaan. Dalam tutorial ini, saya memilih nod-mysql yang stabil dan mudah digunakan. Nama penuh modul ini ialah mysql@2.0.0-alpha2 (semua kandungan selepas @ adalah nombor versi). Buka konsol, navigasi ke direktori di mana anda telah menyimpan skrip, dan laksanakan arahan berikut:
NPM Pasang MySQL
Ini akan memuat turun dan memasang modul, ia juga akan membuat folder node_modules dalam direktori semasa. Sekarang mari kita lihat cara menggunakannya dalam kod anda;
// Termasuk modul HTTP, import {createeserver} dari "http" // dan modul MySQL yang baru anda pasang. Import * Sebagai MySQL dari "MySQL" // Buat sambungan. // Data mungkir ke pemasangan MySQL baru dan harus diubah mengikut konfigurasi anda. const connection = mysql.CreateConnection ({ Pengguna: "Root", Kata Laluan: "", Pangkalan Data: "DB_NAME" }); // Buat pelayan HTTP. CreateServer (fungsi (permintaan, respons) { // Lampirkan pendengar ke acara akhir. request.on ('end', function () { // pertanyaan pangkalan data. sambungan.Query ('pilih * dari your_table;', fungsi (ralat, baris, medan) { Response.WriteHead (200, { 'Kandungan-jenis': 'X-Application/JSON' }); // Hantar data sebagai rentetan JSON. // Variabel Baris menjimatkan hasil pertanyaan. response.end (json.stringify (baris)); }); }); // Dengar port 8080. }). Dengar (8080);
Menanyakan pangkalan data menggunakan perpustakaan ini mudah; Dalam aplikasi sebenar, anda harus menyemak kesilapan (tidak ditentukan jika ralat berlaku) dan hantar kod tindak balas berdasarkan kejayaan atau kegagalan pertanyaan. Juga ambil perhatian bahawa kami telah menetapkan X-Application/JSON, yang merupakan jenis MIME yang sah untuk JSON. Gunakan kaedah JSON.stringify()
untuk menukar baris ke struktur JSON.
Simpan fail ini sebagai mysql.js dan laksanakannya (jika anda memasang MySQL):
Node mysql.js
Navigasi ke https://www.php.cn/link/7232A90EA7D391905F9EE07BCC7C5967 dalam penyemak imbas anda dan anda harus menerima prompt untuk memuat turun fail format JSON.
kesimpulannya
Node.js memerlukan kerja tambahan, tetapi ganjaran aplikasi yang cepat dan berkuasa adalah berbaloi. Jika anda tidak mahu melakukan semua kerja di peringkat terendah, anda sentiasa boleh memilih rangka kerja (seperti Express) untuk memudahkan perkembangan permohonan anda.
Node.js adalah teknologi yang menjanjikan dan pilihan yang sangat baik untuk aplikasi beban tinggi. Syarikat -syarikat seperti Microsoft, Ebay dan Yahoo telah membuktikannya. Jika anda tidak pasti menganjurkan laman web atau aplikasi anda, anda sentiasa boleh menggunakan penyelesaian VPS murah atau pelbagai perkhidmatan berasaskan awan seperti Microsoft Azure dan Amazon EC2. Kedua -dua perkhidmatan menawarkan persekitaran berskala pada harga yang berpatutan.
Atas ialah kandungan terperinci Node.js untuk pemula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

JavaScript berjalan dalam penyemak imbas dan persekitaran Node.js dan bergantung pada enjin JavaScript untuk menghuraikan dan melaksanakan kod. 1) menjana pokok sintaks abstrak (AST) di peringkat parsing; 2) menukar AST ke bytecode atau kod mesin dalam peringkat penyusunan; 3) Laksanakan kod yang disusun dalam peringkat pelaksanaan.

Trend masa depan Python dan JavaScript termasuk: 1. Kedua -duanya akan terus mengembangkan senario aplikasi dalam bidang masing -masing dan membuat lebih banyak penemuan dalam prestasi.

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

Ya, teras enjin JavaScript ditulis dalam C. 1) Bahasa C menyediakan prestasi yang efisien dan kawalan asas, yang sesuai untuk pembangunan enjin JavaScript. 2) Mengambil enjin V8 sebagai contoh, terasnya ditulis dalam C, menggabungkan kecekapan dan ciri-ciri berorientasikan objek C. 3) Prinsip kerja enjin JavaScript termasuk parsing, penyusun dan pelaksanaan, dan bahasa C memainkan peranan penting dalam proses ini.

JavaScript adalah di tengah -tengah laman web moden kerana ia meningkatkan interaktiviti dan dinamik laman web. 1) Ia membolehkan untuk menukar kandungan tanpa menyegarkan halaman, 2) memanipulasi laman web melalui Domapi, 3) menyokong kesan interaktif kompleks seperti animasi dan drag-and-drop, 4) mengoptimumkan prestasi dan amalan terbaik untuk meningkatkan pengalaman pengguna.

C dan JavaScript mencapai interoperabilitas melalui webassembly. 1) Kod C disusun ke dalam modul WebAssembly dan diperkenalkan ke dalam persekitaran JavaScript untuk meningkatkan kuasa pengkomputeran. 2) Dalam pembangunan permainan, C mengendalikan enjin fizik dan rendering grafik, dan JavaScript bertanggungjawab untuk logik permainan dan antara muka pengguna.

JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.

Python lebih sesuai untuk sains data dan automasi, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python berfungsi dengan baik dalam sains data dan pembelajaran mesin, menggunakan perpustakaan seperti numpy dan panda untuk pemprosesan data dan pemodelan. 2. Python adalah ringkas dan cekap dalam automasi dan skrip. 3. JavaScript sangat diperlukan dalam pembangunan front-end dan digunakan untuk membina laman web dinamik dan aplikasi satu halaman. 4. JavaScript memainkan peranan dalam pembangunan back-end melalui Node.js dan menyokong pembangunan stack penuh.


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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular
