คำถามติดแท็ก node.js

Node.js เป็นเฟรมเวิร์ก I / O อะซิงโครนัสแบบอิงเหตุการณ์ซึ่งใช้เอ็นจิ้น V8 JavaScript ของ Google

1
วิธีจัดการกับฟังก์ชั่นอะซิงโครนัสเมื่อคุณต้องการซิงโครไนซ์สิ่งต่างๆจริงๆ
ฉันค่อนข้างใหม่สำหรับ NodeJS และฉันมีปัญหาในการหาความหมายของฟังก์ชั่นแบบอะซิงโครนัสเมื่อฉันต้องการให้มีการโทรหนึ่งครั้งเพื่อติดตามคนอื่นในลักษณะที่ซิงโครไนซ์ พูดเช่นฉันกำลังเรียกวิธีการบริการเว็บ ทุกวิธีมีฟังก์ชั่นโทรกลับ แต่ถ้าฉันต้องการโทรหา 10 รายการในลำดับเฉพาะ ฉันจำเป็นต้องโยง / ฝังฟังก์ชันทั้งหมดในการติดต่อกลับครั้งแรกหรือไม่ ถ้าครั้งที่สองโซ่แตกต่างกันเล็กน้อย? มีรูปแบบที่สง่างามที่จะจัดการกับสถานการณ์ที่คุณต้องการให้สิ่งต่าง ๆ เป็นจริงหรือไม่? หรือฉันควรปล่อยให้โปรแกรมประเภทนี้คุ้นเคยกับวิธีคิดที่แตกต่างกันจริงๆ หากเป็นจริงอาจมีบางคนชี้ให้ฉันเป็นตัวอย่างที่ชัดเจนเกี่ยวกับฟังก์ชั่นโซ่ที่ยาวกว่าโดยใช้การเรียกกลับ ...
16 node.js 

5
การเรียกกลับรอตัดบัญชีคืออะไร
ฉันเข้าใจความคิดของการติดต่อกลับที่ฉันส่งฟังก์ชั่นไปยังฟังก์ชั่นอื่นและฟังก์ชั่นนั้นใช้ฟังก์ชั่นที่ให้มาตามความประสงค์ ฉันพยายามที่จะเข้าใจการโทรกลับรอการตัดบัญชีแม้หลังจาก googling ใครช่วยอธิบายง่ายๆได้ไหม ฉันเขียนโปรแกรมใน Ruby แต่รู้ C / C ++ นิดหน่อย แต่ที่สำคัญที่สุดฉันเป็นโปรแกรมเมอร์ภาษาแอสเซมบลีที่มีประสบการณ์ ดังนั้นฉันสงสัยว่ามันเป็นบิตของที่อยู่ติดต่อกลับที่ได้รับป๊อปหรือไม่ ฉันหวังว่าจะได้เรียนรู้ jquery หรือ node.js และการเรียกกลับที่เลื่อนออกไปเหล่านี้ดูเหมือนจะเป็นสิ่งสำคัญสำหรับทั้งสองคน ฉันเข้าใจหลักการทำเกลียวขั้นพื้นฐาน (แม้ว่าวัตถุ mutex ทำให้ฉันเจ็บหัว)
15 jquery  node.js 

1
NodeJS จะ“ ไม่ปิดกั้น” ได้อย่างไร?
ฉันกำลังเรียนรู้ NodeJS และแค่ต้องการชี้แจงบางอย่าง ในแบบฝึกหัดเบื้องต้นและหนังสือหลายเล่มจนถึงตอนต้นพวกเขาได้อธิบายสถาปัตยกรรม "ไม่บล็อก" ของโหนดหรือค่อนข้างเป็นไปได้ (และแนะนำทั้งจุด) เป็นรหัสในลักษณะที่ไม่ปิดกั้น ตัวอย่างเช่นตัวอย่างนี้มีให้ในหนังสือที่ฉันกำลังอ่านวิธีอะซิงโครนัสเพื่อรับข้อมูลจากฐานข้อมูล http.createServer(function (req, res) { database.getInformation(function (data) { res.writeHead(200); res.end(data); }); }); เกิดอะไรขึ้น (ตามที่ฉันเข้าใจ) คือโหนดทำให้การเรียกไปยังฐานข้อมูลจากนั้นดำเนินการสิ่งที่อาจเกิดขึ้นต่อไปในสแต็คการโทร เมื่อการร้องขอฐานข้อมูลเสร็จสมบูรณ์ตัวแปรข้อมูลในฟังก์ชั่นการโทรกลับที่ไม่ระบุชื่อจะถูกเติมและฟังก์ชั่นนั้นจะถูกเพิ่มเข้าไปในสแต็คการโทร (และดำเนินการในภายหลังเมื่อโหนดเข้าสู่มัน) คำถามของฉันคือการประมวลผลการร้องขอฐานข้อมูลคืออะไร? แน่นอนโหนดต้องปิดกั้นในขณะที่มันทำอย่างนั้น? การดูแลคำขอฐานข้อมูลคืออะไร หรือถ้าโหนดกำลังรอการร้องขอ HTTP GET แบบอะซิงโครนัสไปยังทรัพยากรภายนอกสิ่งที่ดูแลคำขอนั้นที่อนุญาตให้โหนดประมวลผลสแต็กการโทรต่อและเป็น "non-blocking"

