Node.js 'Connect, Express และ "middleware" คืออะไร?


634

แม้จะรู้จาวาสคริปต์ค่อนข้างดี แต่ฉันก็สับสนว่าโครงการทั้งสามนี้ในระบบนิเวศของ Node.js ทำอะไรได้บ้าง มันเหมือนกับแร็คของรางไหม? ใครช่วยอธิบายหน่อยได้ไหม?


1
ฉันไม่ได้ใช้การเชื่อมต่อ แต่หน้านี้แน่ใจว่าทำให้คล้ายกับ Rails 'Rack คุณเข้าใจหรือไม่ว่ามิดเดิลแวร์ใดที่อยู่นอกบริบทของโหนด
Matt Ball

สุจริตไม่มากเท่าที่ฉันต้องการ เท่าที่ฉันรู้มันเป็นเลเยอร์ที่ทำทุกสิ่งก่อนแอปเช่นการกำหนดเส้นทาง, การ gzipping, ส่วนหัว, คุกกี้ .. ? ฉันถูกไหม? ดังนั้นมันจะทำงานในวิธีที่กำหนดเส้นทางไปยังตัวควบคุม / การกระทำ MVC ที่เหมาะสมไม่ได้อยู่ในกรอบ MVC (เช่น Rails) แต่อยู่ในมิดเดิลแวร์หรือไม่?
tillda

ดูเพิ่มเติมที่นี่project70.com/nodejs/understanding-connect-and-middleware
didxga

8
สิ่งนี้จะเคลียร์ดูบทั้งหมดของคุณและคำตอบมากมายที่คุณมีฉันเข้าใจดีว่ามันสายเกินไป (หวังว่ามีคนเลื่อนลง ... ) แต่การอ่านบทความในบล็อกต่อไปนี้จะช่วยตอบคำถามทั้งหมดที่คุณมีเกี่ยวกับ Connect, Express และ Middleware . นอกจากนี้ยังสอนคุณเล็กน้อยเกี่ยวกับ Node.js ด้วย http://evanhahn.com/understanding-express/
DotNetInfo

@DiegoCaxito ลิงก์ของคุณเสีย
เสา

คำตอบ:


891

[ อัปเดต:ตั้งแต่เปิดตัว 4.0 Express ไม่ใช้การเชื่อมต่ออีกต่อไป อย่างไรก็ตาม Express ยังคงเข้ากันได้กับมิดเดิลแวร์ที่เขียนขึ้นสำหรับการเชื่อมต่อ คำตอบเดิมของฉันอยู่ด้านล่าง]

ฉันดีใจที่คุณถามเกี่ยวกับเรื่องนี้เพราะมันเป็นเรื่องธรรมดาสำหรับคนที่ดู Node.js นี่คือภาพที่ดีที่สุดของฉันที่อธิบาย:

  • Node.js เสนอโมดูลhttpซึ่งcreateServerเมธอดจะส่งคืนออบเจ็กต์ที่คุณสามารถใช้เพื่อตอบสนองต่อคำขอ HTTP วัตถุนั้นสืบทอดhttp.Serverต้นแบบ

  • การเชื่อมต่อยังมีcreateServerวิธีการซึ่งส่งคืนวัตถุที่สืบทอดรุ่นhttp.Serverเพิ่มเติม ส่วนขยายเชื่อมต่อของส่วนใหญ่จะมีที่จะทำให้มันง่ายต่อการเสียบในตัวกลาง นั่นคือเหตุผลที่ Connect อธิบายตัวเองว่าเป็น "มิดเดิลแวร์เฟรมเวิร์ก" และมักจะถูกปรับให้เข้ากับ Ruby Rack

  • Expressทำเพื่อเชื่อมต่อสิ่งที่ Connect ทำกับโมดูล http: มันมีcreateServerวิธีการที่ขยายServerต้นแบบของการเชื่อมต่อ ดังนั้นฟังก์ชั่นทั้งหมดของ Connect จึงมีอยู่รวมถึงการแสดงผลมุมมองและ DSL ที่ใช้งานง่ายสำหรับการอธิบายเส้นทาง รูดี้ของซินาตร้าเปรียบเทียบได้ดี

  • จากนั้นก็มีกรอบงานอื่น ๆ ที่ดำเนินการต่อไปและขยาย Express! ตัวอย่างเช่นZappaซึ่งรวมการสนับสนุน CoffeeScript, jQuery ฝั่งเซิร์ฟเวอร์และการทดสอบ

