แร่ใยหิน longjohns ...
เมื่อวานนี้ชื่อของฉันกับ Packt สิ่งพิมพ์, การเขียนโปรแกรมปฏิกิริยากับ JavaScript มันไม่ได้เป็นชื่อจริงของ Node.js บทแรกมีวัตถุประสงค์เพื่อให้ครอบคลุมทฤษฎีและบทต่อ ๆ มาของรหัสที่หนักครอบคลุมการฝึกปฏิบัติ เพราะผมไม่ได้คิดว่ามันจะมีความเหมาะสมที่จะล้มเหลวเพื่อให้ผู้อ่านเว็บเซิร์ฟเวอร์, Node.js ดูเหมือนไกลโดยทางเลือกที่ชัดเจน กรณีถูกปิดก่อนที่จะเปิดได้
ฉันได้เห็นมุมมองที่สดใสของประสบการณ์ของฉันกับ Node.js แต่ฉันเป็นคนซื่อสัตย์เกี่ยวกับคะแนนที่ดีและคะแนนที่ไม่ดีที่ฉันพบ
ให้ฉันรวมคำพูดไม่กี่คำที่เกี่ยวข้องที่นี่:
คำเตือน: Node.js และระบบนิเวศของมันร้อน - ร้อนพอที่จะเผาคุณไม่ดี!
เมื่อฉันเป็นผู้ช่วยครูในวิชาคณิตศาสตร์หนึ่งในคำแนะนำที่ไม่ชัดเจนที่ฉันได้รับการบอกคือไม่บอกนักเรียนว่ามีบางอย่าง "ง่าย" เหตุผลค่อนข้างชัดเจนในการหวนกลับ: ถ้าคุณบอกคนอื่นว่าเป็นเรื่องง่ายใครบางคนที่ไม่เห็นวิธีแก้ปัญหาอาจกลายเป็นความรู้สึกที่โง่เขลามากยิ่งขึ้นเพราะไม่เพียง แต่พวกเขาไม่ได้รับวิธีการแก้ปัญหา แต่ปัญหา พวกเขาโง่เกินกว่าที่จะเข้าใจว่าเป็นคนง่าย!
มี gotchas ที่ไม่เพียง แต่รบกวนผู้คนที่มาจาก Python / Django ซึ่งจะโหลดแหล่งที่มาทันทีหากคุณเปลี่ยนแปลงอะไร ด้วย Node.js พฤติกรรมเริ่มต้นคือถ้าคุณทำการเปลี่ยนแปลงหนึ่งเวอร์ชันเก่าจะยังคงใช้งานได้จนกว่าจะหมดเวลาหรือจนกว่าคุณจะหยุดและรีสตาร์ทเซิร์ฟเวอร์ด้วยตนเอง พฤติกรรมที่ไม่เหมาะสมนี้ไม่เพียงรบกวน Pythonistas เท่านั้น นอกจากนี้ยังทำให้ผู้ใช้ Node.js ดั้งเดิมที่ทำให้เกิดปัญหาต่าง ๆ คำถาม StackOverflow“ การโหลดไฟล์ซ้ำอัตโนมัติใน Node.js” ในขณะที่เขียนนี้มีผู้อัปโหลดมากกว่า 200 คนและ 19 คำตอบ การแก้ไขจะชี้นำผู้ใช้ไปยังสคริปต์พี่เลี้ยง, node-supervisor พร้อมโฮมเพจที่http://tinyurl.com/reactjs-node-supervisor. ปัญหานี้กำบังผู้ใช้ใหม่ที่มีโอกาสที่ดีที่จะรู้สึกโง่เพราะพวกเขาคิดว่าพวกเขาได้แก้ไขปัญหาแล้ว แต่พฤติกรรมรถบั๊กเก่าไม่เปลี่ยนแปลงอย่างสมบูรณ์ และง่ายต่อการลืมเด้งเซิร์ฟเวอร์ ฉันทำมาหลายครั้งแล้ว และข้อความที่ฉันต้องการจะบอกคือ“ ไม่คุณไม่ใช่คนโง่เพราะพฤติกรรมของ Node.js กัดหลังของคุณ เป็นเพียงการที่นักออกแบบของ Node.js ไม่เห็นเหตุผลที่จะแสดงพฤติกรรมที่เหมาะสมที่นี่ พยายามรับมือกับมันบางทีใช้ความช่วยเหลือเล็กน้อยจากโหนดผู้ดูแลหรือวิธีแก้ไขปัญหาอื่น ๆ แต่โปรดอย่าเดินออกไปรู้สึกว่าคุณโง่ คุณไม่ใช่คนที่มีปัญหา ปัญหาอยู่ในพฤติกรรมเริ่มต้นของ Node.js”
ส่วนนี้หลังจากการอภิปรายถูกทิ้งไว้อย่างแม่นยำเพราะฉันไม่ต้องการให้ความรู้สึกของ“ มันง่าย” ฉันตัดมือของฉันซ้ำ ๆ ในขณะที่ทำให้สิ่งต่าง ๆ ทำงานและฉันก็ไม่ต้องการที่จะแก้ไขปัญหาให้ราบรื่นและทำให้คุณเชื่อว่าการได้รับ Node.js และระบบนิเวศน์ของมันเพื่อการทำงานที่ดีนั้นเป็นเรื่องที่ตรงไปตรงมา คุณไม่รู้ว่าคุณกำลังทำอะไรอยู่ หากคุณไม่พบปัญหาที่น่าสะพรึงกลัวในการใช้ Node.js มันวิเศษมาก ถ้าคุณทำฉันก็หวังว่าคุณจะไม่เดินออกไปจากความรู้สึก“ ฉันงี่เง่า - ต้องมีบางอย่างผิดปกติกับฉัน” คุณจะไม่โง่ถ้าคุณประสบกับความประหลาดใจที่น่ารังเกียจเกี่ยวกับ Node.js มันไม่ใช่คุณ! มันคือ Node.js และระบบนิเวศของมัน!
ภาคผนวกที่ฉันไม่ต้องการจริง ๆ หลังจาก crescendo ที่เพิ่มขึ้นในบทสุดท้ายและบทสรุปพูดถึงสิ่งที่ฉันสามารถพบได้ในระบบนิเวศ
ฐานข้อมูลอื่นที่ดูเหมือนว่าลงตัวพอดีและอาจแลกได้คือการใช้งานฝั่งเซิร์ฟเวอร์ของที่เก็บคีย์ - ค่า HTML5 วิธีการนี้มีข้อได้เปรียบที่สำคัญของ API ซึ่งนักพัฒนาส่วนใหญ่ที่ดีเข้าใจดีพอ สำหรับเรื่องนั้นก็เป็น API ที่นักพัฒนาส่วนหน้าไม่ดีส่วนใหญ่เข้าใจดีพอ แต่ด้วยแพ็คเกจ node-localstorage ในขณะที่ไม่มีการเข้าถึงพจนานุกรม - ไวยากรณ์ (คุณต้องการใช้ localStorage.setItem (key, value) หรือ localStorage.getItem (key) ไม่ใช่ localStorage [key]) จะใช้ semantics แบบเต็ม localStorage รวมถึงโควต้า 5MB เริ่มต้น - ทำไมล่ะ ผู้พัฒนา JavaScript ฝั่งเซิร์ฟเวอร์จำเป็นต้องได้รับการปกป้องจากตนเองหรือไม่?
สำหรับความสามารถด้านฐานข้อมูลของลูกค้าโควต้า 5MB ต่อเว็บไซต์นั้นเป็นจำนวนห้องพักที่ดีและมีประโยชน์มาก ๆ เพื่อให้นักพัฒนาสามารถทำงานได้ คุณสามารถกำหนดโควต้าที่ต่ำกว่าได้มากและยังคงให้การพัฒนาที่ไม่สามารถวัดผลได้เกินกว่าการคลานพร้อมกับการจัดการคุกกี้ ขีด จำกัด 5MB นั้นไม่ได้ให้ความสำคัญกับการประมวลผลฝั่งไคลเอ็นต์ของ Big Data อย่างรวดเร็ว แต่มีค่าเผื่อค่อนข้างมากที่นักพัฒนาซอฟต์แวร์สามารถใช้ในการทำสิ่งต่างๆมากมาย แต่ในทางกลับกัน 5MB ไม่ได้เป็นส่วนใหญ่โดยเฉพาะอย่างยิ่งดิสก์ส่วนใหญ่ที่ซื้อมาเมื่อเร็ว ๆ นี้ซึ่งหมายความว่าถ้าคุณและเว็บไซต์ไม่เห็นด้วยเกี่ยวกับสิ่งที่การใช้พื้นที่ดิสก์อย่างสมเหตุสมผล คุณมากและคุณจะไม่ได้รับอันตรายจากฮาร์ดไดรฟ์ล้นมือหากฮาร์ดไดรฟ์ของคุณเต็มแล้ว
อย่างไรก็ตามมันอาจชี้ให้เห็นอย่างนุ่มนวลว่าเมื่อคุณเป็นหนึ่งในรหัสการเขียนสำหรับเซิร์ฟเวอร์ของคุณคุณไม่ต้องการการป้องกันเพิ่มเติมใด ๆ จากการสร้างฐานข้อมูลของคุณมากกว่าขนาด 5MB ที่สามารถทนได้ นักพัฒนาส่วนใหญ่ไม่ต้องการหรือไม่ต้องการเครื่องมือที่ทำหน้าที่เป็นพี่เลี้ยงและปกป้องพวกเขาจากการจัดเก็บข้อมูลฝั่งเซิร์ฟเวอร์มากกว่า 5MB และโควต้า 5MB ที่เป็นการปรับสมดุลสีทองบนฝั่งไคลเอ็นต์ค่อนข้างจะค่อนข้างโง่บนเซิร์ฟเวอร์ Node.js (และสำหรับฐานข้อมูลสำหรับผู้ใช้หลายคนเช่นที่กล่าวถึงในภาคผนวกนี้อาจมีการชี้ให้เห็นอย่างเจ็บปวดเล็กน้อยว่านั่นไม่ใช่ 5MB ต่อบัญชีผู้ใช้เว้นแต่คุณจะสร้างฐานข้อมูลแยกต่างหากบนดิสก์สำหรับแต่ละบัญชีผู้ใช้ บัญชีผู้ใช้ทั้งหมดเข้าด้วยกันซึ่งอาจเจ็บปวดถ้าคุณไปไวรัส!) เอกสารระบุว่าโควต้าสามารถปรับแต่งได้ แต่อีเมลเมื่อสัปดาห์ที่ผ่านมาถึงนักพัฒนาที่ถามวิธีการเปลี่ยนโควต้าที่ยังไม่ได้ตอบเช่นเดียวกับคำถาม StackOverflow ถามเดียวกัน คำตอบเดียวที่ฉันสามารถหาได้คืออยู่ในแหล่ง Github CoffeeScript โดยที่มันถูกระบุว่าเป็นอาร์กิวเมนต์เลขจำนวนเต็มตัวที่สองที่เป็นทางเลือกของตัวสร้าง ง่ายพอและคุณสามารถระบุโควต้าเท่ากับขนาดดิสก์หรือพาร์ติชัน แต่นอกเหนือจากการพอร์ตคุณสมบัติที่ไม่สมเหตุสมผลผู้เขียนเครื่องมือก็ล้มเหลวอย่างสมบูรณ์ในการปฏิบัติตามแบบแผนมาตรฐานของการตีความ 0 ว่าหมายถึง“ ไม่ จำกัด ” สำหรับตัวแปรหรือฟังก์ชั่นที่จำนวนเต็มคือการระบุขีด จำกัด สูงสุดสำหรับการใช้ทรัพยากรบางอย่าง สิ่งที่ดีที่สุดที่จะทำอย่างไรกับความผิดพลาดนี้อาจเป็นการระบุว่าโควต้านั้นไม่มีที่สิ้นสุด:
if (typeof localStorage === 'undefined' || localStorage === null)
{
var LocalStorage = require('node-localstorage').LocalStorage;
localStorage = new LocalStorage(__dirname + '/localStorage',
Infinity);
}
การสลับสองความคิดเห็นตามลำดับ:
ผู้คนยิงตัวเองอย่างไม่จำเป็นโดยใช้ JavaScript โดยรวมและส่วนหนึ่งของ JavaScript ที่ทำให้ภาษาที่น่านับถือคือ Douglas Crockford กล่าวโดยสรุปว่า“ JavaScript เป็นภาษาที่มีบางส่วนที่ดีจริงๆและบางส่วนที่ไม่ดี นี่คือส่วนที่ดี แค่ลืมว่าไม่มีอะไรอีกแล้ว” บางทีระบบนิเวศของ Node.js ที่ร้อนแรงอาจจะเติบโตขึ้นเอง “ Douglas Crockford” ซึ่งจะกล่าวว่า“ ระบบนิเวศของ Node.js นั้นเป็นรหัส Wild West แต่มีอัญมณีจริงบางอย่างที่จะพบ นี่คือแผนงาน นี่คือพื้นที่ที่จะหลีกเลี่ยงค่าใช้จ่ายใด ๆ นี่คือพื้นที่ที่มีคนรวยที่สุดคนหนึ่งที่สามารถพบได้ในภาษาหรือสภาพแวดล้อมใด ๆ ”
บางทีคนอื่นอาจใช้คำเหล่านั้นเป็นสิ่งที่ท้าทายและทำตามคำนำของ Crockford และเขียน“ ส่วนที่ดี” และ / หรือ“ ส่วนที่ดีกว่า” สำหรับ Node.js และระบบนิเวศ ฉันจะซื้อสำเนา!
และด้วยระดับความกระตือรือร้นและชั่วโมงทำงานที่หนักหน่วงของทุกโครงการมันอาจจะได้รับการรับประกันในหนึ่งปีหรือสองหรือสามปีเพื่อให้ข้อสังเกตใด ๆ เกี่ยวกับระบบนิเวศที่ยังไม่บรรลุนิติภาวะในช่วงเวลาที่เขียนนี้ มันอาจจะสมเหตุสมผลในห้าปีที่จะพูดว่า“ ระบบนิเวศ Node.js 2015 มีเขตที่วางทุ่นระเบิดหลายแห่ง ระบบนิเวศ 2020 Node.js มีหลายสวรรค์ "