3
วิธีเขียนโค้ดที่จัดการได้ด้วยฟังก์ชั่นการเขียนโปรแกรม?
ฉันเพิ่งเริ่มต้นด้วยฟังก์ชั่นการเขียนโปรแกรม (กับ JavaScript และ Node.js) และจากลักษณะของสิ่งที่ดูเหมือนว่ารหัสที่ฉันเขียนจะกลายเป็นนรกหนึ่งของรหัสฐานในการจัดการเมื่อเทียบกับภาษาโปรแกรมที่มี ประเภทของกระบวนทัศน์เชิงวัตถุ ด้วย OOP ฉันคุ้นเคยกับแนวทางปฏิบัติที่จะช่วยให้มั่นใจว่าโค้ดของคุณได้รับการจัดการและขยายได้อย่างง่ายดาย แต่ฉันไม่แน่ใจว่าของการประชุมที่คล้ายกันกับการเขียนโปรแกรมการทำงาน

3
ฉันจะป้องกันผู้ใช้จากการแก้ไขรหัสของฉันในเบราว์เซอร์ของพวกเขาได้อย่างไร
ลักษณะ ฉันออกแบบแอปพลิเคชั่น Node.JS (เหมือนเว็บไซต์เต็มรูปแบบ) แอพจะส่งไฟล์ JavaScript ห้าไฟล์และจะมี<script>แท็กเชื่อมโยงเข้าด้วยกัน คำถาม ฉันจะป้องกันผู้ใช้และผู้โจมตีโจมตีและแก้ไขโค้ดได้อย่างไร ตัวอย่างจะเป็น: Ctrl+ Shift+I ในDevtoolsให้ไปที่Sourcesเลือกไฟล์ที่จะแก้ไข (เช่นindex.html) และเขียนการแก้ไข การกดCtrl+ Sจะทำให้การแก้ไขสดเกิดขึ้น ฉันต้องการป้องกันตัวอย่างข้างต้นไม่ให้เกิดขึ้น ... เป็นไปได้หรือไม่ นี่คือสิ่งที่ฉันคิดว่า: ฉันจะสร้างไฟล์ JavaScript ฝั่งไคลเอนต์อีกไฟล์ Prevent_keys.js มันจะฟังCtrl+ +ShiftI ถ้ามันกลับมาtrue(เช่นกดปุ่ม) มันจะlogคีย์ อย่างไรก็ตามนั่นจะไม่หยุดผู้ใช้จากการใช้ Devtools โดยตรง

4
node.js เหมาะสมกับการประมวลผลเบื้องหลังหรือไม่?
ฉันเรียนรู้อย่างช้า ๆnode.jsและมีโครงการเล็ก ๆ ที่ฉันต้องการเริ่ม โครงการจะมีกระบวนการพื้นหลังจำนวนมาก (การดาวน์โหลดข้อมูลจากไซต์ภายนอกการแยกไฟล์ CSV และอื่น ๆ ) "ชนะ" ที่ยิ่งใหญ่สำหรับฉันและโหนดคือความจริงที่ว่ามันใช้ JavaScript สำหรับทั้งไคลเอนต์และเซิร์ฟเวอร์ ฉันใช้รหัสใน Java และ JavaScript ในงานประจำวันของฉัน แต่ฉันก็ยังเก่งที่ Ruby แต่อย่างที่ฉันบอกดูเหมือนว่ามันน่าดึงดูดใจที่จะใช้ภาษาใดภาษาหนึ่งในทุกที่และ JS ดูเหมือนจะเหมาะสมกับบิล อย่างไรก็ตามฉันไม่ได้มีประสบการณ์มากในการใช้งาน JS สำหรับการทำงานแบ็กกราวด์ ดูเหมือนว่าทับทิมจะเก่งกว่านี้ และฉันไม่ได้ต่อต้านการใช้งาน แล้วคุณมีความคิดอย่างไรที่จะทำ JS 100% สำหรับสิ่งนี้ ฉันตระหนักว่าโครงการขนาดใหญ่มากต้องการโซลูชันที่กำหนดเอง ฉันแค่สงสัยว่ามันคุ้มค่ากับความพยายาม หรือฉันควรติดรูบี้กับงานบ้านแบบนั้นเหรอ? ความเห็นชื่นชม ขอบคุณ

2
หนึ่งจะให้บริการเนื้อหากับ node.js โดยไม่ต้องกรอบหรือห้องสมุดได้อย่างไร
ฉันพยายามเรียนรู้ node.js และสร้างเว็บแอปพลิเคชันและแม้ว่าฉันจะพยายามอย่างดีที่สุดที่จะเพียงแค่ใช้ node.js เพื่อสร้างมันขึ้นมาฉันมีเวลายากมากในการค้นหาแหล่งข้อมูลและตัวอย่างที่อธิบายกระบวนการ โดยไม่ใช้เฟรมเวิร์กหรือไลบรารีอื่น โดยเฉพาะฉันจะให้บริการเนื้อหา HTML และ CSS ได้อย่างไรโดยไม่ต้องใช้ตัวแปรสตริงที่กำหนดโค้ดแบบยาก แต่ให้บริการไฟล์ HTML และ CSS แบบไดนามิกโดยใช้แค่ node.js
10 node.js 

2
Use-cases สำหรับ node.js และ c #
ฉันทำงาน ASP.NET ค่อนข้างน้อย (C #, MVC) แต่ส่วนใหญ่เป็นการพัฒนาเว็บทั่วไป ฉันใช้สถาปัตยกรรมพักผ่อนโดยใช้ที่เก็บ CRUD ลูกค้าของฉันส่วนใหญ่ไม่มีข้อกำหนดขั้นสูงมากมายในแอปพลิเคชันของพวกเขา ตอนนี้ฉันกำลังดู node.js และมันเป็นนัยเกี่ยวกับประสิทธิภาพ (ฉันติดความเร็ว) แต่ฉันไม่ได้เจาะลึกลงไปเลย ฉันสงสัยว่า node.js สามารถแทนที่การพัฒนาเว็บตามปกติของฉันใน C # และ ASP.NET MVC ได้ (ไม่ได้เขียนแอพที่มีอยู่ใหม่ แต่เมื่อทำงานกับแอปใหม่) node.js สามารถเสริมแอพ ASP.NET MVC ได้ด้วยการเพิ่มความดีแบบ async ให้กับสถาปัตยกรรมที่มีอยู่ มีกรณีการใช้งานสำหรับ / กับ C # และ node.js? แก้ไข ฉันรัก ASP.NET MVC และฉันรู้สึกตื่นเต้นเป็นอย่างมาก เพียงแค่พยายามดูว่ามีกรณีการใช้งานพิเศษที่จะสนับสนุนnode.js หรือไม่

1
การพึ่งพา Node.js มีน้ำหนักมากเกินไป
เมื่อเร็ว ๆ นี้ฉันเริ่มเล่นกับ node.js ทีนี้ทุก ๆ บทช่วยสอนจะบอกว่าคุณควรเริ่มด้วย npm init จากนั้นพูดว่าคุณต้องการเฟรมเวิร์กเซิร์ฟเวอร์มาตรฐานพูดว่าคุณเลือกด่วน: npm install express แต่คุณจะต้องการสิ่งอื่น ๆ อีกมากมายที่คุณคุ้นเคยจากโลกอย่าง ASP.NET ฉันพูดเกี่ยวกับแม่แบบเอ็นจิ้น (หยก) และสไตล์พรีโปรเซสเซอร์ (SASS) แล้วพวกเขาก็บอกคุณว่า "ติดตั้ง gulp / grunt! เพื่อให้คุณสามารถลดขนาดและทำให้อัปเดตและรันเซิร์ฟเวอร์และสิ่งอื่น ๆ อีกมากมายโดยอัตโนมัติ!" และนั่นหมายถึงการติดตั้ง gulp, node-sass และ gulp-sass และ gulp-uglify และอาจจะมีสิ่งดีๆอีกมากมาย (tsd หรือ babel, markdown ฯลฯ ) ... แต่สิ่งเหล่านั้นมีอยู่มากในดิสก์และโปรเจ็กต์ อย่าค้นหาสักครู่และคุณสามารถค้นหาตัวเองด้วยขนาดดิสก์ 100MB + สำหรับโครงการนั้น (ซึ่งยังไม่ได้เริ่มเลย!) …

1
Node.js หรือ servlets [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเคยได้ยินมากและอ่านเกี่ยวกับภาษาด้านเซิร์ฟเวอร์ Javascript เช่น Node.js และเห็นการเปรียบเทียบจำนวนมากในความโปรดปรานของโหนด ฉันไม่เข้าใจสิ่งที่ทำให้ดีขึ้นหรือเร็วขึ้นหรือเกี่ยวข้องกับบางสิ่งบางอย่างที่โตเต็มที่เหมือน Java Servlets แต่ Servlets ถูกสร้างขึ้นบนภาษาการเขียนโปรแกรมแบบมัลติเธรดซึ่งตรงข้ามกับ Node.js ถ้าอย่างนั้น node.js จะเร็วขึ้นได้อย่างไร? ถ้าสมมติว่าผู้ใช้ 1000K สอบถามสำหรับบันทึกฐานข้อมูล Node.js ไม่ควรช้ากว่า Servlets ยังไม่ servlets มีความปลอดภัยที่ดีขึ้นเมื่อเทียบกับ Node.js?

1
การทดสอบช่องว่างระหว่างหน่วยและการรวม: การรวมในการทดสอบส่วนประกอบขนาดเล็กการรวมหน่วย
ในช่วงสองสามสัปดาห์ที่ผ่านมาฉันได้ครุ่นคิดและค้นคว้าวิธีเติมช่องว่างในวิธีการทดสอบของเรา ในการทดสอบหน่วยคำศัพท์ที่ง่ายมีขนาดเล็กเกินไปและการทดสอบการรวมแบบดั้งเดิมนั้นใหญ่เกินไป สถานการณ์ที่เกิดขึ้นบ่อยครั้งที่Aและองค์ประกอบการใช้งานทั้งB Cอย่างไรก็ตามAและมีความต้องการที่แตกต่างกันเล็กน้อยและทำให้สมมติฐานแตกต่างกันเล็กน้อยเกี่ยวกับB Cหากฉันเป็นผู้พัฒนาAฉันจะทดสอบสมมติฐานของฉันได้Cอย่างไรและที่ไหน? เห็นได้ชัดว่าการทดสอบหน่วยที่Aมีข้อสมมติฐานล้อเลียนเกี่ยวกับCการทดสอบAแยกได้ แต่ก็ไม่ได้ทดสอบสมมติฐานเอง Cเป็นไปได้ก็คือการเพิ่มการทดสอบหน่วยสำหรับ อย่างไรก็ตามสิ่งนี้ไม่เหมาะเพราะในขณะที่Aอยู่ระหว่างการพัฒนาการเปลี่ยนแปลงการทดสอบCด้วยข้อสมมติฐานที่พัฒนาขึ้นจากAนั้นจะมีความเงอะงะมากเกินไป อันที่จริงAs นักพัฒนาอาจไม่ได้มีการเข้าถึงเพียงพอที่จะทดสอบหน่วยของC(เช่นห้องสมุดภายนอก) ในการจัดวางสิ่งนี้ด้วยตัวอย่างที่ชัดเจนยิ่งขึ้น: สมมติว่านี่เป็นแอปพลิเคชั่นของโหนด AและBขึ้นอยู่กับCการอ่านไฟล์ (ในหมู่สิ่งอื่น ๆ ) Cและการจัดเก็บเนื้อหาของแฟ้มในวัตถุส่งผ่านไปยัง ในตอนแรกไฟล์ทั้งหมดที่Cจัดการมีขนาดเล็กและสามารถอ่านแบบซิงโครนัสโดยไม่มีการบล็อกที่สำคัญ อย่างไรก็ตามผู้พัฒนาBตระหนักว่าไฟล์ของเขามีขนาดใหญ่ขึ้นและจำเป็นต้องเปลี่ยนCมาอ่านแบบ async ซึ่งส่งผลให้เกิดข้อผิดพลาดในการซิงโครไนซ์เป็นระยะAซึ่งยังคงCมีการอ่านไฟล์ นี่เป็นประเภทของบั๊กที่ยากต่อการติดตามจากการทดสอบการรวมระบบแบบสมบูรณ์และอาจไม่สามารถทำการทดสอบการรวมระบบได้เลย มันไม่ได้ถูกจับโดยAการทดสอบหน่วย s เพราะAข้อสันนิษฐานนั้นถูกเยาะเย้ย แต่มันได้อย่างง่ายดายจับโดย "มินิ" บูรณาการทดสอบว่าการออกกำลังกายเพียงและAC ฉันพบการอ้างอิงประเภทนี้ของการทดสอบเพียงเล็กน้อยเท่านั้น บูรณาการในขนาดเล็ก , การทดสอบส่วนประกอบของการรวม , หน่วยบูรณาการการทดสอบ นอกจากนี้ยังเกี่ยวข้องกับทิศทางการทดสอบ BDDค่อนข้างมากกว่าการทดสอบ TDD อย่างเป็นทางการ ฉันจะเติมช่องว่างการทดสอบนี้ได้อย่างไร โดยเฉพาะ - ฉันจะทำการทดสอบแบบไหน? ฉันจะจำลองอินพุตAและCสำหรับการทดสอบการรวม "มินิ" ได้อย่างไร และควรแยกความกังวลเรื่องการทดสอบระหว่างการทดสอบและการทดสอบหน่วยเท่าไหร่ หรือมีวิธีที่ดีกว่าในการเติมเต็มช่องว่างในการทดสอบ?

1
จะแยกวิเคราะห์ข้อมูลหลายฟิลด์ / ไฟล์แยกจากกันได้อย่างไร?
ฉันต้องการแยกแบบฟอร์มหลายส่วนสองครั้ง: ครั้งหนึ่งเพื่อคว้าฟิลด์ที่เข้ามาและภายหลังเพื่อดำเนินการอัปโหลดไฟล์ ฉันกำลังพยายามแยกข้อกังวลที่เหมาะสมภายในแอพ Node ของฉัน: คอนโทรลเลอร์มีหน้าที่ในการจัดการฟิลด์ที่เข้ามา รุ่นรับผิดชอบตรรกะของไฟล์อัปโหลด ฉันจำเป็นต้องส่งข้อมูลเขตข้อมูลลงในแบบจำลองเพื่อสร้างอินสแตนซ์ใหม่ดังนั้นข้อมูลเขตข้อมูลจึงต้องพร้อมใช้งานก่อนที่การอัปโหลดไฟล์จะเริ่มขึ้น ขณะนี้ทุกคนform.parse()หรือฟังก์ชั่นเทียบเท่าแยกทั้งสองเขตข้อมูลและไฟล์ร่วมกัน ตัวอย่าง: req.pipe(busboy)จัดการทั้งไฟล์และฟิลด์ด้วยกัน ฉันได้ตรวจสอบโมดูลเช่น node-multiparty, formidable, busboy, multer ดูเหมือนว่าไม่มีใครมีทางออกสำหรับเรื่องนี้ ตัวอย่างของสิ่งที่ฉันต้องการบรรลุอยู่ที่นี่: /programming/22336177/node-js-busboy-parse-fields-and-files-seperatly เป็นไปได้ไหม
9 data  node.js  upload 

3
การจัดการกับปิรามิดของ node.js
ฉันเพิ่งเริ่มใช้โหนดและสิ่งหนึ่งที่ฉันสังเกตเห็นได้อย่างรวดเร็วก็คือการโทรกลับอย่างรวดเร็วสามารถสร้างการเยื้องระดับที่บ้าบิ่นได้อย่างไร: doStuff(arg1, arg2, function(err, result) { doMoreStuff(arg3, arg4, function(err, result) { doEvenMoreStuff(arg5, arg6, function(err, result) { omgHowDidIGetHere(); }); }); }); คู่มือสไตล์อย่างเป็นทางการกล่าวว่าจะนำแต่ละโทรกลับในฟังก์ชั่นที่แยกกัน แต่ที่ดูเหมือนว่ามากเกินไปข้อ จำกัด ในการใช้งานของการปิดและทำให้วัตถุเดียวที่ประกาศในระดับบนสุดที่มีหลายชั้นลงเป็นวัตถุจะต้องมีการผ่านทั้งหมด การเรียกกลับระดับกลาง การใช้ขอบเขตฟังก์ชั่นช่วยได้หรือไม่? ใส่ฟังก์ชั่นการโทรกลับทั้งหมดที่ต้องการเข้าถึงวัตถุ Global-ish ภายในฟังก์ชั่นที่ประกาศวัตถุนั้นดังนั้นมันจึงปิดลง? function topLevelFunction(globalishObject, callback) { function doMoreStuffImpl(err, result) { doMoreStuff(arg5, arg6, function(err, result) { callback(null, globalishObject); }); } doStuff(arg1, arg2, doMoreStuffImpl); } …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.