นี่คือตัวอย่างที่เป็นรูปธรรมของสิ่งที่มีความหมายโดย "มิดเดิลแวร์": นอกกรอบไม่มีสิ่งใดที่ให้บริการไฟล์คงที่สำหรับคุณ แต่เพียงแค่ใส่connect.static(มิดเดิลแวร์ที่มาพร้อมกับการเชื่อมต่อ) กำหนดค่าให้ชี้ไปที่ไดเรกทอรีและเซิร์ฟเวอร์ของคุณจะให้การเข้าถึงไฟล์ในไดเรกทอรีนั้น โปรดทราบว่า Express ยังให้บริการมิดเดิลแวร์ของ Connect เช่นกัน เป็นเช่นเดียวกับexpress.static connect.static(ทั้งคู่รู้จักกันstaticProviderจนกระทั่งเมื่อไม่นานมานี้)

ความประทับใจของฉันคือแอพ "ของจริง" Node.js ส่วนใหญ่ได้รับการพัฒนาด้วย Express ในทุกวันนี้ คุณสมบัติที่เพิ่มเข้ามามีประโยชน์อย่างยิ่งและฟังก์ชั่นระดับล่างทั้งหมดยังคงมีอยู่หากคุณต้องการ


130
สิ่งหนึ่งที่ทำให้ฉันกังวลเกี่ยวกับการเชื่อมต่อคือเอกสารดูเหมือนจะไม่ยอมรับว่าโหนดเป็นมากกว่าเซิร์ฟเวอร์ HTTP "Connect เป็นเฟรมเวิร์กตัวกลางสำหรับ Node.js" - ไม่ "Connect เป็นเฟรมเวิร์กมิดเดิลแวร์สำหรับเซิร์ฟเวอร์ HTTP ของ Node.js"
slim

46
@ บางฉันคิดว่าคุณอ่านมากเกินไป ผู้สร้าง Connect เป็นนักพัฒนาโหนดที่โดดเด่น พวกเขาตระหนักดีว่าโหนดเป็นมากกว่าเซิร์ฟเวอร์ HTTP แต่มันมีเซิร์ฟเวอร์ HTTP ในตัวและ Connect เป็นเฟรมเวิร์กมิดเดิลแวร์ที่คุณสามารถใช้ในแอป Node.js ของคุณ
เทรเวอร์เบิร์นแฮม

22
โอ้ฉันแน่ใจว่าผู้ผลิตของ Connect ตระหนักดีอย่างเต็มที่ พวกเขาไม่สามารถบรรลุสิ่งที่พวกเขามีโดยไม่มีความเข้าใจอย่างถี่ถ้วนเกี่ยวกับโหนด แต่การเลือกคำศัพท์ทำให้สับสนสำหรับผู้มาใหม่ที่โหนด และสำหรับผู้ใช้ใหม่ที่จะเชื่อมต่อ
บาง

10
ใสคำตอบทั้งหมดควรมุ่งมั่นเพื่ออะไร ทำงานที่ยอดเยี่ยมเทรเวอร์
Mark Essel

6
คำอธิบายที่ดี คำตอบเช่นนี้ช่วยนำผู้คนใหม่ ๆ เข้าสู่ระบบนิเวศของ Node.js สำหรับผู้ที่คุ้นเคยกับการพัฒนาเว็บแอปใน Node.js Express เป็นจุดเริ่มต้น เพื่อดำเนินการต่อการเปรียบเทียบ Ruby, Express เปรียบได้กับ Sinatra เหมาะอย่างยิ่งสำหรับการสร้าง JSON API สำหรับแอปฝั่งไคลเอ็นต์ Ajax สิ่งหนึ่งที่ฉันพบคือเมื่อแอพพลิเคชั่นมีความซับซ้อนในระดับหนึ่งจำเป็นต้องใช้เลเยอร์อื่นที่ Rails ต้องการมากกว่า ฉันกำลังทำงานกับLocomotiveเพื่อจุดประสงค์นี้ซึ่งมีเลเยอร์เพิ่มเติมบน Express
Jared Hanson

159

คำตอบที่ยอมรับนั้นเก่ามาก (และตอนนี้ผิด) นี่คือข้อมูล (พร้อมแหล่งที่มา) โดยอ้างอิงตามเวอร์ชันปัจจุบันของ Connect (3.0) / Express (4.0)

