Apa itu Node?
Lebih baik mencoba menutupi semuanya saat menulis sesuatu, jadi saya juga telah mengambil beberapa konsep dasar dari internet. Beberapa tempat telah mengubah pemahaman mereka sendiri. Jika Anda memiliki pemahaman tentang hal -hal konseptual ini, Anda dapat memilih untuk melewatkan paragraf ini.
1.Node adalah interpreter JavaScript sisi server, tetapi saya benar-benar berpikir bahwa siswa yang pandai JavaScript dapat dengan mudah mendapatkan node dengan belajar simpul, jadi Anda salah. Ringkasan: Saya tidak tahu apakah airnya dalam atau tidak, tetapi memang tidak dangkal.
2. Tujuan Node adalah untuk membantu pemrogram membangun aplikasi yang sangat terukur dan menulis kode koneksi yang dapat menangani puluhan ribu koneksi ke mesin fisik pada saat yang sama. Menangani konkurensi tinggi dan I/O asinkron adalah salah satu alasan mengapa Node menarik perhatian pengembang.
3.Node sendiri menjalankan mesin Google V8 JavaScript, sehingga kecepatan dan kinerjanya sangat bagus. Anda dapat melihatnya dengan melihat Chrome. Selain itu, sementara simpul merangkumnya, ia juga meningkatkan kemampuannya untuk memproses data biner. Oleh karena itu, node tidak hanya menggunakan V8, tetapi juga mengoptimalkannya untuk membuatnya lebih kuat di berbagai lingkungan. (Apa itu mesin javascript V8? Tolong "Baidu tahu")
4. Ekstensi dan modul pihak ketiga memainkan peran penting dalam penggunaan node. Berikut ini juga akan memperkenalkan pengunduhan NPM. NPM adalah alat manajemen modul. Gunakan untuk menginstal berbagai paket perangkat lunak node (seperti Express, Redis, dll.) Dan menerbitkan paket perangkat lunak yang Anda tulis untuk Node.
Instal Node
Berikut adalah pengantar singkat untuk menginstal node di dua lingkungan: Windows 7 dan Linux. Saat menginstal, Anda harus memperhatikan versi Python. Instalasi gagal berkali -kali karena masalah dengan versi Python. Disarankan bahwa versi 2.6+ akan memiliki kesalahan instalasi node. Jika Anda menanyakan versi Python, Anda dapat masuk: Pyhton -V
1. Mari kita pertama kali memperkenalkan instalasi di bawah Linux. Node sangat nyaman untuk dipasang dan digunakan di lingkungan Linux. Disarankan untuk menjalankan simpul di bawah Linux. ^_^... Saya menggunakan ubuntu11.04
A. Paket Ketergantungan Instalasi: 50-100kb/s Setiap paket dapat diunduh dan diinstal dalam satu menit.
Salinan kode adalah sebagai berikut:
sudo apt-get install g ++ curl libssl-dev apache2-utils
sudo apt-get install git-core
B. Jalankan perintah langkah demi langkah di terminal:
Salinan kode adalah sebagai berikut:
git clone git: //github.com/joyent/node.git
Node CD
./configure
Membuat
sudo membuat instal
Jika instalasi lancar, node akan berhasil diinstal, dan akan memakan waktu 12 menit untuk jaringan 2m.
Catatan: Jika Anda tidak menggunakan Git untuk mengunduh kode sumber, Anda dapat mengunduh kode sumber secara langsung, tetapi Anda perlu memperhatikan masalah versi node saat mengunduh dan menginstal dengan cara ini. Ini adalah yang paling nyaman untuk diunduh dan diinstal menggunakan git, jadi disarankan.
2. Gunakan Cygwin untuk menginstal node pada windows. Metode ini tidak dianjurkan karena benar -benar membutuhkan waktu lama dan karakter yang baik. Sistem saya adalah versi andalan Win7
Cygwin adalah lingkungan simulasi UNIX yang berjalan di platform Windows. Alamat unduhan adalah: http://cygwin.com/setup.exe.
Setelah mengunduh Cygwin, mulailah instalasi. Tangga:
A. Pilih sumber unduhan - instal dari internet
B. Pilih direktori root untuk diunduh dan instal
C. Pilih direktori tempat file unduhan disimpan
D. Pilih metode koneksi
e. Pilih situs web yang akan diunduh - http://mirrors.163.com/cygwin
F. Masalahnya ada pada langkah ini, waktunya telah tiba untuk menguji karakter Anda. Waktu unduhan dan instalasi yang diperlukan tidak pasti. Bagaimanapun, butuh waktu lama (lebih dari 20 menit), dan kegagalan pemasangan sesekali terjadi. Klik ikon Rotary Arrow di depan setiap paket untuk memilih versi yang Anda inginkan. Saat dipilih, tanda "X" akan muncul untuk menunjukkan bahwa paket telah dipilih. Pilih paket yang ingin Anda unduh:
Salinan kode adalah sebagai berikut:Paket Devel:
GCC-G ++: C ++ Compiler
GCC-MINGW-G ++: Header dan Perpustakaan Dukungan MINGW32 untuk GCC C ++
Subpackage GCC4-G ++: G ++
GIT: File inti sistem kontrol versi cepat
Make: versi GNU dari utilitas 'Make'
OpenSSL-Devel: Lingkungan Pengembangan OpenSSL
PKG-Config: Utilitas yang digunakan untuk mengambil informasi tentang perpustakaan yang diinstal
Zlib-Devel: Perpustakaan Kompresi/Dekompresi Zlib (Pengembangan)
Paket Editor: VIM: VI yang ditingkatkan editor VI yang ditingkatkan
Paket Python: Beralih default untuk menginstal status
Paket Web:
WGET: Utilitas untuk mengambil file dari WWW melalui HTTP dan FTP
Curl: Alat baris perintah transfer file multi-protokol
Tangkapan layar sebelumnya, ambil unduhan Zlib-devel sebagai contoh:
Setelah beberapa langkah, lingkungan selesai. Namun, belum ada waktu untuk menginstal Node. Anda masih perlu mengeksekusi rebaseall dalam mode abu Cywgin. Langkah -langkahnya adalah sebagai berikut:
A. Baris Perintah CMD
B. Masukkan subdirektori bin di bawah direktori instalasi Cygwin
C. Jalankan Ash untuk memasuki mode shell
D. ./rebaseall -v
e. Tutup jendela baris perintah tanpa kesalahan
Oke, sekarang saatnya untuk mengunduh dan menginstal node, mulai cygwin.exe dan masukkan:
Salinan kode adalah sebagai berikut:
$ wget http://nodejs.org/dist/node-v0.4.12.tar.gz
$ tar xf node-v0.4.12.tar.gz
$ CD Node-V0.4.12
$./Konfigurasi
$ make
$ Make Install
3.Download file node.exe secara langsung
Langsung ke nodejs.org untuk diunduh. Saya mendengar bahwa ada masalah yang tidak stabil, tetapi jika Anda hanya ingin belajar tentang node di Windows terlebih dahulu, saya pribadi merasa bahwa metode ini jauh lebih baik daripada menginstal Cygwin.
Catatan: Saya tidak benar -benar ingin menulis paragraf untuk menginstal node, tetapi saya masih menulisnya untuk kelengkapan artikel ini. Saya tidak berharap itu selama saya menulisnya ... itu meja kopi
"Halo dunia" - mengapa saya merasa sedikit bersemangat setiap kali saya melihat kalimat ini, dan saya bingung ...
Pertama, buat file hello.js dan salin kode berikut di file:
Salinan kode adalah sebagai berikut:
var http = membutuhkan ('http');
http.createServer (function (req, res) {
res.writeHead (200, {'tipe konten': 'teks/polos'});
res.end ('halo dunia/n');
}). Dengarkan (1337, "127.0.0.1");
console.log ('server berjalan di http://127.0.0.1:1337/');
Logika Kode:
A. Metode global membutuhkan () digunakan untuk mengimpor modul. Secara umum, nilai pengembalian dari metode Persyaratan () ditetapkan ke variabel secara langsung, dan variabel ini digunakan secara langsung dalam kode JavaScript. membutuhkan ("http") adalah memuat modul http preset sistem
B. http.createServer adalah metode modul, tujuannya adalah untuk membuat dan mengembalikan objek server web baru dan mengikat panggilan balik ke layanan untuk menangani permintaan.
C. Server HTTP dapat didengarkan pada port tertentu melalui metode http.listen ().
D. Console.log Tak perlu dikatakan, mereka yang tahu Firebug harus tahu bahwa simpul mengimplementasikan metode ini.
Catatan: Untuk detail tertentu, silakan periksa dokumen cnodeJs.org/cman/all.html#http.createServer
Kemudian jalankan server node, jalankan kode hello.js, dan setelah berhasil memulai, Anda akan melihat teks di console.log (). Ada gambar dan kebenaran:
Unduh dan Penggunaan NPM
Selain API yang disediakan oleh Node itu sendiri, sekarang ada banyak modul pihak ketiga yang dapat sangat meningkatkan efisiensi pengembangan. NPM adalah Manajer Paket Node, yang dapat menggunakannya untuk menginstal paket perangkat lunak yang diperlukan dan mempublikasikan paket perangkat lunak yang ditulis untuk nodeJS. Alamat situs web resmi: npmjs.org
Instalasi hanya membutuhkan penulisan satu baris kode di terminal:
Salinan kode adalah sebagai berikut:
Curl http://npmjs.org/install.sh | sh
NPM menginstal paket ekstensi simpul dengan baris kode yang sama:
Salinan kode adalah sebagai berikut:
NPM Instal <Package Name> // Contoh: NPM Instal Express
Catatan: Jika kesalahan nama domain dilaporkan selama instalasi modul, harap hapus cache cache> NPM bersih atau restart komputer.
Memahami konsep modul node
Dalam simpul, komponen fungsional yang berbeda dibagi menjadi modul yang berbeda. Aplikasi dapat memilih dan menggunakan modul yang sesuai sesuai dengan kebutuhannya. Setiap modul akan mengekspos beberapa metode atau atribut umum. Pengguna modul dapat menggunakan metode atau atribut ini secara langsung, dan tidak perlu memahami detail implementasi internal. Selain API yang disediakan oleh Node itu sendiri, pengembang juga dapat menggunakan mekanisme ini untuk membagi aplikasi menjadi beberapa modul untuk meningkatkan penggunaan kembali kode.
1. Bagaimana cara menggunakan modul?
Sangat nyaman untuk menggunakan modul dalam node. Dalam kode JavaScript, Anda dapat secara langsung menggunakan fungsi global yang memerlukan () untuk memuat modul.
Dalam contoh "Hello World" sekarang, membutuhkan ("http") dapat memuat modul http preset sistem; Nama modul dimulai dengan "./", seperti membutuhkan ("./ mymodule.js") untuk memuat modul mymodule.js di direktori yang sama dengan file javascript saat ini.
2. Bagaimana cara mengembangkan modul sendiri?
Ketika saya baru saja memperkenalkan bahwa ketika menggunakan membutuhkan () untuk mengimpor modul, nama modul dimulai dengan "./" adalah file modul yang saya kembangkan sendiri. Yang perlu Anda perhatikan adalah jalur sistem file JS.
Logika pemrosesan internal modul dienkapsulasi dalam kode. Modul umumnya akan mengekspos beberapa metode atau atribut publik untuk digunakan orang lain. Kode internal modul perlu mengekspos metode atau atribut ini.
3. Mari kita ambil satu set contoh sederhana. Pertama -tama buat file modul seperti mymodule.js, hanya satu baris kode
Console.log ('Hai Darren.')
Kemudian buat file test.js, impor file js ini, dan jalankan node untuk melihat hasilnya
Ada banyak modul pihak ketiga di komunitas node sekarang. Saya berharap lebih banyak orang dapat bergabung dengan keluarga besar ini dengan mempelajari simpul dan berkontribusi pada komunitas node. Terima kasih sebelumnya, mari kita lanjutkan.
4. Ambil contoh yang lebih dalam. Dalam contoh ini, pribadi dan bersama akan diperkenalkan. Pertama -tama buat mymodule.js, kodenya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
var name = "darren";
this.location = "beijing";
this.showlog = function () {
Console.log ('Hai Darren.')
};
Ada tiga jenis dalam kode, yaitu: atribut pribadi, atribut bersama dan metode bersama, dan kemudian membuat test.js dan menjalankan node
Area yang disorot dengan jelas memberi tahu kita bahwa kita tidak bisa mendapatkan metode pribadi di luar modul, sehingga tidak ditentukan. Deklarasi atribut bersama dan metode bersama perlu didahului oleh kata kunci ini.
Apa yang bisa dilakukan simpul dan keunggulannya
Ide Inti Node: 1. Non-blocking; 2. Daging Single-Threaded; 3. Berdorong acara.
Dalam aplikasi web saat ini, beberapa interaksi antara klien dan server dapat dianggap berbasis peristiwa, jadi AJAX adalah kunci dari respons tepat waktu halaman. Setiap kali permintaan dikirim (tidak peduli seberapa kecil data yang diminta), itu akan bolak -balik di jaringan. Server harus menanggapi permintaan ini, biasanya membuka proses baru. Kemudian semakin banyak pengguna yang mengunjungi halaman ini, semakin banyak permintaan yang akan mereka dimulai, dan akan ada masalah seperti meluap memori, konflik yang disebabkan oleh interleaving logis, kelumpuhan jaringan, dan kerusakan sistem.
Tujuan Node adalah memberikan solusi untuk membangun aplikasi jaringan yang dapat diskalakan. Dalam contoh Hello World, server dapat menangani banyak koneksi klien secara bersamaan.
Node dan sistem operasi memiliki konvensi bahwa jika tautan baru dibuat, sistem operasi akan memberi tahu Node dan kemudian pergi ke hibernasi. Jika seseorang membuat tautan baru, maka itu (node) menjalankan panggilan balik, setiap tautan hanya mengambil tumpukan (memori) yang sangat kecil.
Ambil contoh sederhana panggilan asinkron, siapkan tes.js dan mymydule.js, ^_ ^. Salin kode berikut ke test.js dan jalankan:
Salinan kode adalah sebagai berikut:
var fs = membutuhkan ('fs');
fs.readfile ('./ mymodule.js', function (err, data) {
if (err) lempar err;
console.log ('berhasil');
});
console.log ('async');
Asynchronous, semua orang harus dapat berpikir bahwa runtime pertama -tama akan menampilkan "async" dan kemudian "berhasil".
Node tidak memblokir, dan ketika permintaan baru tiba di server, tidak perlu melakukan apa pun secara terpisah untuk permintaan ini. Node hanya menunggu permintaan untuk terjadi di sana dan menangani permintaan jika ada permintaan.
Node lebih baik dalam menangani permintaan berukuran kecil dan I/O berbasis acara.
Node bukan hanya kerangka kerja untuk membuat layanan web, tetapi dapat melakukan lebih banyak, seperti itu dapat melakukan layanan soket, misalnya, berbasis file, dan kemudian berdasarkan beberapa contoh, dapat ada proses anak, dan secara internal, itu adalah mekanisme acara yang sangat lengkap, termasuk beberapa solusi non-injeksi yang tidak sinkron, daripada terbatas pada lapisan pertama jaringan. Pada saat yang sama, mungkin, bahkan sebagai layanan web, menyediakan lebih banyak fungsi yang dapat menembus ke dalam kernel dan inti layanan. Misalnya, agen HTTP yang digunakan oleh node, adalah bahwa ia dapat menembus ke dalam kernel layanan dan melakukan beberapa fungsi.
Konsep Aliran Acara Node
Karena Node mengadopsi mode yang digerakkan oleh peristiwa, banyak modul akan menghasilkan berbagai peristiwa, dan modul dapat menambahkan metode pemrosesan acara. Semua objek yang dapat menghasilkan acara adalah contoh kelas EventeMitter di modul acara. Kode adalah bahasa umum di seluruh dunia, jadi kami masih menggunakan kode untuk berbicara:
Salinan kode adalah sebagai berikut:
var peristiwa = membutuhkan ("peristiwa");
var emitter = peristiwa baru.eventemitter ();
emitter.on ("myevent", function (msg) {
console.log (msg);
});
emitter.emit ("MyEvent", "Hello World.");
Analisis singkat dari paragraf ini:
1. Gunakan metode kebutuhan () untuk menambahkan modul acara dan menetapkan nilai pengembalian ke variabel
2. Kalimat Event.eventemitter () baru membuat pemicu acara, yang merupakan contoh yang disebut dari kelas EventeMitter dalam modul acara.
3. On (acara, pendengar) digunakan untuk menambahkan event handler ke acara acara
4. Metode emit (peristiwa, [arg1], [arg2], [...]) digunakan untuk menghasilkan peristiwa. Setiap fungsi pendengar dalam daftar pendengar dieksekusi secara berurutan dengan parameter yang disediakan sebagai parameter fungsi pendengar.
Metode dalam kelas EventeMitter terkait dengan generasi dan pemrosesan peristiwa:
1. AddListener (acara, pendengar) dan on (acara, pendengar) keduanya adalah metode yang menambahkan pendengar ke akhir array pendengar dari acara yang ditentukan.
2. Sekali (acara, pendengar) Metode ini menambahkan pendengar satu kali untuk acara. Pendengar dieksekusi saat acara dipecat untuk pertama kalinya dan akan dihapus setelahnya
3. Removelistener (acara, pendengar) Metode ini digunakan untuk menghapus pendengar dari array pendengar dari acara yang ditentukan.
4. Emit (peristiwa, [arg1], [arg2], [...]) baru saja disebutkan.
Dalam node, ada berbagai aliran data yang berbeda, dan aliran adalah antarmuka abstrak yang diimplementasikan oleh objek yang berbeda. Misalnya, permintaan untuk meminta server HTTP adalah aliran, mirip dengan STDOUT (output standar); Termasuk sistem file, permintaan dan tanggapan HTTP, dan koneksi TCP/UDP. Aliran dapat dibaca, dapat ditulis, atau dapat dibaca dan dapat ditulis. Semua aliran adalah contoh Eventemitter, sehingga berbagai acara dapat dihasilkan.
Aliran yang dapat dibaca terutama menghasilkan acara berikut:
1. Data Acara ini dipicu ketika data dalam aliran dibaca.
2. end ketika tidak ada data dalam aliran untuk dibaca, acara ini dipicu
3. TERBAIKI Acara ini dipicu ketika kesalahan terjadi saat membaca data.
4. Tutup ketika aliran ditutup, acara ini dipicu, tetapi tidak semua aliran akan memicu acara ini. (Misalnya, aliran permintaan HTTP yang masuk dalam koneksi tidak akan memicu acara 'tutup'.)
Ada juga acara FD yang lebih istimewa, yang dipicu ketika deskriptor file diterima di aliran. Hanya aliran UNIX yang mendukung fitur ini, dan tidak ada jenis aliran lain yang akan memicu acara ini.
Dokumentasi terperinci terkait: http://cnodejs.org/cman/all.html#events_
Modul sistem file sistem file yang kuat
Modul FS dalam simpul digunakan untuk beroperasi pada sistem file lokal. I/O dari file ini dienkapsulasi oleh fungsi POSIX standar. Modul ini perlu diakses menggunakan kebutuhan ('FS'). Semua metode memberikan metode asinkron dan sinkron.
Metode yang disediakan dalam modul FS dapat digunakan untuk melakukan operasi file dasar, termasuk membaca, menulis, mengganti nama, membuat dan menghapus direktori, dan mendapatkan metadata file. Setiap metode file operasi memiliki dua versi: versi sinkron dan asinkron.
Versi operasi asinkron akan menggunakan metode panggilan balik sebagai parameter terakhir. Ketika operasi selesai, metode panggilan balik akan dipanggil. Parameter pertama dari metode panggilan balik selalu dicadangkan sebagai pengecualian yang mungkin terjadi selama operasi. Jika operasi benar dan berhasil, nilai parameter pertama adalah nol atau tidak terdefinisi.
Nama metode versi operasi sinkron adalah menambahkan sinkronisasi sebagai akhiran setelah metode asinkron yang sesuai. Misalnya, versi sinkron dari metode asinkron Rename () adalah Renamesync (). Berikut ini mencantumkan beberapa metode umum dalam modul FS, dan hanya memperkenalkan versi operasi asinkron.
Apakah file test.js dan mymodule.js siap? Salin kode berikut ke dalam test.js sekali
Salinan kode adalah sebagai berikut: var fs = membutuhkan ('fs');fs.unlink ('./ mymodule.js', function (err) {
if (err) lempar err;
console.log ('berhasil menghapus mymodule.js');
});
Jika tidak ada kesalahan, maka myModule.js akan dihapus. Sesederhana itu
Ini hanya contoh sederhana. Jika Anda tertarik, cobalah sendiri dan latih kebenaran. Karena alasan ruang, saya tidak akan memberikan banyak contoh. ^_^
Ringkasan Node Pembelajaran:
1. Bagi saya, yang memiliki hampir nol pengetahuan tentang perintah dan cangkang Linux, saya telah belajar banyak pengetahuan tentang Linux selama periode ini. Vim benar -benar editor yang kuat, dan rasanya sangat baik untuk tidak menggunakan mouse; Dan satu hal sangat penting bagi saya. Pemrograman di bawah Linux sangat keren, terutama dalam tim, yang digunakan untuk menginstal lebih sehat^_^.
2. Memahami kerangka kerja yang sukses untuk JavaScript sisi server - node, serta beberapa keunggulan dan penggunaannya, artikel ini adalah ringkasan terbaik, tentu saja, ini hanya akan menjadi awal.
Beberapa hal untuk dikatakan kepada semua orang:
1. Saya harus mencapai antusiasme beberapa orang di sini. Jika Anda tidak cukup tahu tentang teknologi backend atau tidak pernah terpapar bahasa server, tidak tahu tentang I/O, dan tidak memiliki konsep aliran pemrosesan backend, maka ... Node bukan teknologi sisi server yang cocok untuk entry-level. Mengapa Anda mengatakan demikian:
A. Poin kuncinya adalah bahwa ada beberapa contoh dan artikel dalam bahasa Cina, sehingga akan lebih merepotkan untuk belajar secara sistematis, jadi selalu ada perasaan yang belum dewasa selama penggunaan, tentu saja, itu terutama disebabkan oleh ketidakberdayaan saya dengan itu. Memang tidak banyak perusahaan yang menggunakan Node di Cina, dan tentu saja masih ada banyak di luar negeri. Saya mengambil gambar dari cnodeJs.org:
3. Saya benar -benar memiliki beberapa penyesalan tentang tidak memasuki perusahaan yang bermimpi, tetapi hidup harus seperti ini, dengan pasang surut, yang persis seperti yang saya butuhkan dan harapkan ... Kemudian, saya masih harus melanjutkan kehidupan baru saya, menjadi juru mudi Anda sendiri, memahami arah Anda sendiri, dan membiarkannya melewati apa yang sudah lewat.
B. Untuk teman yang tidak berpengalaman, Node tidak mudah untuk memulai. Ini dapat dilihat dari "Hello World" yang paling sederhana (pemahaman tentang berbagai lingkungan operasi dan detail instalasi membutuhkan upaya). Jangan membandingkan perpustakaan jQuery. Hal -hal yang ditangani berbeda dan biaya belajar juga berbeda. Oleh karena itu, tidak disarankan untuk menjadi teknologi sisi server untuk pemula. Jika Anda ingin mempelajari PHP dan Python bahasa sisi server, itu adalah pilihan yang baik, karena: ada banyak buku, contoh, banyak kerangka kerja, dan banyak langsung, sederhana dan mudah dimengerti dan dibangun ...
C. Di atas adalah saran jenis pribadi saya. Karena level saya yang terbatas, tolong beri saya beberapa saran dan berharap untuk tanpa ampun.
2. Saya tidak jelek tentang standar penulisan simpul dan keterampilan khusus. Saya tidak punya banyak kode untuk menulis node sendiri, tetapi ide pemrograman yang berorientasi objek bagus di mana-mana.
3. Saya harap artikel ini akan berguna bagi semua orang untuk belajar node