ความแตกต่างระหว่าง MEAN.js และ MEAN.io


335

ฉันต้องการใช้ MEAN JavaScript Stack แต่ฉันสังเกตเห็นว่ามีสองกองที่แตกต่างกันกับเว็บไซต์ของตัวเองและวิธีการติดตั้ง: mean.js และ mean.io ดังนั้นฉันจึงถามตัวเองด้วยคำถามนี้: "ฉันใช้อันไหนดี?"

ดังนั้นเพื่อตอบคำถามนี้ฉันถามชุมชนว่าคุณสามารถอธิบายความแตกต่างระหว่างสองสิ่งนี้ได้อย่างไร และถ้าเป็นไปได้ข้อดีข้อเสีย? เพราะพวกเขาดูเหมือนฉันมาก


5
การเลือกระหว่าง MEAN.io และ MEAN.js อาจจะเป็นจุดที่สงสัยในขณะนี้ว่าดาวตกได้ออก 1.0 และข้อเสนออื่น ๆ อีกมากมายออกมาจากกล่อง
Dan Dascalescu

คำตอบ:


374

โดยพื้นฐานแล้วพวกมันเหมือนกัน ... พวกเขาทั้งคู่ใช้คำว่าสกิล Templating พวกเขาทั้งคู่ใช้กรรมและมอคค่าสำหรับการทดสอบการรวมพาสปอร์ตโนเดมอน ฯลฯ

ทำไมจึงคล้ายกัน Mean.js เป็นทางแยกของ Mean.io และความคิดริเริ่มทั้งสองเริ่มต้นโดยชายคนเดียวกัน ... Mean.io อยู่ภายใต้ บริษัท Linnovate และดูเหมือนว่าผู้ชาย (Amos Haviv) หยุดการทำงานร่วมกันกับ บริษัท นี้และ เริ่ม Mean.js. คุณสามารถอ่านเพิ่มเติมเกี่ยวกับสาเหตุที่นี่

ตอนนี้ ... ความแตกต่างหลัก (หรือน้อย) ที่คุณเห็นในตอนนี้คือ:


SCAFFOLDING และ BOILERPLATE GENERATION

Mean.io ใช้เครื่องมือ cli ที่กำหนดเองที่ชื่อว่า 'mean'
Mean.js ใช้ Yeoman Generators


modularity

Mean.io ใช้แพคเกจโหนดแบบโมดูลาร์เพิ่มเติมในตัวพร้อมกับไฟล์ไคลเอนต์และเซิร์ฟเวอร์ภายในโมดูล
Mean.js ใช้โมดูลในส่วนหน้า (สำหรับเชิงมุม) และเชื่อมต่อกับ Express แม้ว่าพวกเขาจะทำงานในโมดูลแนวตั้งเช่นกัน ...


ระบบสร้าง

Mean.io เพิ่งย้ายไปอึก
Mean.js ใช้เสียงฮึดฮัด


DEPLOYMENT

ทั้งสองมี Dockerfiles ใน Repos ตนและ Mean.io มีเพียงคลิกเดียวติดตั้งบนGoogle Compute Engineขณะ Mean.js นอกจากนี้ยังสามารถนำไปใช้กับหนึ่งคลิกติดตั้งในมหาสมุทรดิจิตอล


เอกสาร

Mean.io มีเอกสาร ok
Mean.js มีเอกสารที่ยอดเยี่ยม


ชุมชน

Mean.io มีชุมชนที่ใหญ่กว่าเดิม
เนื่องจาก Meanplate ต้นแบบดั้งเดิมนั้นมีโมเมนตัมน้อยลง แต่มีการเติบโตที่มั่นคง


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


ทางเลือกทางเลือก“ ทางแก้ไข”

MEAN เป็นวิธีทั่วไป (ประกาศเกียรติคุณโดยValeri Karpov ) เพื่ออธิบาย boilerplate / framework ที่ใช้ "Mongo + Express + Angular + Node" เป็นฐานของสแต็ก คุณสามารถค้นหาเฟรมเวิร์กกับสแต็กนี้ที่ใช้นิกายอื่น ๆ ซึ่งบางส่วนนั้นดีสำหรับ RAD (การพัฒนาแอปพลิเคชันอย่างรวดเร็ว) และการสร้างสปา เช่น:

คุณมีHackathon Starterด้วย มันไม่มี A of MEAN (มันคือ 'MEN') แต่มันสั่นสะเทือน ..

