Rumah >hujung hadapan web >tutorial js >Node.js untuk pemula

Node.js untuk pemula

Lisa Kudrow
Lisa Kudrowasal
2025-03-14 10:33:10717semak imbas

Node.js untuk pemula

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn