Kata pengantar
Jika kita tidak belajar nodeJs, kita akan menjadi tua ... Ketika gelombang HTML5 melanda, banyak leluhur memulai perjalanan nodej mereka, dan pada saat itu saya masih mengerjakan program sisi server.
Kemudian, saya berubah ke front-end, dan jarak antara itu dan eselon sudah sangat besar. Karena saya tahu bahasa sisi server dan bekerja untuk waktu yang lama, saya hanya mulai belajar nodeJ dan bergerak menuju front-end lengkap.
Kali ini, rencana untuk mempelajari nodej adalah:
① Pelajari pengetahuan dasar dalam 1-2 minggu
② Pengembangan proyek sederhana dalam waktu sekitar 1 minggu
③ Gunakan nodeJs untuk mengembangkan seperangkat alat untuk debugging seluler
④ terkait kemasan (ini mungkin jauh)
Fitur NodeJS
① Asynchronous
NodeJs semuanya diselesaikan secara tidak sinkron dari membaca file ke permintaan jaringan, dan fungsi panggilan balik memainkan peran penting. Node adalah model program terkemuka
② Panggilan balik acara
Panggilan balik acara membuat program ini ringan, tetapi spesifisitasnya tergantung pada programmer. Namun, fungsi callback sebenarnya cukup sulit dibaca.
③ tunggal berulir
Node adalah utara tunggal. Jika multi-threaded, bahasa ini akan lebih dalam. Sangat menjengkelkan untuk mengajukan beberapa pertanyaan tentang komunikasi dalam prosesnya, tetapi utasnya tidak memiliki kebuntuan atau masalah lainnya.
Tetapi ada masalah dengan keterkaitan kinerja, karena multi-core tidak dapat digunakan;
Mekanisme Modul/CommonJS
Kami dulu melakukan pengembangan sisi server. Jika kami tidak memiliki kode organisasi yang baik, akan sangat sulit untuk dipertahankan nanti, jadi apa yang akan ada di MVC dan arsitektur tiga lapis?
Sekarang logika bisnis front-end secara bertahap bergerak lebih dekat ke back-end. Adapun aplikasi satu halaman, itu telah melampaui logika program back-end.
Peningkatan tampilan halaman yang berkelanjutan akan menyebabkan lonjakan jumlah kode JS. Bagaimana mengelola kode front-end kami telah menjadi masalah, jadi persyaratan muncul ...
PS: Sialan periode ini memiliki hubungan sepeser pun dengan nodej ...
JavaScript tidak memiliki sistem modular, jadi CommonJS diusulkan untuk memberikan JS dasar untuk mengembangkan aplikasi skala besar.
Referensi Modul
Jika kami ingin merujuk modul, seperti perhitungan matematika terkait:
var matematika = membutuhkan ('matematika');
Definisi Modul
Jika kita ingin mendefinisikan modul kita sendiri, kita bisa melakukan ini
Salinan kode adalah sebagai berikut:
exports.add = function () {
jumlah pengembalian;
}
Jika fungsi ini didefinisikan dalam matematika, itu dapat digunakan
Math.add ();
ID Modul
Identifier modul adalah parameter yang diteruskan untuk diminta. Itu perlu dinamai unta dan menunjuk ke jalur file. Ini sangat mirip dengan kebutuhan di sini.
Implementasi Modul
Implementasi modul node dibagi menjadi dua kategori: satu adalah modul inti tingkat sistem dan yang lainnya adalah modul file yang ditulis oleh pengguna.
Modul inti diterjemahkan ke dalam file biner selama proses kompilasi. Setelah proses node dimulai, beberapa modul inti akan dimuat langsung ke memori (lokasi file, kompilasi dan eksekusi)
Modul file perlu dimuat secara dinamis, dan kecepatannya relatif lambat.
Namun, setelah dimuat, file -file tersebut akan di -cache, dan file yang di -cache (file yang dikompilasi) akan dibaca saat diimpor lagi (file yang dikompilasi)
Mari kita bicara sedikit lebih jauh di sini. Ketika kami menggunakan garis bawah, kami akan mengkompilasi HTML untuk membentuk fungsi template (itu benar -benar hanya suatu fungsi). Bahkan, ini bisa di -cache.
Simpan fungsi yang dikompilasi sebelum menggunakan proyek dan hapus file template HTML (saya tidak tahu efek optimisasi)
Dalam simpul, setiap modul adalah objek:
Salinan kode adalah sebagai berikut:
Modul Fungsi (id, induk) {
this.id = id;
this.exports = {};
// orang tua adalah kata kunci, tidak boleh digunakan secara acak
this.parent = Parent;
if (parent && parent.children) {
parent.children.push (ini);
}
this.filename = null;
this.loaded = false;
this.children = [];
}
Tahap terakhir memperkenalkan modul file selama kompilasi dan eksekusi. Setelah menemukan file tertentu, Node akan membuat objek modul baru, dan kemudian memuat dan mengkompilasi sesuai dengan jalur.
Setiap modul yang berhasil dikompilasi akan cache jalur file sebagai indeks pada modul._cache
Setiap file modul memiliki tiga variabel: membutuhkan, ekspor, dan modul, tetapi mereka tidak didefinisikan dalam file (__filename__ dan __Dirname__ variabel juga).
Bahkan, selama proses kompilasi, simpul membungkus konten kepala dan ekor file JavaScript (setara dengan memasukkan fungsi khusus ke jendela)
Salinan kode adalah sebagai berikut:
(fungsi (ekspor, membutuhkan, modul, __filename__, __dirname__) {
var matematika = membutuhkan ('matematika');
exports.area = function (radius) {
kembali '';
};
});
Dengan cara ini, modul terisolasi dan tidak akan saling mempengaruhi. Ini agak mirip dengan kompilasi underscore ...
Paket dan NPM
Node mengatur modul intinya sendiri, sehingga modul file pihak ketiga dapat ditulis dan digunakan dengan cara yang tertib, tetapi dalam modul pihak ketiga, modul masih hash di berbagai tempat.
Itu tidak dapat secara langsung direferensikan antara satu sama lain. Dalam modul outsourcing dan NPM adalah mekanisme untuk membuat koneksi.
PS: Banyak modul akan membentuk paket. Konsep paket ini mirip dengan paket Java.
Setelah dekompresi struktur paket, beberapa file akan dibentuk:
① file deskripsi package.json
② Direktori biner yang dapat dieksekusi
③ Direktori Kode JavaScript Lib
④ Dokumentasi dokumen (Dazzling pada dasarnya tidak ada)
⑤ Tes demo
Di atas adalah beberapa spesifikasi paket CommonJS, tetapi kita dapat belajar sedikit (pemula), dan NPM harus mahir di dalamnya. Dengan bantuan NPM, kami dapat mahir dalam memasang paket manajemen.
Instal Paket Ketergantungan
Menginstal paket ketergantungan adalah metode umum:
NPM Instal Express
Setelah eksekusi, direktori node_modules akan dibuat di direktori saat ini, dan kemudian direktori Express akan dibuat di bawahnya ...
PS: Express adalah kerangka kerja pengembangan web yang populer di NodeJs, membantu kami mengembangkan aplikasi web dengan cepat
Setelah instalasi selesai, itu dapat dipanggil:
Salinan kode adalah sebagai berikut:
var express = membutuhkan ('express');
Kesimpulan
Bagian ini baru saja berakhir, dan proses tempur aktual dari proyek kami secara bertahap akan semakin dalam.