มีความสุข!


5
เฮ้ขอบคุณสำหรับคำตอบ! Hackathon-starter ดูดีมาก! มันดูมากกว่าสิ่งที่ฉันกำลังมองหา มันก็เป็นส่วนใหญ่ JS และมีการรับรองความถูกต้องแล้วและนั่นคือสิ่งที่ฉันคิดว่าจะเป็นส่วนที่ยากที่สุด ... ทั้งหมดคิดว่าฉันยังรู้สึกเหมือนฉันไม่ทราบตัวเลือกทั้งหมดของฉัน ... : - / มันก็เกิดขึ้นในภายหลัง Hackathon-starter มี Scaffolding และ Boilerplate Generator ไหม? แต่ก็ยังขอบคุณมากสำหรับคำตอบที่ยอดเยี่ยมของคุณ!
CMPSoares

7
ไม่เป็นไร ใช่สิ่งที่ฉันชอบเกี่ยวกับ hackathon-starter ก็คือการจัดการบัญชีและขั้นตอนการทำงานที่สมบูรณ์ (ลืมรหัสผ่านอีเมลยืนยัน ฯลฯ ) และการทำงานร่วมกับ sendgrid, paypal และอื่น ๆ ... สิ่งที่ MEAN.js และ MEAN.io ขาดหายไป มันเป็นตัวเริ่มต้นที่ยอดเยี่ยมสำหรับโครงการบางประเภท
joseldn

1
เป็นจุดเริ่มต้นที่ดีสำหรับโครงการถ้าคุณไม่ต้องการมุม ไม่ต้องกังวลกับส่วนอื่น ๆ ของแพลตฟอร์ม เป็นไปได้มากที่คุณจะพบแพ็คเกจโหนดแบบพลักแอนด์เพลย์ที่ทำอย่างนั้น .. Ie: gist.github.com/facultymatt/6370903สำหรับบทบาท
joseldn

1
สถานการณ์ที่ดีคือการใช้กับ SOA ซึ่งเป็นที่ที่คุณใช้ REST API หากคุณอยู่ในช่วงเวลาที่ จำกัด ให้ปล่อยเชิงมุม เส้นโค้งการเรียนรู้ค่อนข้างชัน ... มันเป็น "ดีที่มี" สำหรับส่วนหน้า แต่ไม่ใช่องค์ประกอบที่สำคัญ คุณสามารถเรียนรู้ได้ในแบบคู่ขนานและใช้ในโครงการถัดไปของคุณหรือเสียบเข้ากับโครงการนี้ในภายหลัง
joseldn

2
ไงพวก! ฉันพบสิ่งที่ได้มาจากการแฮ็ก - สตาร์ทเตอร์ แต่ดีมากเช่นกัน: Skeleton ! ;-)
CMPSoares

66

ก่อนอื่นMEANเป็นตัวย่อสำหรับ M ongoDB, E xpress, A ngular และN ode.js

มันทั่วไประบุรวมใช้เทคโนโลยีเหล่านี้ใน "กอง" ไม่มีสิ่งเช่น "เป็นMEAN กรอบ"

Lior Kesosที่Linnovateใช้ประโยชน์จากความสับสนนี้ เขาซื้อโดเมน MEAN.io และใส่รหัสที่https://github.com/linnovate/mean

พวกเขาโชคดีที่ได้รับการเผยแพร่จำนวนมากและมีบทความและวิดีโอเกี่ยวกับ MEAN มากขึ้นเรื่อย ๆ เมื่อคุณ Google "เฟรมเวิร์ก" หมายความว่า mean.io เป็นรายการแรกในรายการ

น่าเสียดายรหัสที่ https://github.com/linnovate/meanดูเหมือนว่าออกแบบไม่ดี

ในเดือนกุมภาพันธ์ฉันตกหลุมพรางตัวเอง เว็บไซต์ mean.io มีการออกแบบที่สะดุดตาและ Github repo มีดาวมากกว่า 1,000 ดวง ความคิดในการซักถามคุณภาพไม่ได้ผ่านใจของฉัน ฉันเริ่มทดลองกับมัน แต่ใช้เวลาไม่นานเกินกว่าจะสะดุดกับสิ่งที่ไม่ได้ทำงานและทำให้โค้ดยุ่ง

ประวัติความเป็นมาก็ค่อนข้างเกี่ยวข้องกับ พวกเขาออกแบบโครงสร้างรหัสและไดเรกทอรีใหม่หลายครั้งและการรวมการเปลี่ยนแปลงใหม่นั้นใช้เวลานานเกินไป

สิ่งที่ดีเกี่ยวกับโค้ด mean.io และ mean.js ก็คือพวกเขามาพร้อมกับการรวม Bootstrap พวกเขายังมาพร้อมกับ Facebook, GitHub, Linkedin ฯลฯ การตรวจสอบผ่าน PassportJsและตัวอย่างของแบบจำลอง (บทความ) ในแบ็กเอนด์บน MongoDB ที่ซิงค์กับโมเดลส่วนหน้ากับ AngularJS

ตามเว็บไซต์ของ Linnovate:

Linnovate เป็น บริษัท โอเพ่นซอร์สชั้นนำในประเทศอิสราเอลโดยมีทีมงานที่มีประสบการณ์มากที่สุดในประเทศทุ่มเทให้กับการสร้างโซลูชั่นโอเพ่นซอร์สระดับไฮเอนด์ Linnovate เป็น บริษัท เดียวในอิสราเอลที่ให้บริการ AZ สำหรับองค์กรในการสร้างและดูแลโครงการเว็บต่อไป

จากเว็บไซต์ดูเหมือนว่าชุดทักษะหลักของพวกเขาคือ Drupal (ระบบจัดการเนื้อหา PHP) และเมื่อเร็ว ๆ นี้พวกเขาเริ่มใช้ Node.js และ AngularJS

เมื่อเร็ว ๆ นี้ฉันกำลังอ่านบล็อก Mean.jsและสิ่งต่าง ๆ ก็ชัดเจนขึ้น ความเข้าใจของฉันคือผู้พัฒนาจาวาสคริปต์หลัก (Amos Haviv) ออกจาก Linnovate เพื่อทำงานใน Mean.js ออกจากโครงการ MEAN.io กับคนที่เป็นนักพัฒนาสามเณร Node.js ที่ชะลอความเข้าใจว่าสิ่งต่าง ๆ ควรทำงานอย่างไร

ในอนาคตสิ่งต่าง ๆ อาจเปลี่ยนแปลง แต่สำหรับตอนนี้ฉันจะหลีกเลี่ยงการใช้ mean.io หากคุณกำลังมองหาสำเร็จรูปสำหรับ quickstart Mean.js ดูเหมือนจะเป็นตัวเลือกที่ดีกว่า mean.io


5
สวัสดี Chris, Linnovate กำลังทำงานอยู่ node.js / mongo ทำงานเป็นเวลานานกว่า 3 ปีเรายอมรับการร้องขอแบบดึงและแนวคิดหากคุณรู้สึกว่ามีบางสิ่งที่ออกแบบมาไม่ดีและคุณมีแนวคิดที่สร้างสรรค์ในการปรับปรุง ฉันสงสัยว่าคุณมีประสบการณ์การเปลี่ยนแปลงที่เราทำในโครงการหลักเพื่อสนับสนุนการฉีดพึ่งพาการสนับสนุนแพ็คเกจและค่าเฉลี่ยเราได้ย้ายโครงการจากต้นแบบไปสู่กรอบและมี "ความเจ็บปวดเพิ่มขึ้น"
Lior Kesos

3
ฉันขอเชิญคุณมาเยี่ยมชมโครงการและตรวจสอบระบบแพ็คเกจใหม่ซึ่งช่วยให้คุณขยายโครงการของคุณผ่านแพ็คเกจที่มีค่าเฉลี่ย คุณลักษณะนี้ได้รับการยอมรับเป็นอย่างดีจากชุมชนและเป็นหนึ่งในตัวอย่างแรกของแพ็คเกจสแต็กเต็มรูปแบบ (ให้ฟังก์ชันการทำงานด้านเซิร์ฟเวอร์และไคลเอนต์ผ่านแพคเกจในขณะที่ขยายโครงการหลัก)
Lior Kesos

7
หลังจากเปรียบเทียบ MEAN.io กับ MEAN.js โดยการเติบโตที่บริสุทธิ์ mean.js ได้รับ 93 ผู้มีส่วนร่วมใน 1 ปีกับ 700 คอมมิทในขณะที่ mean.io ได้รับ 130 เป็นเวลา 3 ปีและต่ำสุดที่น่าประหลาดใจ 1200 คอมมิท (จากสถิติเพียงแค่ใช้มันเม็ดเกลือ) เห็นได้ชัดว่า MEAN.js จะทันอย่างรวดเร็วจริง เฮ้ฉันยังไม่ได้ดูรหัส แต่โดยพื้นฐานแล้ว MEAN.io ดูเหมือนแอปเปิ้ลที่สูญเสีย Steve Jobs ไป
Ezeewei