สิ่งที่ Node.js มาพร้อมกับ

http / https createServerซึ่งใช้การเรียกกลับ (req, res) เช่น

var server = http.createServer(function (request, response) {

    // respond
    response.write('hello client!');
    response.end();

});

server.listen(3000);

สิ่งที่เชื่อมต่อเพิ่ม

Middlewareนั้นเป็นซอฟต์แวร์ที่อยู่ระหว่างรหัสแอปพลิเคชันของคุณกับ API ระดับต่ำ การเชื่อมต่อขยายการทำงานของเซิร์ฟเวอร์ HTTP ในตัวและเพิ่มปลั๊กอินเฟรมเวิร์ก ปลั๊กอินทำหน้าที่เป็นมิดเดิลแวร์และด้วยเหตุนี้การเชื่อมต่อจึงเป็นโครงงานมิดเดิลแวร์

วิธีที่ทำได้นั้นค่อนข้างง่าย ( และอันที่จริงแล้วรหัสนั้นสั้นจริงๆ! ) ทันทีที่คุณโทรหาvar connect = require('connect'); var app = connect();คุณจะได้รับฟังก์ชั่นappที่สามารถ:

  1. สามารถจัดการคำขอและส่งคืนการตอบกลับ นี่เป็นเพราะคุณได้รับฟังก์ชั่นนี้เป็นหลัก
  2. มีฟังก์ชั่นสมาชิก.use( แหล่งที่มา ) เพื่อจัดการปลั๊กอิน ( ที่มาจากที่นี่เพราะบรรทัดของรหัสที่เรียบง่ายนี้ )

เนื่องจาก 1. ) คุณสามารถทำสิ่งต่อไปนี้:

var app = connect();

// Register with http
http.createServer(app)
    .listen(3000);

ใช้ร่วมกับ 2. ) แล้วคุณจะได้รับ:

var connect = require('connect');

// Create a connect dispatcher
var app = connect()
      // register a middleware
      .use(function (req, res, next) { next(); });

// Register with http
http.createServer(app)
    .listen(3000);

Connect ให้ฟังก์ชั่นโปรแกรมที่จะลงทะเบียนตัวเองด้วยเพื่อให้คุณไม่จำเป็นที่จะทำให้การเรียกร้องให้http http.createServer(app)ที่เรียกว่าlistenและรหัสที่เพียงแค่สร้าง http http.listenเซิร์ฟเวอร์ใหม่ลงทะเบียนของการเชื่อมต่อเป็นโทรกลับและส่งต่อข้อโต้แย้งที่จะ จากแหล่งที่มา

app.listen = function(){
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};

ดังนั้นคุณสามารถทำได้:

var connect = require('connect');

// Create a connect dispatcher and register with http
var app = connect()
          .listen(3000);
console.log('server running on port 3000');

มันยังเป็นของเก่าที่ดีของคุณhttp.createServerด้วยกรอบปลั๊กอินด้านบน

สิ่งที่ ExpressJS เพิ่ม

ExpressJS และการเชื่อมต่อเป็นโครงการแบบขนาน การเชื่อมต่อเป็นเพียงมิดเดิลแวร์เฟรมเวิร์กพร้อมuseฟังก์ชันที่ดี Express ไม่ได้ขึ้นอยู่กับการเชื่อมต่อ ( ดู package.json ) อย่างไรก็ตามมันทำทุกอย่างที่เชื่อมต่อไม่เช่น:

  1. สามารถลงทะเบียนด้วยcreateServerlike connect เพราะมันเป็นเพียงฟังก์ชั่นที่สามารถใช้req/ resคู่ ( แหล่งที่มา )
  2. ฟังก์ชั่นการใช้งานที่ลงทะเบียนมิดเดิลแวร์
  3. listenฟังก์ชั่นยูทิลิตี้ในการลงทะเบียนตัวเองด้วย http

นอกเหนือจากสิ่งที่ให้การเชื่อมต่อ (ซึ่งแสดงซ้ำ) มันมีคุณสมบัติมากมาย เช่น

  1. มีการสนับสนุนมุมมองของเครื่องยนต์
  2. มีระดับบนสุดคำกริยา (รับ / โพสต์ ฯลฯ ) สำหรับเราเตอร์ของมัน
  3. มีการสนับสนุนการตั้งค่าแอปพลิเคชัน

มิดเดิลแวร์ที่ใช้ร่วมกัน

useการทำงานของ ExpressJS และการเชื่อมต่อเข้ากันได้และดังนั้นจึงตัวกลางที่ใช้ร่วมกัน ทั้งสองมีความกรอบมิดเดิลแวร์ด่วนเพียงมีมากกว่ากรอบมิดเดิลแวร์ที่เรียบง่าย

คุณควรใช้อันไหน

ความคิดเห็นของฉัน: คุณได้รับแจ้งมากพอจาก ^ บน ^ เพื่อให้คุณเลือกเอง

  • ใช้http.createServerหากคุณกำลังสร้างสิ่งที่ต้องการเชื่อมต่อ / expressjs ตั้งแต่เริ่มต้น
  • ใช้การเชื่อมต่อหากคุณเป็นผู้สร้างมิดเดิลแวร์ทดสอบโปรโตคอล ฯลฯ เนื่องจากเป็นสิ่งที่ดีมาก http.createServer
  • ใช้ ExpressJS หากคุณเป็นผู้สร้างเว็บไซต์

คนส่วนใหญ่ควรใช้ ExpressJS

เกิดอะไรขึ้นกับคำตอบที่ยอมรับได้

สิ่งเหล่านี้อาจเป็นจริงในบางเวลา แต่ผิดตอนนี้:

ที่สืบทอด http.Server เวอร์ชันขยาย

ไม่ถูกต้อง. ไม่ขยายและตามที่คุณเห็น ... ใช้มัน

Express ทำเพื่อเชื่อมต่อสิ่งที่ Connect ทำกับโมดูล http

Express 4.0 ไม่ได้ขึ้นอยู่กับการเชื่อมต่อ ดูที่ส่วน package.json ปัจจุบันการพึ่งพา


คุณพูดว่าให้ความสามารถในการจัดการคำขอและกลับคำตอบ แต่คนบอกว่า Express เป็นเว็บเซิร์ฟเวอร์จริงๆ ... การไม่ส่งการตอบกลับต้องการความสามารถของเว็บเซิร์ฟเวอร์ (เช่น Express)
PositiveGuy

1
สิ่งที่ดีขอบคุณ! มีประโยชน์มาก ... โดยเฉพาะอย่างยิ่งไม่ทราบว่าการเชื่อมต่อเป็นสิ่งที่ให้เส้นทางและแสดงออกเพียงรับสิ่งนั้นไม่ใช่ผู้ให้บริการเส้นทาง / แหล่งที่มาเพียงอย่างเดียว และกรณีการใช้งานในตอนท้ายมีประโยชน์เพราะฉันคิดว่าฉันต้องใช้การเชื่อมต่อและด่วน แต่จริงๆแล้วสิ่งที่คุณต้องใช้คือการส่งด่วนสำหรับเว็บแอปดังนั้นนี่จึงเป็นเรื่องใหญ่สำหรับฉัน คุณไม่ได้ติดตั้งทั้งคู่คุณติดตั้งอย่างใดอย่างหนึ่ง!
PositiveGuy

คำตอบของคุณควรอยู่ด้านบน เมื่อฉันอ่านคำตอบที่ยอมรับฉันก็ยกมันขึ้นมา แต่หลังจากอ่านคำตอบของคุณ ... naahhh
Arun Joshla

67

Node.js

Node.js เป็นมอเตอร์ javascript สำหรับฝั่งเซิร์ฟเวอร์
นอกเหนือจากความสามารถของ js ทั้งหมดแล้วยังรวมถึงความสามารถด้านเครือข่าย (เช่น HTTP) และการเข้าถึงระบบไฟล์
สิ่งนี้แตกต่างจาก js ฝั่งไคลเอ็นต์ซึ่งงานเครือข่ายถูกผูกขาดโดยเบราว์เซอร์และห้ามการเข้าถึงระบบไฟล์ด้วยเหตุผลด้านความปลอดภัย

node.js เป็นเว็บเซิร์ฟเวอร์: express

สิ่งที่ทำงานในเซิร์ฟเวอร์เข้าใจ HTTP และสามารถเข้าถึงไฟล์เสียงเหมือนเว็บเซิร์ฟเวอร์ แต่ไม่ใช่หนึ่งเดียว
ในการทำให้ node.js ทำงานเหมือนเว็บเซิร์ฟเวอร์ต้องทำการตั้งโปรแกรม: จัดการคำร้องขอ HTTP ขาเข้าและจัดเตรียมการตอบสนองที่เหมาะสม
นี่คือสิ่งที่ Express ทำ: เป็นการติดตั้งเว็บเซิร์ฟเวอร์ใน js
ดังนั้นการติดตั้งเว็บไซต์จึงเหมือนกับการกำหนดค่าเส้นทางด่วนและการเขียนโปรแกรมคุณสมบัติเฉพาะของเว็บไซต์

Middleware and Connect

การแสดงหน้าเกี่ยวข้องกับจำนวนงาน งานเหล่านั้นจำนวนมากเป็นที่รู้จักกันดีและเป็นเรื่องปกติมากดังนั้นโมดูลเชื่อมต่อของโหนด(หนึ่งในหลาย ๆ โมดูลที่มีให้ทำงานภายใต้โหนด) ใช้งานเหล่านั้น
ดูข้อเสนอที่น่าประทับใจในปัจจุบัน:

  • ตัวบันทึก คำร้องขอตัวบันทึกพร้อมกับการสนับสนุนรูปแบบที่กำหนดเอง
  • csrf การร้องขอการป้องกันการปลอมแปลงข้ามไซต์
  • บีบ อัดมิดเดิลแวร์การบีบอัด Gzip
  • basicAuth การพิสูจน์ตัวตน http พื้นฐาน
  • bodyParser ขอขยายตัวแยกวิเคราะห์ร่างกาย
  • แอปพลิเคชันjson / json parser
  • แอปพลิเคชันurlencoded / x-www-form-urlencoded parser
  • multipart multipart / ตัวแยกวิเคราะห์ข้อมูลแบบฟอร์ม
  • หมดเวลา คำขอหมดเวลา
  • cookieParser ตัวแยกวิเคราะห์คุกกี้
  • เซสชั่น การสนับสนุนการจัดการเซสชั่นกับ MemoryStore รวม
  • cookieSession สนับสนุนเซสชันที่อิงกับคุกกี้
  • methodOverride faux HTTP สนับสนุนเมธอด
  • responseTime คำนวณเวลาตอบสนองและแสดงผลผ่าน X-Response-Time
  • layerCache หน่วยความจำstaticCacheสำหรับมิดเดิลแวร์ static ()
  • คง สตรีมมิ่งไฟล์เซิร์ฟเวอร์คงสนับสนุนช่วงและอื่น ๆ
  • ไดเรกทอรี รายการไดเรกทอรีมิดเดิลแวร์
  • มิดเดิลแวร์การแม็พโดเมนย่อยโฮสต์vhostเสมือน
  • favicon เซิร์ฟเวอร์ favicon ที่มีประสิทธิภาพ (ที่มีไอคอนเริ่มต้น)
  • จำกัด วงเงินไบต์ของร่างกายร้องขอ
  • เคียวรี ตัวแยกวิเคราะห์อัตโนมัติสอบถามเคียวรีการเติม req.query
  • errorHandler ตัวจัดการข้อผิดพลาดที่ยืดหยุ่น

Connect เป็นเฟรมเวิร์กและคุณสามารถเลือกโมดูล (ย่อย) ที่คุณต้องการ Contrib Middlewareหน้าระบุรายการยาวของเพิ่มเติมmiddlewares Express นั้นมาพร้อมกับมิดเดิลแวร์ของการเชื่อมต่อที่ใช้กันทั่วไป

จะทำอย่างไร?

ติดตั้ง node.js
โหนดมาพร้อมกับNPMที่แพคเกจผู้จัดการโหนด
คำสั่งnpm install -g expressจะดาวน์โหลดและติดตั้ง express ทั่วโลก (ตรวจสอบคู่มือแนะนำด่วน )
การรันexpress fooในบรรทัดคำสั่ง (ไม่ใช่ในโหนด) จะสร้างแอปพลิเคชันที่พร้อมใช้งานชื่อ foo เปลี่ยนเป็นไดเร็กทอรี (สร้างขึ้นใหม่) และรันด้วยโหนดพร้อมกับคำสั่งnode <appname>จากนั้นเปิดhttp://localhost:3000และดู ตอนนี้คุณอยู่ที่


