@atlas.jsสร้างด้วย❤ที่ strv
Atlas.js เป็นแพลตฟอร์มที่สร้างขึ้นใหม่สำหรับการใช้รหัสชิ้นส่วนใหม่ในหลายโครงการและเพื่อลดแอปพลิเคชันหม้อไอน้ำทั่วไปเช่นลำดับการเริ่มต้นและการปิดระบบของแอพ Node.js มาตรฐาน คุณเขียนส่วนประกอบ (หรือใช้ของเรา) ซึ่งให้ฟังก์ชั่น (เช่นส่วนประกอบฐานข้อมูล) ใส่ลงในอินสแตนซ์ของ Atlas และ Atlas จะดูแลส่วนที่เหลือ การใช้ ATLAS คุณจะลดการเริ่มต้นแอปพลิเคชันและลำดับการปิดลงในวัตถุการกำหนดค่าและรหัสหนึ่งบรรทัด
นี่คือรายการของส่วนประกอบที่ได้รับการดูแลจาก STRV
| ส่วนประกอบ | รุ่น | ข้อมูล |
|---|---|---|
| @atlas.js/atlas | แพ็คเกจหลักพร้อมทุกสิ่งที่จำเป็นในการกลิ้ง | |
| @atlas.js/cli | ยูทิลิตี้ CLI เพื่อจัดการแอพ Atlas ของคุณ | |
| @atlas.js/generator-atlas | Yeoman Generator เพื่อนั่งร้านแอป Atlas ใหม่ของคุณอย่างรวดเร็ว | |
| @atlas.js/aws | สำหรับการเชื่อมต่อกับ AWS | |
| @atlas.js/braintree | สำหรับการเชื่อมต่อกับการชำระเงิน Braintree | |
| @atlas.js/firebase | สำหรับการเชื่อมต่อกับ Firebase Services | |
| @atlas.js/koa | บริการและตะขอสำหรับการใช้งาน HTTP APIs ที่ใช้ KOA | |
| @atlas.js/mongoose | บริการและตะขอสำหรับการทำงานกับรุ่น MongoDB และ Mongoose | |
| @atlas.js/การคัดค้าน | บริการและตะขอสำหรับการทำงานกับ Object.js | |
| @atlas.js/Sequelize | บริการและตะขอสำหรับการทำงานกับภาคต่อ | |
| @atlas.js/nodemailer | บริการอีเมลทั่วไปพร้อมการสนับสนุนสำหรับผู้ให้บริการหลายราย | |
| @atlas.js/repl | ส่วนประกอบที่จะวางลงในเปลือกแบบอินเทอร์แอคทีฟที่มีแอตลาสโหลด | |
| @atlas.js/templates | การดำเนินการสำหรับการแสดงผลแม่แบบลงในสตริง HTML โดยใช้ coneLidate.js |
ไม่พบสิ่งที่คุณกำลังมองหา? เขียนของคุณเอง! ตรวจสอบบทเรียนที่เชื่อมโยงด้านล่าง
ต้องการความช่วยเหลือ? ตรวจสอบโฟลเดอร์บทช่วยสอนสำหรับ ... ดี ... บทเรียน -
ส่วนต่อไปนี้พูดถึงแรงจูงใจที่อยู่เบื้องหลังการดำรงอยู่ของ Atlas.js
เมื่อคุณทำความคุ้นเคยกับ Atlas.js และส่วนประกอบที่ทำจาก STRV คุณจะเริ่มเห็นและแม้กระทั่งรู้สึกว่ามีความพยายามอย่างมากในการทำให้แน่ใจว่าคุณสามารถแบ่งปันรหัสจำนวนมากระหว่างโครงการ เมื่อใดก็ตามที่เป็นไปได้ Atlas.js จะพยายามแนะนำคุณในลักษณะที่คุณควรจะสามารถเขียนโค้ดได้ค่อนข้างมากในลักษณะที่ไม่เฉพาะเจาะจงทางธุรกิจและเพิ่งเผยแพร่ไปยัง NPM เป็นโมดูลและต่อมาเมื่อคุณต้องการอีกครั้งในโครงการอื่น
การจัดการลำดับการเริ่มต้นไม่ใช่เรื่องง่ายเสมอไป บางครั้งมันก็ยังไม่ชัดเจนว่าทำไมบางคนควรรบกวนตัวเองด้วยลำดับการเริ่มต้นที่ถูกต้องของแอพ - ทุกวันนี้ห้องสมุดหลายแห่งที่ต้องใช้การเริ่มต้น async บางอย่างรองรับการร้องขอบางอย่างที่คุณเพิ่งเริ่มใช้ห้องสมุดและจะให้ผลลัพธ์เมื่อพร้อม
มีปัญหาหลายอย่าง:
บริการบางอย่างอาจเริ่มต้นได้เร็วกว่าอื่น ๆ
เมื่อคุณเริ่มต้นเซิร์ฟเวอร์ HTTP ก่อนที่คุณจะมีการเชื่อมต่อฐานข้อมูลพร้อมมันอาจเกิดขึ้นได้ว่าคุณจะได้รับทราฟฟิกที่คุณยังไม่พร้อมที่จะให้บริการ สำหรับโหลดขนาดเล็กสิ่งนี้อาจไม่ใช่ปัญหา แต่สำหรับไซต์การจราจรสูงอาจหมายถึงความล่าช้าหลายวินาทีและคุณอาจหมดหน่วยความจำที่มีอยู่เพียงแค่แคชคำขอที่ค้างอยู่นานเกินไป ในกรณีที่การแคชคำขอประเภทนี้ไม่ได้รับการสนับสนุนมันเป็นไปได้แม้กระทั่งแอปของคุณจะพัง
บริการบางอย่างอาจหยุดเร็วกว่าอื่น ๆ
จะเกิดอะไรขึ้นกับแอปพลิเคชันของคุณเมื่อคุณปิดการเชื่อมต่อฐานข้อมูลก่อนที่คุณจะปิดเซิร์ฟเวอร์ HTTP แน่นอนว่ามันสามารถจัดการได้ง่ายด้วยบริการเพียงสองบริการ แต่ถ้าคุณมีมากกว่านี้ล่ะ? บางทีคุณอาจมีเซิร์ฟเวอร์ Redis บางแห่งอยู่ที่นั่นบางทีการเชื่อมต่อคลัสเตอร์ Elasticsearch บางส่วนและสิ่งอื่น ๆ - มันอาจจะค่อนข้างซับซ้อนค่อนข้างเร็ว ด้วย Atlas คุณให้คำสั่งซื้อและเสร็จสิ้น - Atlas จะหยุดบริการทีละคน
นักพัฒนาบางคนไม่สนใจและเพียงแค่ process.exit() สิ่งนั้น
นักพัฒนาบางคนไม่ต้องการที่จะใส่ใจในการทำความสะอาดทรัพยากรอย่างเหมาะสมเช่นหมดเวลาซ็อกเก็ตผู้ฟัง ฯลฯ และเมื่อถึงเวลาพวกเขาก็บังคับกระบวนการ อย่างไรก็ตามสิ่งนี้อาจส่งผลให้คำขอของลูกค้าบางรายถูกยกเลิกก่อนส่งการตอบกลับส่งผลให้เกิดข้อผิดพลาดแปลก ๆ หน้าว่างข้อมูลที่ไม่สมบูรณ์ ฯลฯ
เมื่อคุณตัดสินใจที่จะไปในสิ่งที่ Atlas.js เสนอและใช้ส่วนประกอบอย่างเต็มที่คุณจะรู้ว่ามันง่ายมากที่จะนำทาง codebase ที่ไม่คุ้นเคยอย่างสมบูรณ์อย่างง่ายดาย เมื่อคุณทำงานให้กับ บริษัท อย่าง STRV ไม่ใช่เรื่องแปลกที่จะเปลี่ยนโครงการทุก ๆ สองสามเดือนหรือมากกว่านั้น เมื่อคุณสามารถลดเวลาที่จำเป็นในการขึ้นเครื่องใหม่/สาวให้กับทีมของคุณทุกฝ่ายที่เกี่ยวข้องจะมีความสุขมากขึ้น
นี่เป็นตัวอย่างการใช้งานที่สมบูรณ์ แอพโลกแห่งความจริงจะแยกส่วนการกำหนดค่าออกเป็นโมดูลของตัวเองอย่างน้อยแทนที่จะเขียนแบบอินไลน์เช่นนี้
นอกจากนี้คุณอาจต้องการตรวจสอบ
Atlas.init()ซึ่งเริ่มต้นส่วนประกอบทั้งหมดสำหรับคุณตามเค้าโครงไฟล์/โฟลเดอร์ที่คุณระบุ -หากคุณต้องการใช้ถนนง่าย ๆ ลองดูเครื่องกำเนิด Yeoman ของเราเพื่อสร้างโครงสร้างโฟลเดอร์พื้นฐานอย่างรวดเร็วและติดตั้งสิ่งที่จำเป็นทั้งหมด
// We start by importing the required components...
import { Atlas } from '@atlas.js/atlas'
import * as Koa from '@atlas.js/koa'
// Now we need an instance of Atlas, so let's make one
const atlas = new Atlas ( {
// We MUST specify the root folder where our app resides
// This should usually point to the folder where your package.json resides
root : __dirname ,
// Setting env is optional and it fallbacks to NODE_ENV, of course
env : process . env . NODE_ENV ,
// This is where all the configuration data should be specified, for all the components
config : {
// Configuration for services
services : {
// The `http` configuration will be given to the service which we will name as `http`
// (see the `atlas.service()` call below)
http : {
// This goes to the `listen()` function call
listen : {
port : 3000 ,
} ,
// Any properties which Koa supports can be set here
koa : {
proxy : true ,
} ,
} ,
} ,
// Configuration for actions
actions : { } ,
// ...aaand configuration for hooks
hooks : { } ,
} ,
} )
// We need to add the components we want to use to the application
// The first argument is the component's name - it will be used to locate the component's
// configuration and also the service will be exposed on that property:
// `atlas.services.http`
atlas . service ( 'http' , Koa . Service )
// Great, we can finally start the app!
atlas . start ( )
. then ( ( ) => console . log ( 'ready!' ) )
. catch ( err => console . error ( err ) )
export default atlasตัวเลือกการกำหนดค่าแต่ละองค์ประกอบยอมรับจะถูกบันทึกไว้ในที่เก็บ/โฟลเดอร์แพ็คเกจของตนเอง
ดังนั้นคุณมีแอพที่มีบริการ KOA ที่กำหนดค่าและทำงาน ... เยี่ยมมาก! แต่คุณอาจสงสัยว่าจะกำหนดมิดเดิลแวร์และเส้นทางของคุณที่ไหนและสิ่งสำคัญอื่น ๆ ทั้งหมด? คุณควรตรวจสอบโฟลเดอร์แบบฝึกหัดสำหรับข้อมูลเพิ่มเติม!
ดูไฟล์ใบอนุญาตสำหรับข้อมูล