19

นี่เป็นการเปรียบเทียบแบบเคียงข้างกันของแอปพลิเคชั่น starters / generators และเทคโนโลยีอื่น ๆ รวมถึง MEAN.js, MEAN.io และ cleverstack ฉันยังคงเพิ่มทางเลือกเมื่อฉันค้นหาเวลาและที่เกิดขึ้นรายการสิทธิประโยชน์ที่มีให้อาจเพิ่มขึ้นเช่นกัน วันนี้มีค่าประมาณ 1600 ถ้าใครต้องการช่วยปรับปรุงความแม่นยำหรือความสมบูรณ์คลิกลิงก์ถัดไปและทำแบบสอบถามเกี่ยวกับสิ่งที่คุณรู้

เปรียบเทียบโครงการเทคโนโลยีแอพ

จากฐานข้อมูลนี้ระบบจะสร้างรายงานดังนี้:

รายงานการแลกเปลี่ยนระหว่าง MeanJS กับ MeanIO


4
นี่คือ google doc ที่ยอดเยี่ยมที่คุณรวบรวมไว้
honkskillet

ฉันเพิ่มแต่ละหน้าลงในเอกสารด้วยการเปรียบเทียบแบบตัวต่อตัว มีสิ่งหนึ่งที่เปรียบเทียบ MEAN.js และ MEAN.io
Dan Cancro

1
"คุณต้องได้รับอนุญาต" - ไม่สามารถเข้าถึงได้
Mörre

ตอนนี้มันเป็นความรู้แบบร่วมมือ เพียงกรอกแบบสอบถามที่นี่เกี่ยวกับเทคโนโลยีบางอย่างที่คุณรู้จักและฉันจะอนุญาตให้คุณเข้าถึง doc dancancro.com/technology-questionnaires
Dan Cancro

13

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

นี่คือระหว่าง generator-angular-fullstack และ MEAN.js ร้อยละเป็นค่าสำหรับผลประโยชน์แต่ละรายการตามน้ำหนักส่วนบุคคลของฉันซึ่งเครื่องกำเนิดไฟฟ้าที่สมบูรณ์แบบจะเป็น 100%

generator- เชิงมุม - fullstack เสนอ 8% ที่ MEANJS.org ทำไม่ได้

  • การทดสอบแบบ end-to-end 1.9% สำหรับลูกค้า
  • โรงงาน 0.6%
  • ผู้ให้บริการ 0.5%
  • SASS 0.4%
  • น้อยกว่า 0.4%
  • เข็มทิศ 0.4%
  • มัณฑนากร 0.4%
  • เครื่องรับย่อยปลายทาง 0.4%
  • ความเห็น 0.4%
  • 0.3% FontAwesome
  • 0.3% เรียกใช้เซิร์ฟเวอร์ในโหมดแก้ไขข้อบกพร่อง
  • บันทึก 0.3% กำเนิดคำตอบไปยังไฟล์
  • ค่าคงที่ 0.2%
  • สคริปต์สร้างการพัฒนา 0.2%: ...... แทนที่บุคคลที่สามที่ใช้รุ่น CDN
  • การรับรองความถูกต้อง 0.2% - คุกกี้
  • การพิสูจน์ตัวตน 0.2% - JSON Web Token (JWT)
  • การบันทึกทางฝั่งเซิร์ฟเวอร์ 0.2%
  • สคริปต์สร้างการพัฒนา 0.1%: เรียกใช้งานแบบขนานเพื่อเร่งความเร็ว
  • สคริปต์สร้างการพัฒนา 0.1%: เปลี่ยนชื่อไฟล์สินทรัพย์เพื่อป้องกันการแคชของเบราว์เซอร์
  • สคริปต์สร้างการพัฒนา 0.1%: ทดสอบการใช้งานจนจบ
  • สคริปต์สร้างการผลิต 0.1%: การแบ่งย่อยล่วงหน้าอย่างปลอดภัย
  • สคริปต์การสร้างการผลิต 0.1%: เพิ่มคำนำหน้าผู้ขาย CSS
  • การปรับใช้ Heroku อัตโนมัติ 0.1%
  • ค่า 0.1%
  • หยก 0.1%
  • 0.1% Coffeescript
  • การ จำกัด เส้นทางของเซิร์ฟเวอร์ที่รับรองความถูกต้อง 0.1%
  • Twitter Bootstrap เวอร์ชัน SASS 0.1%
  • สคริปต์สร้างการผลิต 0.1%: บีบอัดรูปภาพ
  • การปรับใช้ OpenShift อัตโนมัติ 0.1%