3
คำตอบที่ดีขอบคุณ นี่เป็นเรื่องง่าย ๆ ที่คนคิดถึงโพสต์บล็อกทุกคน หากคุณไม่เคยทำมาก่อน ใช่มันง่ายเมื่อคุณได้ทำไปแล้ว แต่คุณไม่มีเงื่อนงำวิธีการเริ่มต้นครั้งแรก! ฉันเกลียดเมื่อ devs มองข้ามสิ่งนั้นในบล็อกโพสต์ ฉันไม่ต้องการค้นหาบล็อกโพสต์อื่นเพื่อค้นหาการตั้งค่า เพียงแค่ให้ลิงค์ไปยังโพสต์บล็อกอื่นในโพสต์อื่น ๆ ของคุณมันมีประโยชน์มากดังนั้นฉันไม่ต้องไปหามัน ช่วยฉันออกทริปล่าสัตว์!
PositiveGuy

3
Express 4.0.0 ต้องทำการติดตั้ง sudo npm -g express-generator
mohamed-ibrahim

@getsetbro คุณแค่หมายถึง 'การติดตั้ง npm' เพื่อติดตั้งการพึ่งพา
Torsten Barthel

16

Connect เสนอ API "ระดับที่สูงกว่า" สำหรับการทำงานของเซิร์ฟเวอร์ HTTP ทั่วไปเช่นการจัดการเซสชันการตรวจสอบสิทธิ์การบันทึกและอื่น ๆ Express สร้างขึ้นจากส่วนบนของ Connect ด้วยฟังก์ชันขั้นสูง (เช่น Sinatra)


0

Node.jsตัวเองมีโมดูล HTTP ซึ่งเมธอดcreateServerจะส่งคืนวัตถุที่คุณสามารถใช้เพื่อตอบสนองต่อคำขอ HTTP วัตถุนั้นสืบทอดhttp.Serverต้นแบบ


0

ข้อมูลที่เกี่ยวข้องโดยเฉพาะถ้าคุณใช้ NTVS สำหรับการทำงานกับ Visual Studio IDE NTVS เพิ่มเครื่องมือทั้ง NodeJS และ Express scaffolding แม่แบบโครงการใน Visual Studio 2012, 2013

นอกจากนี้คำฟุ่มเฟือยที่เรียก ExpressJS หรือเชื่อมต่อเป็น "WebServer" ไม่ถูกต้อง คุณสามารถสร้าง WebServer พื้นฐานโดยมีหรือไม่มีก็ได้ โปรแกรม NodeJS พื้นฐานยังสามารถใช้โมดูล http เพื่อจัดการคำร้องขอ http ดังนั้นจึงกลายเป็นเว็บเซิร์ฟเวอร์พื้นฐาน


0

มิดเดิลแวร์ตามชื่อที่แนะนำจริงมิดเดิลแวร์อยู่ตรงกลาง .. ตรงกลางของอะไร ตรงกลางของการร้องขอและการตอบสนอง .. วิธีการร้องขอการตอบสนองเซิร์ฟเวอร์ด่วนนั่งอยู่ในแอปด่วน ในภาพนี้คุณสามารถเห็นการร้องขอมาจากไคลเอนต์จากนั้นเซิร์ฟเวอร์เซิร์ฟเวอร์ด่วนให้บริการการร้องขอเหล่านั้น .. งานทั้งหมดของ express server ทั้งในงานแยกตัวเล็ก ๆ เช่นนี้ มิดเดิลแวร์อยู่ระหว่างการร้องขอและการตอบสนองชิ้นส่วนเล็ก ๆ ของเซิร์ฟเวอร์ที่ทำงานบางอย่างและส่งผ่านการร้องขอไปยังส่วนถัดไป .. ในที่สุดการตอบสนองการทำงานทั้งหมดได้ทำ .. เครื่องกลางทั้งหมดสามารถเข้าถึงวัตถุคำขอ วงจรการตอบสนอง ..

นี่เป็นตัวอย่างที่ดีสำหรับการอธิบายมิดเดิลแวร์ในวิดีโอ youtubeด่วนสำหรับมิดเดิลแวร์


-7

คำตอบที่โง่ง่าย

Connect และ Express เป็นเว็บเซิร์ฟเวอร์สำหรับ nodejs แตกต่างจาก Apache และ IIS พวกเขาสามารถใช้โมดูลเดียวกันเรียกว่า "มิดเดิลแวร์"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.