โหนดคืออะไร?
เป็นการดีกว่าที่จะพยายามครอบคลุมทุกอย่างเมื่อเขียนบางสิ่งบางอย่างดังนั้นฉันจึงได้นำแนวคิดพื้นฐานบางอย่างจากอินเทอร์เน็ต บางสถานที่เปลี่ยนความเข้าใจของฉันเอง หากคุณมีความเข้าใจในเรื่องแนวคิดเหล่านี้คุณสามารถเลือกข้ามย่อหน้านี้ได้
1.Node เป็นล่าม JavaScript ฝั่งเซิร์ฟเวอร์ แต่ฉันคิดว่านักเรียนที่เก่งด้าน JavaScript สามารถรับโหนดได้อย่างง่ายดายโดยการเรียนรู้โหนดดังนั้นคุณจึงผิด สรุป: ฉันไม่รู้ว่าน้ำลึกหรือไม่ แต่มันไม่ตื้น
2. เป้าหมายของ Node คือการช่วยให้โปรแกรมเมอร์สร้างแอปพลิเคชันที่ปรับขนาดได้สูงและเขียนรหัสการเชื่อมต่อที่สามารถจัดการการเชื่อมต่อหลายหมื่นครั้งกับเครื่องทางกายภาพในเวลาเดียวกัน การจัดการพร้อมกันสูงและ I/O แบบอะซิงโครนัสเป็นหนึ่งในเหตุผลที่โหนดได้ดึงดูดความสนใจของนักพัฒนา
3.Node นั้นใช้งานเครื่องยนต์ Google V8 JavaScript ดังนั้นความเร็วและประสิทธิภาพจึงดีมาก คุณสามารถดูได้โดยดูที่ Chrome ยิ่งไปกว่านั้นในขณะที่โหนดห่อหุ้มมันมันยังปรับปรุงความสามารถในการประมวลผลข้อมูลไบนารี ดังนั้นโหนดไม่เพียง แต่ใช้ V8 แต่ยังปรับให้เหมาะสมเพื่อให้มีประสิทธิภาพมากขึ้นในสภาพแวดล้อมที่หลากหลาย (เครื่องยนต์ V8 JavaScript คืออะไรโปรด "Baidu รู้")
4. ส่วนขยายและโมดูลของบุคคลที่สามมีบทบาทสำคัญในการใช้โหนด ต่อไปนี้จะแนะนำการดาวน์โหลด NPM NPM เป็นเครื่องมือการจัดการโมดูล ใช้เพื่อติดตั้งแพ็คเกจซอฟต์แวร์โหนดต่างๆ (เช่น Express, Redis ฯลฯ ) และเผยแพร่แพ็คเกจซอฟต์แวร์ที่คุณเขียนสำหรับ Node
ติดตั้งโหนด
นี่คือการแนะนำสั้น ๆ เกี่ยวกับการติดตั้งโหนดในสองสภาพแวดล้อม: Windows 7 และ Linux เมื่อติดตั้งคุณต้องใส่ใจกับเวอร์ชัน Python การติดตั้งล้มเหลวหลายครั้งเนื่องจากปัญหาเกี่ยวกับรุ่น Python ขอแนะนำว่ารุ่น 2.6+ จะมีข้อผิดพลาดในการติดตั้งโหนด หากคุณสอบถามเวอร์ชัน Python คุณสามารถป้อน: Pyhton -V
1. ก่อนอื่นแนะนำการติดตั้งภายใต้ Linux โหนดสะดวกมากในการติดตั้งและใช้ในสภาพแวดล้อม Linux ขอแนะนำให้เรียกใช้โหนดภายใต้ Linux ^_^... ฉันใช้ ubuntu11.04
. แพ็คเกจการติดตั้งแบบพึ่งพา: 50-100kb/s แต่ละแพ็คเกจสามารถดาวน์โหลดและติดตั้งได้ในหนึ่งนาที
การคัดลอกรหัสมีดังนี้:
sudo apt-get ติดตั้ง g ++ curl libssl-dev apache2-utils
sudo apt-get ติดตั้ง git-core
ข. เรียกใช้คำสั่งทีละขั้นตอนในเทอร์มินัล:
การคัดลอกรหัสมีดังนี้:
git clone git: //github.com/joyent/node.git
โหนดซีดี
./configure
ทำ
Sudo Make Install
หากการติดตั้งราบรื่นโหนดจะได้รับการติดตั้งสำเร็จและจะใช้เวลาทั้งหมด 12 นาทีสำหรับเครือข่าย 2M
หมายเหตุ: หากคุณไม่ใช้ GIT เพื่อดาวน์โหลดซอร์สโค้ดคุณสามารถดาวน์โหลดซอร์สโค้ดโดยตรง แต่คุณต้องใส่ใจกับปัญหาเวอร์ชันโหนดเมื่อดาวน์โหลดและติดตั้งด้วยวิธีนี้ มันสะดวกที่สุดในการดาวน์โหลดและติดตั้งโดยใช้ Git ดังนั้นจึงขอแนะนำ
2. ใช้ cygwin เพื่อติดตั้งโหนดบน Windows ไม่แนะนำวิธีนี้เพราะต้องใช้เวลานานและเป็นตัวละครที่ดี ระบบของฉันคือเวอร์ชันเรือธง win7
Cygwin เป็นสภาพแวดล้อมการจำลองแบบ UNIX ที่ทำงานบนแพลตฟอร์ม Windows ที่อยู่ดาวน์โหลดคือ: http://cygwin.com/setup.exe
หลังจากดาวน์โหลด Cygwin ให้เริ่มการติดตั้ง ขั้นตอน:
. เลือกแหล่งที่มาของการดาวน์โหลด - ติดตั้งจากอินเทอร์เน็ต
ข. เลือกไดเรกทอรีรูทสำหรับดาวน์โหลดและติดตั้ง
ค. เลือกไดเรกทอรีที่เก็บไฟล์ดาวน์โหลด
d. เลือกวิธีการเชื่อมต่อ
ก. เลือกเว็บไซต์ที่จะดาวน์โหลด - http://mirrors.163.com/cygwin
f. ปัญหาอยู่ในขั้นตอนนี้เวลามาทดสอบตัวละครของคุณ เวลาดาวน์โหลดและการติดตั้งที่จำเป็นไม่แน่นอน อย่างไรก็ตามมันใช้เวลานาน (มากกว่า 20 นาที) และความล้มเหลวในการติดตั้งเกิดขึ้นเป็นครั้งคราว คลิกที่ไอคอนลูกศรโรตารี่ด้านหน้าของแต่ละแพ็คเกจเพื่อเลือกเวอร์ชันที่คุณต้องการ เมื่อเลือกเครื่องหมาย "x" จะปรากฏขึ้นเพื่อระบุว่าแพ็คเกจได้รับการเลือกแล้ว เลือกแพ็คเกจที่คุณต้องการดาวน์โหลด:
การคัดลอกรหัสมีดังนี้:แพ็คเกจพัฒนา:
GCC-G ++: คอมไพเลอร์ C ++
GCC-MINGW-G ++: MINGW32 ส่วนหัวสนับสนุนและห้องสมุดสำหรับ GCC C ++
GCC4-G ++: แพ็คเกจย่อย G ++
Git: ไฟล์หลักระบบควบคุมเวอร์ชันเร็ว
Make: ยูทิลิตี้ 'Make' เวอร์ชัน GNU
openssl-devel: สภาพแวดล้อมการพัฒนา OpenSSL
PKG-Config: ยูทิลิตี้ที่ใช้ในการดึงข้อมูลเกี่ยวกับไลบรารีที่ติดตั้ง
ZLIB-DEVEL: ห้องสมุดการบีบอัด/การบีบอัด ZLIB (การพัฒนา)
แพ็คเกจบรรณาธิการ: VIM: VI ปรับปรุง Enhanced VI Editor
แพ็คเกจ Python: สวิตช์เริ่มต้นเพื่อติดตั้งสถานะ
แพ็คเกจเว็บ:
wget: ยูทิลิตี้เพื่อดึงไฟล์จาก www ผ่าน http และ ftp
Curl: เครื่องมือการถ่ายโอนไฟล์หลายสาย
ภาพหน้าจอก่อนหน้าใช้การดาวน์โหลด zlib-devel เป็นตัวอย่าง:
หลังจากไม่กี่ขั้นตอนสภาพแวดล้อมจะเสร็จสมบูรณ์ อย่างไรก็ตามยังไม่ถึงเวลาที่จะติดตั้งโหนด คุณยังต้องดำเนินการ Rebaseall ในโหมด Ash ของ Cywgin ขั้นตอนมีดังนี้:
. บรรทัดคำสั่ง cmd
ข. ป้อนไดเรกทอรีย่อย bin ภายใต้ไดเรกทอรีการติดตั้ง Cygwin
ค. เรียกใช้เถ้าเพื่อเข้าสู่โหมดเชลล์
d. ./rebaseall -v
ก. ปิดหน้าต่างบรรทัดคำสั่งโดยไม่มีข้อผิดพลาด
ตกลงตอนนี้ถึงเวลาดาวน์โหลดและติดตั้งโหนดแล้วเริ่ม cygwin.exe แล้วป้อน:
การคัดลอกรหัสมีดังนี้:
$ wget http://nodejs.org/dist/node-v0.4.12.tar.gz
$ tar xf node-v0.4.12.tar.gz
$ cd node-v0.4.12
$./กำหนดค่า
$ make
$ ทำให้ติดตั้ง
3. ไฟล์ DOWNLOAD NODE.EXE โดยตรง
ไปที่ nodejs.org โดยตรงเพื่อดาวน์โหลด ฉันได้ยินมาว่ามีปัญหาที่ไม่แน่นอน แต่ถ้าคุณต้องการเรียนรู้เกี่ยวกับโหนดใน Windows ก่อนฉันรู้สึกว่าวิธีนี้ดีกว่าการติดตั้ง Cygwin มาก
หมายเหตุ: ฉันไม่ต้องการเขียนย่อหน้าของการติดตั้งโหนด แต่ฉันยังคงเขียนไว้เพื่อความครอบคลุมของบทความนี้ ฉันไม่ได้คาดหวังว่ามันจะตราบเท่าที่ฉันเขียนมัน ... มันเป็นโต๊ะกาแฟ
"สวัสดีโลก" - ทำไมฉันถึงรู้สึกตื่นเต้นเล็กน้อยทุกครั้งที่เห็นประโยคนี้และฉันก็งงงวย ...
ก่อนอื่นให้สร้างไฟล์ hello.js และคัดลอกรหัสต่อไปนี้ในไฟล์:
การคัดลอกรหัสมีดังนี้:
var http = ต้องการ ('http');
http.createserver (ฟังก์ชั่น (req, res) {
res.writehead (200, {'content-type': 'text/plain'});
Res.end ('Hello World/N');
}) ฟัง (1337, "127.0.0.1");
console.log ('เซิร์ฟเวอร์ทำงานที่ http://127.0.0.1:1337/');
รหัสลอจิก:
. วิธีการทั่วโลกต้องการ () ใช้ในการนำเข้าโมดูล โดยทั่วไปค่าส่งคืนของวิธีการที่ต้องการ () ถูกกำหนดให้กับตัวแปรโดยตรงและตัวแปรนี้ใช้โดยตรงในรหัส JavaScript ต้องการ ("http") คือการโหลดโมดูล http ที่ตั้งไว้ล่วงหน้าของระบบ
ข. http.createserver เป็นวิธีการของโมดูลวัตถุประสงค์คือการสร้างและส่งคืนวัตถุเว็บเซิร์ฟเวอร์ใหม่และผูกกลับไปยังบริการเพื่อจัดการคำขอ
ค. เซิร์ฟเวอร์ HTTP สามารถฟังได้ในพอร์ตเฉพาะผ่านวิธี http.listen ()
d. console.log ไม่จำเป็นต้องพูดผู้ที่รู้ว่า Firebug ควรรู้ว่าโหนดใช้วิธีนี้
หมายเหตุ: สำหรับรายละเอียดเฉพาะโปรดตรวจสอบเอกสาร cnodejs.org/cman/all.html#http.createserver
จากนั้นเรียกใช้เซิร์ฟเวอร์โหนดเรียกใช้รหัส hello.js และหลังจากเริ่มต้นสำเร็จคุณจะเห็นข้อความใน console.log () มีรูปภาพและความจริง:
ดาวน์โหลดและใช้ NPM
นอกเหนือจาก API ที่จัดทำโดย Node เองตอนนี้มีโมดูลบุคคลที่สามจำนวนมากที่สามารถปรับปรุงประสิทธิภาพการพัฒนาได้อย่างมาก NPM เป็นตัวจัดการแพ็คเกจของ Node ซึ่งสามารถใช้เพื่อติดตั้งแพ็คเกจซอฟต์แวร์ที่จำเป็นและเผยแพร่แพ็คเกจซอฟต์แวร์ที่เขียนขึ้นสำหรับ NodeJS ที่อยู่เว็บไซต์อย่างเป็นทางการ: npmjs.org
การติดตั้งจะต้องมีการเขียนรหัสหนึ่งบรรทัดในเทอร์มินัลเท่านั้น:
การคัดลอกรหัสมีดังนี้:
curl http://npmjs.org/install.sh | SH
NPM ติดตั้งแพ็คเกจส่วนขยายโหนดที่มีรหัสบรรทัดเดียวกัน:
การคัดลอกรหัสมีดังนี้:
NPM ติดตั้ง <ชื่อแพ็คเกจ> // ตัวอย่าง: NPM ติดตั้ง Express
หมายเหตุ: หากมีการรายงานข้อผิดพลาดชื่อโดเมนในระหว่างการติดตั้งโมดูลโปรดล้างแคช> แคช NPM ทำความสะอาดหรือรีสตาร์ทคอมพิวเตอร์
ทำความเข้าใจแนวคิดโมดูลของโหนด
ในโหนดส่วนประกอบการทำงานที่แตกต่างกันแบ่งออกเป็นโมดูลที่แตกต่างกัน แอปพลิเคชันสามารถเลือกและใช้โมดูลที่เหมาะสมตามความต้องการ แต่ละโมดูลจะเปิดเผยวิธีการทั่วไปหรือแอตทริบิวต์ ผู้ใช้โมดูลสามารถใช้วิธีการหรือคุณลักษณะเหล่านี้โดยตรงและไม่จำเป็นต้องเข้าใจรายละเอียดการใช้งานภายใน นอกเหนือจาก API ที่จัดทำโดย Node เองนักพัฒนายังสามารถใช้กลไกนี้เพื่อแยกแอปพลิเคชันออกเป็นหลายโมดูลเพื่อปรับปรุงการใช้รหัสซ้ำ
1. จะใช้โมดูลอย่างไร?
สะดวกมากในการใช้โมดูลในโหนด ในรหัส JavaScript คุณสามารถใช้ฟังก์ชั่นส่วนกลางได้โดยตรง () เพื่อโหลดโมดูล
ในตัวอย่าง "Hello World" ตอนนี้ต้องการ ("HTTP") สามารถโหลดโมดูล HTTP ที่ตั้งไว้ล่วงหน้าของระบบได้ ชื่อโมดูลเริ่มต้นด้วย "./" เช่นต้องการ ("./ mymodule.js") เพื่อโหลดโมดูล mymodule.js ในไดเรกทอรีเดียวกันกับไฟล์ JavaScript ปัจจุบัน
2. จะพัฒนาโมดูลด้วยตัวเองอย่างไร?
เมื่อฉันเพิ่งแนะนำว่าเมื่อใช้ต้องการ () เพื่อนำเข้าโมดูลชื่อโมดูลเริ่มต้นด้วย "./" เป็นไฟล์โมดูลที่ฉันพัฒนาขึ้นด้วยตัวเอง สิ่งที่คุณต้องใส่ใจคือเส้นทางระบบของไฟล์ JS
ตรรกะการประมวลผลภายในของโมดูลถูกห่อหุ้มในรหัส โมดูลมักจะเปิดเผยวิธีการสาธารณะหรือคุณลักษณะบางอย่างสำหรับคนอื่น ๆ ที่จะใช้ รหัสภายในของโมดูลจำเป็นต้องเปิดเผยวิธีการหรือคุณลักษณะเหล่านี้
3. ลองใช้ชุดตัวอย่างง่ายๆ ก่อนอื่นสร้างไฟล์โมดูลเช่น mymodule.js เพียงหนึ่งบรรทัดของรหัส
console.log ('สวัสดี Darren')
จากนั้นสร้างไฟล์ test.js นำเข้าไฟล์ JS นี้และเรียกใช้โหนดเพื่อดูผลลัพธ์
ตอนนี้มีโมดูลของบุคคลที่สามในชุมชนโหนด ฉันหวังว่าผู้คนจำนวนมากสามารถเข้าร่วมครอบครัวใหญ่นี้ได้ด้วยการเรียนรู้โหนดและมีส่วนร่วมในชุมชนโหนด ขอบคุณล่วงหน้าขอดำเนินการต่อกัน
4. เป็นตัวอย่างที่ลึกซึ้งยิ่งขึ้น ในตัวอย่างนี้จะมีการแนะนำส่วนตัวและการแบ่งปัน ก่อนอื่นสร้าง mymodule.js รหัสมีดังนี้:
การคัดลอกรหัสมีดังนี้:
ชื่อ var = "Darren";
this.location = "ปักกิ่ง";
this.showlog = function () {
console.log ('สวัสดี Darren')
-
มีสามประเภทในรหัสคือ: คุณลักษณะส่วนตัวแอตทริบิวต์ที่ใช้ร่วมกันและวิธีการที่ใช้ร่วมกันจากนั้นสร้าง test.js และเรียกใช้โหนด
พื้นที่ที่ถูกไฮไลต์บอกเราอย่างชัดเจนว่าเราไม่สามารถรับวิธีการส่วนตัวนอกโมดูลได้ดังนั้นจึงไม่ได้กำหนด การประกาศแอตทริบิวต์ที่ใช้ร่วมกันและวิธีการที่ใช้ร่วมกันจะต้องนำหน้าด้วยคำหลักนี้
โหนดสามารถทำอะไรได้และข้อดีของมัน
แนวคิดหลักของโหนด: 1. การไม่ปิดกั้น; 2. เธรดเดี่ยว; 3. ขับเคลื่อนเหตุการณ์
ในเว็บแอปพลิเคชันปัจจุบันการโต้ตอบบางอย่างระหว่างไคลเอนต์และเซิร์ฟเวอร์สามารถพิจารณาได้ว่าอิงตามเหตุการณ์ดังนั้น AJAX จึงเป็นกุญแจสำคัญในการตอบสนองที่เหมาะสมของหน้าเว็บ ทุกครั้งที่มีการส่งคำขอ (ไม่ว่าข้อมูลที่ร้องขอจะเล็กเพียงใด) มันจะกลับไปกลับมาบนเครือข่าย เซิร์ฟเวอร์จะต้องตอบสนองต่อคำขอนี้โดยปกติจะเปิดกระบวนการใหม่ จากนั้นผู้ใช้มากขึ้นเยี่ยมชมหน้านี้ยิ่งมีการร้องขอมากขึ้นและจะมีปัญหาเช่นหน่วยความจำล้นความขัดแย้งที่เกิดจากการเชื่อมโยงเชิงตรรกะอัมพาตเครือข่ายและระบบล่ม
เป้าหมายของโหนดคือการจัดหาโซลูชันเพื่อสร้างแอปพลิเคชันเครือข่ายที่ปรับขนาดได้ ในตัวอย่าง Hello World เซิร์ฟเวอร์สามารถจัดการการเชื่อมต่อไคลเอนต์จำนวนมากในเวลาเดียวกัน
โหนดและระบบปฏิบัติการมีการประชุมว่าหากมีการสร้างลิงค์ใหม่ระบบปฏิบัติการจะแจ้งโหนดแล้วไปที่ไฮเบอร์เนต หากมีคนสร้างลิงก์ใหม่แล้วมัน (โหนด) จะเรียกใช้การโทรกลับแต่ละลิงค์จะใช้ค่าสแต็กขนาดเล็ก (หน่วยความจำ) ที่เล็กมากเท่านั้น
ทำตัวอย่างง่ายๆของการโทรแบบอะซิงโครนัสเตรียมทดสอบ js และ mymydule.js, ^_ ^ คัดลอกรหัสต่อไปนี้ลงใน test.js และดำเนินการ:
การคัดลอกรหัสมีดังนี้:
var fs = ต้องการ ('fs');
fs.readfile ('./ mymodule.js', ฟังก์ชั่น (err, data) {
ถ้า (err) โยน err;
console.log ('สำเร็จ');
-
console.log ('async');
อะซิงโครนัสทุกคนควรจะสามารถคิดได้ว่ารันไทม์จะแสดง "async" ก่อนแล้ว "ประสบความสำเร็จ"
โหนดไม่ปิดกั้นและเมื่อคำขอใหม่มาถึงเซิร์ฟเวอร์ไม่จำเป็นต้องทำอะไรแยกต่างหากสำหรับคำขอนี้ โหนดกำลังรอคำขอที่จะเกิดขึ้นที่นั่นและจัดการคำขอหากมีคำขอ
โหนดดีกว่าในการจัดการคำขอขนาดเล็กและ I/O ตามเหตุการณ์
โหนดไม่ได้เป็นเพียงกรอบการทำงานสำหรับการทำเว็บบริการ แต่สามารถทำอะไรได้มากกว่าเช่นสามารถทำบริการซ็อกเก็ตได้เช่นไฟล์ที่ใช้ไฟล์และจากนั้นจากตัวอย่างบางส่วนอาจมีกระบวนการเด็กและภายในมันเป็นกลไกเหตุการณ์ที่สมบูรณ์มาก ในเวลาเดียวกันมันอาจเป็นบริการเว็บให้ฟังก์ชั่นเพิ่มเติมที่สามารถแทรกซึมเข้าไปในเคอร์เนลบริการและคอร์ ตัวอย่างเช่นเอเจนต์ HTTP ที่ใช้โดยโหนดคือมันสามารถเจาะเข้าไปในเคอร์เนลบริการและทำฟังก์ชั่นบางอย่าง
แนวคิดการไหลของเหตุการณ์โหนด
เนื่องจากโหนดใช้โหมดที่ขับเคลื่อนด้วยเหตุการณ์โมดูลจำนวนมากจะสร้างเหตุการณ์ต่าง ๆ และโมดูลสามารถเพิ่มวิธีการประมวลผลเหตุการณ์ วัตถุทั้งหมดที่สามารถสร้างเหตุการณ์เป็นอินสแตนซ์ของคลาส Eventemitter ในโมดูลเหตุการณ์ รหัสเป็นภาษาทั่วไปทั่วโลกดังนั้นเรายังคงใช้รหัสเพื่อพูด:
การคัดลอกรหัสมีดังนี้:
เหตุการณ์ var = ต้องการ ("เหตุการณ์");
var emitter = เหตุการณ์ใหม่ eventemitter ();
emitter.on ("MyEvent", ฟังก์ชั่น (msg) {
console.log (ผงชูรส);
-
emitter.emit ("MyEvent", "Hello World.");
การวิเคราะห์สั้น ๆ ของย่อหน้านี้:
1. ใช้วิธีการที่ต้องการ () เพื่อเพิ่มโมดูลเหตุการณ์และกำหนดค่าส่งคืนให้กับตัวแปร
2. เหตุการณ์ใหม่ EVENTEMITTER () ประโยคสร้างทริกเกอร์เหตุการณ์ซึ่งเป็นอินสแตนซ์ที่เรียกว่าคลาส Eventemitter ในโมดูลเหตุการณ์
3. ON (Event, Listener) ใช้เพื่อเพิ่มตัวจัดการเหตุการณ์ในเหตุการณ์เหตุการณ์เหตุการณ์
4. การปล่อยออกมา (เหตุการณ์, [arg1], [arg2], [... ]) ใช้วิธีการสร้างเหตุการณ์ ฟังก์ชั่นผู้ฟังแต่ละรายการในรายการผู้ฟังจะถูกดำเนินการตามลำดับด้วยพารามิเตอร์ที่มีให้เป็นพารามิเตอร์ของฟังก์ชันฟัง
วิธีการในคลาส Eventemitter เกี่ยวข้องกับการสร้างและการประมวลผลเหตุการณ์:
1. AddListener (เหตุการณ์, ผู้ฟัง) และบน (เหตุการณ์, ผู้ฟัง) เป็นทั้งสองวิธีที่เพิ่มผู้ฟังไปยังจุดสิ้นสุดของอาร์เรย์ฟังของเหตุการณ์ที่ระบุ
2. ครั้งหนึ่ง (เหตุการณ์ผู้ฟัง) วิธีนี้เพิ่มผู้ฟังครั้งเดียวสำหรับกิจกรรม ผู้ฟังจะถูกดำเนินการเมื่อเหตุการณ์ถูกไล่ออกเป็นครั้งแรกและจะถูกลบออกหลังจากนั้น
3. RemoveListener (Event, Listener) วิธีนี้ใช้เพื่อลบผู้ฟังออกจากอาร์เรย์ฟังของเหตุการณ์ที่ระบุ
4. emit (เหตุการณ์, [arg1], [arg2], [... ]) เพิ่งพูดถึง
ในโหนดมีสตรีมข้อมูลที่แตกต่างกันและสตรีมเป็นอินเทอร์เฟซนามธรรมที่นำมาใช้โดยวัตถุที่แตกต่างกัน ตัวอย่างเช่นคำขอที่จะขอเซิร์ฟเวอร์ HTTP เป็นสตรีมคล้ายกับ stdout (เอาต์พุตมาตรฐาน); รวมถึงระบบไฟล์การร้องขอและการตอบสนอง HTTP และการเชื่อมต่อ TCP/UDP สตรีมสามารถอ่านได้เขียนได้หรือสามารถอ่านได้และเขียนได้ สตรีมทั้งหมดเป็นอินสแตนซ์ของ Eventemitter ดังนั้นสามารถสร้างเหตุการณ์ต่าง ๆ ได้
สตรีมที่อ่านได้ส่วนใหญ่จะสร้างเหตุการณ์ต่อไปนี้:
1.Data เหตุการณ์นี้จะถูกทริกเกอร์เมื่ออ่านข้อมูลในสตรีม
2. สิ้นสุดเมื่อไม่มีข้อมูลในสตรีมที่จะอ่านเหตุการณ์นี้จะถูกทริกเกอร์
3. ข้อผิดพลาดเหตุการณ์นี้จะถูกทริกเกอร์เมื่อเกิดข้อผิดพลาดเมื่ออ่านข้อมูล
4.close เมื่อสตรีมปิดเหตุการณ์นี้จะถูกทริกเกอร์ แต่สตรีมทั้งหมดจะไม่เรียกเหตุการณ์นี้ (ตัวอย่างเช่นสตรีมคำขอ HTTP ที่เข้ามาในการเชื่อมต่อจะไม่ทริกเกอร์เหตุการณ์ 'ปิด')
นอกจากนี้ยังมีเหตุการณ์ FD พิเศษมากขึ้นซึ่งจะถูกเรียกใช้เมื่อได้รับตัวอธิบายไฟล์ในสตรีม เฉพาะสตรีม UNIX เท่านั้นที่รองรับคุณสมบัตินี้และไม่มีสตรีมประเภทอื่น ๆ ที่จะกระตุ้นเหตุการณ์นี้
เอกสารโดยละเอียดที่เกี่ยวข้อง: http://cnodejs.org/cman/all.html#events_
โมดูลระบบไฟล์ระบบไฟล์ที่มีประสิทธิภาพ
โมดูล FS ในโหนดใช้ในการทำงานในระบบไฟล์ท้องถิ่น I/O ของไฟล์ถูกห่อหุ้มด้วยฟังก์ชั่น POSIX มาตรฐาน โมดูลนี้ต้องเข้าถึงโดยใช้ต้องการ ('fs') วิธีการทั้งหมดให้วิธีการแบบอะซิงโครนัสและซิงโครนัส
วิธีการที่มีให้ในโมดูล FS สามารถใช้ในการดำเนินการไฟล์พื้นฐานรวมถึงการอ่านการเขียนการเปลี่ยนชื่อการสร้างและการลบไดเรกทอรีและการได้รับข้อมูลเมตาไฟล์ แต่ละวิธีการใช้งานไฟล์มีสองเวอร์ชัน: รุ่นซิงโครนัสและแบบอะซิงโครนัส
เวอร์ชันของการดำเนินการแบบอะซิงโครนัสจะใช้วิธีการโทรกลับเป็นพารามิเตอร์สุดท้าย เมื่อการดำเนินการเสร็จสมบูรณ์วิธีการโทรกลับจะถูกเรียก พารามิเตอร์แรกของวิธีการโทรกลับถูกสงวนไว้เสมอเป็นข้อยกเว้นที่อาจเกิดขึ้นระหว่างการดำเนินการ หากการดำเนินการถูกต้องและประสบความสำเร็จค่าของพารามิเตอร์แรกจะเป็นโมฆะหรือไม่ได้กำหนด
ชื่อวิธีการของเวอร์ชันการทำงานแบบซิงโครนัสคือการเพิ่มการซิงค์เป็นคำต่อท้ายหลังจากวิธีการแบบอะซิงโครนัสที่สอดคล้องกัน ตัวอย่างเช่นรุ่นซิงโครนัสของวิธีการเปลี่ยนชื่อแบบอะซิงโครนัส () คือ renamesync () แสดงรายการวิธีการทั่วไปบางอย่างในโมดูล FS และแนะนำเฉพาะเวอร์ชันของการดำเนินการแบบอะซิงโครนัส
ไฟล์ test.js และ mymodule.js พร้อมหรือยัง? คัดลอกรหัสต่อไปนี้ลงใน test.js หนึ่งครั้ง
การคัดลอกรหัสมีดังนี้: var fs = ต้องการ ('fs');fs.unlink ('./ mymodule.js', ฟังก์ชั่น (err) {
ถ้า (err) โยน err;
console.log ('ลบ mymodule.js' สำเร็จแล้ว ');
-
หากไม่มีข้อผิดพลาด MyModule.js จะถูกลบ มันง่ายขนาดนั้น
นี่เป็นเพียงตัวอย่างง่ายๆ หากคุณสนใจลองใช้ตัวเองและฝึกฝนความจริง เนื่องจากเหตุผลด้านพื้นที่ฉันจะไม่ยกตัวอย่างมากมาย -
บทสรุปของโหนดการเรียนรู้:
1. สำหรับฉันที่มีความรู้เกือบเป็นศูนย์เกี่ยวกับคำสั่งและเชลล์ Linux ฉันได้เรียนรู้ความรู้มากมายเกี่ยวกับ Linux ในช่วงเวลานี้ Vim เป็นบรรณาธิการที่ทรงพลังและรู้สึกดีจริงๆที่ไม่ใช้เมาส์ และสิ่งหนึ่งที่สำคัญมากสำหรับฉัน การเขียนโปรแกรมภายใต้ Linux นั้นยอดเยี่ยมมากโดยเฉพาะในทีมซึ่งใช้ในการติดตั้งสุขภาพที่ดีขึ้น^_^
2. เข้าใจกรอบที่ประสบความสำเร็จสำหรับ JavaScript ฝั่งเซิร์ฟเวอร์ - โหนดรวมถึงข้อดีและการใช้งานบางอย่างบทความนี้เป็นบทสรุปที่ดีที่สุดแน่นอนว่านี่จะเป็นจุดเริ่มต้นเท่านั้น
บางสิ่งที่จะพูดกับทุกคน:
1. ฉันต้องตีความกระตือรือร้นของคนที่นี่ หากคุณไม่ทราบเกี่ยวกับเทคโนโลยีแบ็กเอนด์หรือไม่เคยสัมผัสกับภาษาเซิร์ฟเวอร์ไม่ทราบเกี่ยวกับ I/O และไม่มีแนวคิดของการประมวลผลแบ็กเอนด์แล้ว ... โหนดไม่ใช่เทคโนโลยีฝั่งเซิร์ฟเวอร์ที่เหมาะสำหรับระดับเริ่มต้น ทำไมคุณถึงพูดอย่างนั้น:
. ประเด็นสำคัญคือมีตัวอย่างและบทความเป็นภาษาจีนดังนั้นจึงเป็นเรื่องยากที่จะเรียนรู้อย่างเป็นระบบดังนั้นจึงมีความรู้สึกที่ยังไม่บรรลุนิติภาวะในระหว่างการใช้งานแน่นอนว่ามันเกิดจากความไม่คุ้นเคยของฉันเป็นหลัก มี บริษัท ไม่กี่แห่งที่ใช้โหนดในประเทศจีนและแน่นอนว่ายังมีอีกหลายแห่งในต่างประเทศ ฉันถ่ายรูปจาก cnodejs.org:
3. จริง ๆ แล้วฉันเสียใจที่ไม่ได้เข้าสู่ บริษัท ที่ฝันถึง แต่ชีวิตควรเป็นเช่นนี้ด้วยการขึ้น ๆ ลง ๆ ซึ่งเป็นสิ่งที่ฉันต้องการและคาดหวัง ... จากนั้นฉันยังต้องดำเนินชีวิตใหม่ต่อไป
ข. สำหรับเพื่อนที่ไม่มีประสบการณ์โหนดไม่ใช่เรื่องง่ายที่จะเริ่มต้น จะเห็นได้จาก "Hello World" ที่ง่ายที่สุด (ความเข้าใจในสภาพแวดล้อมการทำงานที่หลากหลายและรายละเอียดการติดตั้งต้องใช้ความพยายาม) อย่าเปรียบเทียบไลบรารี jQuery สิ่งที่จัดการนั้นแตกต่างกันและค่าใช้จ่ายในการเรียนรู้ก็แตกต่างกัน ดังนั้นจึงไม่แนะนำให้เป็นเทคโนโลยีฝั่งเซิร์ฟเวอร์สำหรับผู้เริ่มต้น หากคุณต้องการเรียนรู้ภาษา PHP และ Python ด้านภาษาเซิร์ฟเวอร์มันเป็นตัวเลือกที่ดีเพราะ: มีหนังสือตัวอย่างมากมายกรอบหลายเฟรมและหลาย ๆ มือที่เรียบง่ายและเข้าใจง่ายและสร้าง ...
C. ข้างต้นเป็นคำแนะนำส่วนตัวของฉัน เนื่องจากระดับที่ จำกัด ของฉันโปรดให้คำแนะนำและหวังว่าจะเป็นคนไร้ความปราณี
2. ฉันไม่น่าเกลียดเกี่ยวกับมาตรฐานการเขียนโหนดและทักษะเฉพาะ ฉันไม่มีรหัสมากนักที่จะเขียนโหนดด้วยตัวเอง แต่แนวคิดการเขียนโปรแกรมเชิงวัตถุนั้นดีทุกที่
3. ฉันหวังว่าบทความนี้จะเป็นประโยชน์สำหรับทุกคนในการเรียนรู้โหนด