MeanJS.org เสนอ 9% ที่ generator-angular-fullstack ไม่ได้

  • 3.7% กลุ่มผู้ใช้ที่อุทิศตน / ค้นหาได้: เวลาตอบสนองส่วนใหญ่ต่ำกว่าหนึ่งวัน
  • 0.4% สร้างเส้นทาง
  • การรับรองความถูกต้อง 0.4% - โอ้อวด
  • กำหนดค่า 0.4%
  • 0.4% i18n, การแปล
  • โปรไฟล์แอปพลิเคชันอินพุต 0.4%
  • คุณสมบัติ 0.3% (โมดูล aka, เอนทิตี, crud-mock)
  • ระบบเมนู 0.3%
  • ตัวเลือก 0.3% สำหรับการทำคอมโพเนนต์ย่อย
  • ทดสอบ 0.3% - ฝั่งไคลเอ็นต์
  • 0.3% ประสิทธิภาพของ Javascript
  • สคริปต์สร้างงานสร้าง 0.3%: สร้างหน้าคงที่สำหรับ SEO
  • ติดตั้งเร็ว 0.2% หรือไม่
  • กลุ่มผู้ใช้ที่อุทิศตน / ค้นหาได้ 0.2%
  • สคริปต์การพัฒนา 0.1%: โหลดไฟล์บิลด์ใหม่เมื่อมีการเปลี่ยนแปลง
  • สคริปต์สร้างการพัฒนา 0.1%: ไฟล์กาแฟที่คอมไพล์ด้วย JS
  • ตัวควบคุม 0.1% - ฝั่งเซิร์ฟเวอร์
  • รุ่น 0.1% - ฝั่งเซิร์ฟเวอร์
  • เส้นทาง 0.1% - ฝั่งเซิร์ฟเวอร์
  • การทดสอบ 0.1% - ฝั่งเซิร์ฟเวอร์
  • 0.1% Swig
  • ปลอดภัย 0.1% จากการปลอมแปลง IP
  • สคริปต์สร้างการผลิต 0.1%: uglification
  • 0.0% วิธีการดู: URL ขึ้นต้นด้วย "#!"
  • 0.0% วิธีการบริการส่วนหน้าและการโทร ajax: ใช้ทรัพยากร $

นี่คือหนึ่งระหว่าง MEAN.io และ MEAN.js ในรูปแบบที่อ่านได้มากขึ้น

