Express.js คืออะไร


439

ฉันเป็นผู้เรียนในNode.js

  1. Express.jsคืออะไรอะไร
  2. จุดประสงค์ของการใช้ Node.js คืออะไร?
  3. ทำไมเราต้องใช้ Express.js มันมีประโยชน์อย่างไรที่เราจะใช้กับ Node.js
  4. Redisคืออะไร มาพร้อมกับ Express.js หรือไม่

28
เลื่อนลงไปที่คำตอบ community-wiki (ซึ่งมีค่าหัว +50) ฉันพบว่ามีประโยชน์มากกว่าคำตอบที่ทำเครื่องหมายไว้
Shishir Gupta

คำตอบ:


266

สิ่งนี้ง่ายกว่ามาก แต่Express.jsคือNode.jsสิ่งที่Ruby on RailsหรือSinatraคือRubyทับทิม

Express 3.x เป็นเฟรมเวิร์กเว็บแอ็พพลิเคชันที่มีน้ำหนักเบาเพื่อช่วยจัดระเบียบเว็บแอ็พพลิเคชันของคุณให้เป็นสถาปัตยกรรม MVC ที่ฝั่งเซิร์ฟเวอร์ คุณสามารถใช้ตัวเลือกที่หลากหลายสำหรับภาษาเทมเพลตของคุณ (เช่นEJS , JadeและDust.js )

จากนั้นคุณสามารถใช้ฐานข้อมูลเช่นMongoDBกับMongoose (สำหรับการสร้างแบบจำลอง) เพื่อมอบแบ็กเอนด์สำหรับแอปพลิเคชัน Node.js ของคุณ Express.js ช่วยให้คุณจัดการทุกอย่างตั้งแต่เส้นทางไปจนถึงการจัดการคำขอและมุมมอง

Redis เป็นที่เก็บคีย์ / ค่า - โดยทั่วไปใช้สำหรับเซสชันและแคชในแอปพลิเคชัน Node.js คุณสามารถทำสิ่งต่าง ๆ ได้มากกว่านี้ แต่นั่นคือสิ่งที่ฉันใช้ ฉันใช้ MongoDB เพื่อความสัมพันธ์ที่ซับซ้อนยิ่งขึ้นเช่นรายการโฆษณา <-> คำสั่งซื้อ <-> ความสัมพันธ์ของผู้ใช้ มีโมดูล (ส่วนใหญ่เชื่อมต่อ - แดง) ที่จะทำงานร่วมกับ Express.js คุณจะต้องติดตั้ง Redisฐานข้อมูลบนเซิร์ฟเวอร์ของคุณ

นี่คือลิงค์ไปยังคำแนะนำ Express 3.x: https://expressjs.com/en/3x/api.html


20
Express เป็นเหมือนซินาตร้ามากกว่าทางรถไฟ
ครึ่ง

11
Express ได้รับแรงบันดาลใจมาจาก Sinatra โดยเฉพาะ อาจเป็นคุณลักษณะที่สำคัญที่สุดคือการกำหนดเส้นทาง; มันยังทำให้มิดเดิลแวร์ทั้งหมดที่มีให้โดยการเชื่อมต่อ (จนถึงจุดที่ทั้งหมด แต่แอพพลิเคชั่นที่เป็นพิเศษที่สุดที่ต้องการมิดเดิลแวร์ของการเชื่อมต่อจะใช้ด่วน)
ebohlman

ฉันจะบอกว่า Redis เหมาะอย่างยิ่งสำหรับความสัมพันธ์ที่ซับซ้อนในความเป็นจริง
plus-

ลิงก์ EJS กำลังจะตาย
เดวิดสเปคเตอร์

ฉันไม่เข้าใจว่า MVC เกี่ยวข้องกับ Express อย่างไร ถ้าฉันจำได้อย่างถูกต้อง Express ไม่มีรุ่นและไม่มีมุมมอง เป็นกรอบการทำงานของมิดเดิลแวร์ไม่ใช่ MVC-framework กรุณาอธิบายสิ่งนี้
Gherman

382

1) Express.js คืออะไร

Express.jsเป็นกรอบงานNode.js เป็นกรอบที่ได้รับความนิยมมากที่สุดในขณะนี้ (ติดดาวมากที่สุดใน NPM)

ป้อนคำอธิบายภาพที่นี่.

มันสร้างขึ้นจากการกำหนดค่าและความเรียบง่ายอย่างละเอียดของมิดเดิ้ลเชื่อมต่อ บางคนเปรียบเทียบ Express.js เพื่อทับทิมซินาตร้าเทียบกับขนาดใหญ่และดื้อดึงRuby on Rails

2) จุดประสงค์ของการใช้ Node.js คืออะไร?

คุณไม่จำเป็นต้องทำซ้ำรหัสเดิมซ้ำแล้วซ้ำอีก Node.js เป็นกลไกI / Oระดับต่ำซึ่งมีโมดูล HTTP หากคุณใช้โมดูล HTTP งานจำนวนมากเช่นการแจงส่วนของข้อมูล, คุกกี้, การจัดเก็บเซสชัน (ในหน่วยความจำหรือในRedis ) การเลือกรูปแบบเส้นทางที่ถูกต้องตามนิพจน์ทั่วไปจะต้องถูกนำมาใช้ใหม่ ด้วย Express.js มีไว้ให้คุณใช้