<table border="1" cellpadding="10"><tbody><tr><td valign="top" width="33%"><br><br><h1>MeanJS.org. provides these benefits that MEAN.io. doesn't</h1><br><br><b>Help</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions, using github issues<br>&nbsp;&nbsp;&nbsp;&nbsp;* There's a book about it<br><b>File Organization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Basic sourcecode organization, module(-&gt;submodule)-&gt;side<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold directives<br><b>Code Modularization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS modules, Only one module definition per file<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS modules, Don’t alter a module other than where it is defined<br><b>Model</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Object-relational mapping<br>&nbsp;&nbsp;&nbsp;&nbsp;* Server-side validation, server-side example<br>&nbsp;&nbsp;&nbsp;&nbsp;* Client side validation, using Angular 1.3<br><b>View</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS views, Directives start with "data-"<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to data readiness, Use ng-init<br><b>Control</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, URLs start with '#!'<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, Use query parameters to store route state<br><b>Support for things</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Languages, LESS<br>&nbsp;&nbsp;&nbsp;&nbsp;* Languages, SASS<br><b>Syntax, language and coding</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* JavaScript 5 best practices, Don't use "new"<br><b>Testing</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Testing, using Mocha<br>&nbsp;&nbsp;&nbsp;&nbsp;* End-to-end tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* End-to-end tests, using Protractor<br>&nbsp;&nbsp;&nbsp;&nbsp;* Continuous integration (CI), using Travis<br><b>Development and debugging</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Command line interface (CLI), using Yeoman<br><b>Build</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build configurations file(s)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation, using Azure<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation, using Digital Ocean, screencast of it<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation, using Heroku, screencast of it<br><b>Code Generation</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Input application profile<br>&nbsp;&nbsp;&nbsp;&nbsp;* Quick install?<br>&nbsp;&nbsp;&nbsp;&nbsp;* Options for making subcomponents<br>&nbsp;&nbsp;&nbsp;&nbsp;* config generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* controller (client side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* directive generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* filter generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* route (client side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* service (client side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* test - client side<br>&nbsp;&nbsp;&nbsp;&nbsp;* view or view partial generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* controller (server side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* model (server side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* route (server side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* test (server side) generator<br><b>Implemented Functionality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Account Management, Forgotten Password with Resetting<br>&nbsp;&nbsp;&nbsp;&nbsp;* Chat<br>&nbsp;&nbsp;&nbsp;&nbsp;* CSV processing<br>&nbsp;&nbsp;&nbsp;&nbsp;* E-mail sending system<br>&nbsp;&nbsp;&nbsp;&nbsp;* E-mail sending system, using Nodemailer<br>&nbsp;&nbsp;&nbsp;&nbsp;* E-mail sending system, using its own e-mail implementation<br>&nbsp;&nbsp;&nbsp;&nbsp;* Menus system, state-based<br>&nbsp;&nbsp;&nbsp;&nbsp;* Paypal integration<br>&nbsp;&nbsp;&nbsp;&nbsp;* Responsive design<br>&nbsp;&nbsp;&nbsp;&nbsp;* Social connections management page<br><b>Performance</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Creates a favicon<br><b>Security</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Safe from IP Spoofing<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authorization, Access Contol List (ACL)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, Cookie<br>&nbsp;&nbsp;&nbsp;&nbsp;* Websocket and RESTful http share security policies<br><br><br></td><td valign="top" width="33%"><br><br><h1>MEAN.io. provides these benefits that MeanJS.org. doesn't</h1><br><br><b>Quality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Sponsoring company<br><b>Help</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Docs with flatdoc<br><b>Code Modularization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Share code between projects<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module manager<br><b>View</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to data readiness, Use state.resolve()<br><b>Control</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend code loading, Use AMD with Require.js<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend code loading, using wiredep<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to error handling, Server-side logging<br><b>Client/Server Communication</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Centralized event handling<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to XHR calls, using $http and $q<br><b>Syntax, language and coding</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* JavaScript 5 best practices, Wrap code in an IIFE (SEAF, SIAF)<br><b>Development and debugging</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* API introspection report and testing interface, using Swagger<br>&nbsp;&nbsp;&nbsp;&nbsp;* Command line interface (CLI), using Independent command line interface<br><b>Build</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, add IIFEs (SEAF, SIAF) to executable copies of code<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation, using Heroku<br><b>Code Generation</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Scaffolding undo&nbsp;&nbsp;&nbsp;&nbsp;(mean package -d &lt;name&gt;)<br>&nbsp;&nbsp;&nbsp;&nbsp;* FEATURE (a.k.a. module, entity) generator, Menu items added for new features<br><b>Implemented Functionality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Admin page for users and roles<br>&nbsp;&nbsp;&nbsp;&nbsp;* Content Management System&nbsp;&nbsp;&nbsp;&nbsp;(Use special data-bound directives in your templates.<br>Switch to edit mode and you can edit the values right where you see them)<br>&nbsp;&nbsp;&nbsp;&nbsp;* File Upload<br>&nbsp;&nbsp;&nbsp;&nbsp;* i18n, localization<br>&nbsp;&nbsp;&nbsp;&nbsp;* Menus system, submenus<br>&nbsp;&nbsp;&nbsp;&nbsp;* Search<br>&nbsp;&nbsp;&nbsp;&nbsp;* Search, actually works with backend API<br>&nbsp;&nbsp;&nbsp;&nbsp;* Search, using Elastic Search<br>&nbsp;&nbsp;&nbsp;&nbsp;* Styles, using Bootstrap, using UI Bootstrap AngularJS directives<br>&nbsp;&nbsp;&nbsp;&nbsp;* Text (WYSIWYG) Editor<br>&nbsp;&nbsp;&nbsp;&nbsp;* Text (WYSIWYG) Editor, using medium-editor<br><b>Performance</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Instrumentation, server-side<br><b>Security</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Serverside authenticated route restriction<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, using Oauth, Link multiple Oauth strategies to one account<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, JSON Web Token (JWT)<br><br><br></td><td valign="top" width="33%"><br><br><h1>MEAN.io. and MeanJS.org. both provide these benefits</h1><br><br><b>Quality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Version Control, using git<br><b>Platforms</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Client-side JS Framework, using AngularJS<br>&nbsp;&nbsp;&nbsp;&nbsp;* Frontend Server/ Framework, using Node.JS<br>&nbsp;&nbsp;&nbsp;&nbsp;* Frontend Server/ Framework, using Node.JS, using Express<br>&nbsp;&nbsp;&nbsp;&nbsp;* API Server/ Framework, using NodeJS<br>&nbsp;&nbsp;&nbsp;&nbsp;* API Server/ Framework, using NodeJS, using Express<br><b>Help</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions, using Google Groups<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions, using Facebook<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions, response time mostly under a day<br>&nbsp;&nbsp;&nbsp;&nbsp;* Example application<br>&nbsp;&nbsp;&nbsp;&nbsp;* Tutorial screencast in English<br>&nbsp;&nbsp;&nbsp;&nbsp;* Tutorial screencast in English, using Youtube<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated chatroom<br><b>File Organization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Basic sourcecode organization, module(-&gt;submodule)-&gt;side, with type subfolders<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold controllers<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold services<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold templates<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold unit tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Separate route configuration files for each module<br><b>Code Modularization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Modularized Functionality<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS modules, No global 'app' module variable<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS modules, No global 'app' module variable without an IIFE<br><b>Model</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Setup of persistent storage<br>&nbsp;&nbsp;&nbsp;&nbsp;* Setup of persistent storage, using NoSQL db<br>&nbsp;&nbsp;&nbsp;&nbsp;* Setup of persistent storage, using NoSQL db, using MongoDB<br><b>View</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* No XHR calls in controllers<br>&nbsp;&nbsp;&nbsp;&nbsp;* Templates, using Angular directives<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to data readiness, prevents Flash of Unstyled/compiled Content (FOUC)<br><b>Control</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, example of it<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, State-based routing<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, State-based routing, using ui-router<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, HTML5 Mode<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend code loading, using angular.bootstrap()<br><b>Client/Server Communication</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Serve status codes only as responses<br>&nbsp;&nbsp;&nbsp;&nbsp;* Accept nested, JSON parameters<br>&nbsp;&nbsp;&nbsp;&nbsp;* Add timer header to requests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Support for signed and encrypted cookies<br>&nbsp;&nbsp;&nbsp;&nbsp;* Serve URLs based on the route definitions<br>&nbsp;&nbsp;&nbsp;&nbsp;* Can serve headers only<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to XHR calls, using JSON<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to XHR calls, using $resource (angular-resource)<br><b>Support for things</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Languages, JavaScript (server side)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Languages, Swig<br><b>Syntax, language and coding</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* JavaScript 5 best practices, Use 'use strict'<br><b>Tool Configuration/customization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Separate runtime configuration profiles<br><b>Testing</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Testing, using Jasmine<br>&nbsp;&nbsp;&nbsp;&nbsp;* Testing, using Karma<br>&nbsp;&nbsp;&nbsp;&nbsp;* Client-side unit tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Continuous integration (CI)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Automated device testing, using Live Reload<br>&nbsp;&nbsp;&nbsp;&nbsp;* Server-side integration &amp; unit tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Server-side integration &amp; unit tests, using Mocha<br><b>Development and debugging</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Command line interface (CLI)<br><b>Build</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build-time Dependency Management, using npm<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build-time Dependency Management, using bower<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build tool / Task runner, using Grunt<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build tool / Task runner, using gulp<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, script<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, reload build script file upon change<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, copy assets to build or dist or target folder<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, html page processing<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, html page processing, inject references by searching directories<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, html page processing, inject references by searching directories, injects js references<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, html page processing, inject references by searching directories, injects css references<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, LESS/SASS/etc files are linted, compiled<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, JavaScript style checking<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, JavaScript style checking, using jshint or jslint<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, run unit tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, script<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, concatenation (aggregation, globbing, bundling)&nbsp;&nbsp;&nbsp;&nbsp;(If you add debug:true to your config/env/development.js the will not be <br>uglified)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, minification<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, safe pre-minification, using ng-annotate<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, uglification<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, make static pages for SEO<br><b>Code Generation</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* FEATURE (a.k.a. module, entity) generator&nbsp;&nbsp;&nbsp;&nbsp;(README.md<br>feature css<br>routes<br>controller<br>view<br>additional menu item)<br><b>Implemented Functionality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* 404 Page<br>&nbsp;&nbsp;&nbsp;&nbsp;* 500 Page<br>&nbsp;&nbsp;&nbsp;&nbsp;* Account Management<br>&nbsp;&nbsp;&nbsp;&nbsp;* Account Management, register/login/logout<br>&nbsp;&nbsp;&nbsp;&nbsp;* Account Management, is password manager friendly<br>&nbsp;&nbsp;&nbsp;&nbsp;* Front-end CRUD<br>&nbsp;&nbsp;&nbsp;&nbsp;* Full-stack CRUD<br>&nbsp;&nbsp;&nbsp;&nbsp;* Full-stack CRUD, with Read<br>&nbsp;&nbsp;&nbsp;&nbsp;* Full-stack CRUD, with Create, Update and Delete<br>&nbsp;&nbsp;&nbsp;&nbsp;* Google Analytics<br>&nbsp;&nbsp;&nbsp;&nbsp;* Menus system<br>&nbsp;&nbsp;&nbsp;&nbsp;* Realtime data sync<br>&nbsp;&nbsp;&nbsp;&nbsp;* Realtime data sync, using socket.io<br>&nbsp;&nbsp;&nbsp;&nbsp;* Styles, using Bootstrap<br><b>Performance</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Javascript performance thing<br>&nbsp;&nbsp;&nbsp;&nbsp;* Javascript performance thing, using lodash<br>&nbsp;&nbsp;&nbsp;&nbsp;* One event-loop thread handles all requests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Configurable response caching&nbsp;&nbsp;&nbsp;&nbsp;(Express plugin<br><b>https</b>://www.npmjs.org/package/apicache)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Clustered HTTP sessions<br><b>Security</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* JavaScript obfuscation<br>&nbsp;&nbsp;&nbsp;&nbsp;* https<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, using Oauth<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, Basic&nbsp;&nbsp;&nbsp;&nbsp;(With Passport or others)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, Digest&nbsp;&nbsp;&nbsp;&nbsp;(With Passport or others)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, Token&nbsp;&nbsp;&nbsp;&nbsp;(With Passport or others)<br></td></tr></tbody></table>


13
ฉันขอแนะนำให้คุณรวมสองคำตอบที่คุณโพสต์ไว้
CMPSoares

8

ฉันไม่มีใครแปลกใจที่ได้กล่าวถึงกำเนิดองค์รักษ์เชิงมุม-fullstack มันเป็นตัวกำเนิดชุมชน Yeoman อันดับหนึ่งที่ปัจจุบันมี 1,490 ดาวบนหน้าตัวสร้างและ vs 81 ดาวของ Mean.js ดูเหมือนว่าจะได้รับการบำรุงรักษาอย่างแข็งขันและอยู่ในเวอร์ชัน 2.05 เมื่อฉันเขียนสิ่งนี้ ซึ่งแตกต่างจาก MEANJS มันไม่ได้ใช้ Swig สำหรับ templating สามารถนำไปใช้กับโครงสร้างหนังสือเดินทาง


@ คำตอบของ SDude พูดถึงมัน
CMPSoares

ที่ไหน? ฉันไม่เห็นที่ใดก็ได้ในคำตอบหรือความคิดเห็นของเขา
honkskillet

บางทีฉันอาจเข้าใจผิดคำตอบของคุณ ... แต่ SDude บอกว่า "Mean.js ใช้ Yeoman Generators" สำหรับการนั่งร้าน
CMPSoares

1
ฉันลืมเรื่องนี้ไปโดยสิ้นเชิง จริง ๆ แล้วฉันได้เรียนรู้เกี่ยวกับ MEAN.js ในความคิดเห็น github ของ generator-angular-fullstack นานมาแล้ว ... ฉันได้เพิ่มไปยังคำตอบแล้ว
joseldn

2
@CMPSoares ... มีเครื่องกำเนิดไฟฟ้าแบบ Yeoman หลายตัวที่แยกออกมาเป็นกองหมายถึง Angular-Fullstack และ Mean.js เป็นเพียงสองในจำนวนมาก (arguably เนื้อมากที่สุดออกสอง?) คุณสามารถดูกำเนิดชุมชน Yeoman ทั้งหมดได้ที่นี่ ... Yeoman Generators
honkskillet
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.