3) ทำไมเราต้องการ Express.js จริง ๆ มันมีประโยชน์อย่างไรที่เราจะใช้กับ Node.js

คำตอบแรกควรตอบคำถามของคุณ หากไม่ใช่ให้ลองเขียนเซิร์ฟเวอร์REST API ขนาดเล็กใน Node.js ธรรมดา (นั่นคือใช้เฉพาะโมดูลหลัก) และจากนั้นใน Express.js หลังจะทำให้คุณใช้เวลาและบรรทัดโค้ดน้อยลง 5-10x

Redis คืออะไร มาพร้อมกับ Express.js หรือไม่

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

ตรวจสอบการกวดวิชาของฉันบนเซิร์ฟเวอร์ REST API กับ Express.js

MVC แต่ไม่ใช่ด้วยตัวเอง

Express.js ไม่ใช่ model-view-controller โดยตัวมันเอง คุณต้องนำไลบรารีการแม็พสัมพันธ์เชิงวัตถุของคุณเองเช่น Mongoose สำหรับ MongoDB, Sequelize ( http://sequelizejs.com ) สำหรับฐานข้อมูล SQL, Waterline ( https://github.com/balderdashy/waterline ) สำหรับฐานข้อมูลจำนวนมากใน ซ้อนกัน.

ทางเลือก

กรอบงาน Node.js อื่น ๆ ที่ต้องพิจารณา ( https://www.quora.com/Node-js/Which-Node-js-framework-is-best-for-building-a-RESTful-API ):

ปรับปรุง: ฉันรวบรวมทรัพยากรนี้ที่ช่วยเหลือผู้คนในการเลือกกรอบงาน Node.js: http://nodeframework.com

อัปเดต 2: เราเพิ่มสถิติ GitHub บางอย่างลงใน nodeframework.com ดังนั้นตอนนี้คุณสามารถเปรียบเทียบระดับการพิสูจน์ทางสังคม (ดาว GitHub) สำหรับกรอบ 30+ บนหน้าเดียว

ป้อนคำอธิบายรูปภาพที่นี่

เต็มรูปแบบสแต็ค:

เพียงแค่ REST API:

Ruby on Rails ต้องการ:

ซินาตร้าชอบ:

อื่น ๆ :

มิดเดิ้ล:

กำเนิดเว็บไซต์คงที่:


มันจะถูกต้องหรือไม่ที่จะบอกว่า - Express.js เป็นโมดูล Node.js (ซึ่งคุณได้ระบุเป็นกรอบงานในบรรทัดที่ 1 ของคุณ) ฉันได้ยินคำว่า nodeJs moduleค่อนข้างบ่อย Framework ภายในเฟรมเวิร์กเป็นข่าวเล็กน้อยสำหรับฉัน
RBT

ใช่ในทางปฏิบัติ Express IS เป็นโมดูลจัดการแพ็กเกจ (npm) (หรือที่เรียกว่าแพ็คเกจ) ในเท่าที่มันถูกเพิ่มลงในแอปพลิเคชันเช่นโมดูลอื่น ๆ จาก npm (ถ้าคุณดูที่โฟลเดอร์ต้นทางของแอปพลิเคชั่น Node Express คุณจะเห็นโฟลเดอร์ชื่อ node_modules ซึ่งจะมีโฟลเดอร์ย่อยที่เรียกว่า express) แต่มันมีประโยชน์มากกว่าโมดูลอื่น ๆ ส่วนนอกเนื่องจากมี โหลดของโมดูลที่ต้องพึ่งพาซึ่งให้แอป coder กับ API สำหรับงานทั่วไปได้อย่างมีประสิทธิภาพ กรอบภายในกรอบหรือไม่? เหมือนเฟรมเวิร์กการนำไปใช้งานที่สามารถแนบกับเฟรมเวิร์กการสร้างเซิร์ฟเวอร์
Trunk

15
  1. Express.js คืออะไร

Express.js เป็นเฟรมเวิร์กเซิร์ฟเวอร์แอปพลิเคชันเว็บของ Node.js ซึ่งออกแบบมาสำหรับการสร้างแอปพลิเคชันเว็บหน้าเดียวหลายหน้าและไฮบริด มันเป็นกรอบมาตรฐานเซิร์ฟเวอร์พฤตินัยสำหรับ node.js

กรอบงานที่สร้างขึ้นบน Express

กรอบงาน Node.js ที่ได้รับความนิยมหลายตัวสร้างขึ้นบน Express:

LoopBack: เฟรมเวิร์ก Node.js โอเพนซอร์ซที่ขยายและขยายได้สูงเพื่อการสร้าง REST API แบบครบวงจรอย่างรวดเร็ว

Sails: กรอบ MVC สำหรับ Node.js สำหรับการสร้างแอปที่พร้อมใช้งานจริงและพร้อมใช้งานจริง

Kraken: เลเยอร์ที่ปลอดภัยและปรับขนาดได้ซึ่งขยาย Express ด้วยการจัดเตรียมโครงสร้างและการประชุม

หมายความว่า: เฟรมเวิร์ก JavaScript แบบเต็มความคิดเห็นซึ่งช่วยลดความยุ่งยากและเร่งการพัฒนาแอปพลิเคชันเว็บ

  1. จุดประสงค์ของการใช้ Node.js คืออะไร?
  2. ทำไมเราต้องใช้ Express.js มันมีประโยชน์อย่างไรที่เราจะใช้กับ Node.js

Express เพิ่มการกำหนดเส้นทางและการสนับสนุนที่ง่ายสำหรับ Dead middleware ซึ่งอนุญาตให้ส่วนขยายและคุณลักษณะที่มีประโยชน์มากมาย

ตัวอย่างเช่น,

  • ต้องการเซสชันหรือไม่ มันอยู่ที่นั่น
  • ต้องการการแยกวิเคราะห์ข้อความ / สตริงข้อความของ POST หรือไม่ มันอยู่ที่นั่น
  • ต้องการเทมเพลตง่าย ๆ ด้วยหยกหนวดอีเจเอส ฯลฯ ไหม? มันอยู่ที่นั่น
  • ต้องการการจัดการข้อผิดพลาดที่ไม่ทำให้เซิร์ฟเวอร์ทั้งหมดล่มหรือไม่

10
  1. Express.js เป็นเฟรมเวิร์กเว็บแบบแยกส่วนสำหรับ Node.js
  2. มันถูกใช้เพื่อการสร้างเว็บแอปพลิเคชันและบริการที่ง่ายขึ้น
  3. Express.js ทำให้การพัฒนาง่ายขึ้นและทำให้การเขียนแอปพลิเคชันที่ปลอดภัยโมดูลาร์และรวดเร็วขึ้นง่ายขึ้น คุณสามารถทำสิ่งนั้นได้ใน Node.js แบบเก่า แต่มีข้อบกพร่องบางอย่างที่สามารถ (และจะ) รวมถึงข้อกังวลด้านความปลอดภัย (เช่นไม่หนีสตริงอย่างถูกต้อง)
  4. Redis เป็นระบบฐานข้อมูลในหน่วยความจำที่รู้จักกันในด้านประสิทธิภาพที่รวดเร็ว ไม่ แต่คุณสามารถใช้กับ Express.js โดยใช้ไคลเอนต์ redis

ฉันไม่สามารถกระชับกว่านี้ สำหรับความต้องการและข้อมูลอื่น ๆ ของคุณ Google คือเพื่อนของคุณ


3

ExpressJS เป็นกระดูกเปลือยกรอบโปรแกรมประยุกต์บนเว็บที่ด้านบนของ NodeJS

มันสามารถใช้ในการสร้าง WebApps, RESTFUL API และอื่น ๆ ได้อย่างรวดเร็ว

รองรับเครื่องมือแม่แบบหลายตัวเช่น Jade, EJS

ExpressJS เก็บรักษาฟังก์ชันการทำงานที่เรียบง่ายไว้เป็นคุณลักษณะหลักเท่านั้นดังนั้นจึงไม่มีการรองรับ ORMs หรือ DBs เป็นค่าเริ่มต้น แต่ด้วยความพยายามเล็กน้อยแอพ expressjs สามารถรวมเข้ากับฐานข้อมูลที่แตกต่างกัน

สำหรับคำแนะนำในการเริ่มต้นใช้งานในการสร้างแอป ExpressJS ดูที่ลิงค์ต่อไปนี้:

ExpressJS บทแนะนำเบื้องต้น


3

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

Express เป็น "แบ็คโบน" ของเว็บแอปจำนวนมากที่มีแบ็คเอนด์ใน NodeJS จากสิ่งที่ฉันรู้สินทรัพย์หลักคือการจัดเตรียมระบบการจัดเส้นทางที่จัดการบริการของ "การโต้ตอบ" ระหว่าง 2 โฮสต์ มีทางเลือกมากมายสำหรับมันเช่น Sails


2

Express.js เป็นเฟรมเวิร์กที่ใช้สำหรับโหนดและมักใช้เป็นเว็บแอ็พพลิเคชันสำหรับโหนด js

นี่คือลิงก์ไปยังวิดีโอเกี่ยวกับวิธีตั้งค่าแอปโหนดอย่างรวดเร็วด้วย express https://www.youtube.com/watch?v=QEcuSSnqvck


คำอธิบายที่ยอดเยี่ยมสำหรับผู้เริ่มต้นแน่นอน!
Ankit Pandey

0

Express.js สร้างโดย TJ Holowaychuk และตอนนี้จัดการโดยชุมชน เป็นหนึ่งในเฟรมเวิร์กที่ได้รับความนิยมมากที่สุดใน node.js Express ยังสามารถใช้เพื่อพัฒนาผลิตภัณฑ์ต่าง ๆ เช่นเว็บแอปพลิเคชันหรือ RESTful API สำหรับข้อมูลเพิ่มเติมโปรดอ่านในเว็บไซต์อย่างเป็นทางการของ expressjs.com

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