
สร้างแอพตอบสนองที่มีประสิทธิภาพและตอบสนองที่มีขนาดตั้งแต่หลายร้อยถึงหลายหมื่นบันทึกและยังคงอยู่ อย่างรวดเร็ว ⚡
| แตงโม | |
|---|---|
| เปิดแอปของคุณทันที ไม่ว่าคุณจะมีข้อมูลมากแค่ไหน | |
| - | สามารถปรับขนาดได้สูง จากหลายร้อยถึงหมื่นบันทึก |
| - | ขี้เกียจโหลด โหลดข้อมูลเมื่อคุณต้องการเท่านั้น |
| ออฟไลน์ก่อน ซิงค์กับแบ็กเอนด์ของคุณเอง | |
| Multiplatform iOS, Android, Windows, Web และ Node.js | |
| ปรับให้เหมาะสมสำหรับการตอบสนอง เสียบข้อมูลเข้ากับส่วนประกอบได้อย่างง่ายดาย | |
| - | เฟรมเวิร์ก-อเนกประสงค์ ใช้ JS API เพื่อเสียบเข้ากับเฟรมเวิร์ก UI อื่น ๆ |
| เร็ว. และได้เร็วขึ้นทุกการเปิดตัว! | |
| พิสูจน์แล้ว Powers Nozbe ตั้งแต่ปี 2560 (และอื่น ๆ อีกมากมาย) | |
| ปฏิกิริยา (ไม่บังคับ) RXJS API | |
| - | ความสัมพันธ์ สร้างขึ้นบนมูลนิธิ Sqlite ของหินแข็ง |
| การพิมพ์แบบคงที่ ด้วยการไหลหรือ typescript |
WatermelondB เป็นวิธีใหม่ในการจัดการกับข้อมูลผู้ใช้ใน React Native และ React Web Apps
มันได้รับการปรับให้เหมาะสมสำหรับการสร้าง แอพพลิเคชั่นที่ซับซ้อน ใน React Native และเป้าหมายอันดับหนึ่งคือ ประสิทธิภาพในโลกแห่งความเป็นจริง ด้วยคำง่ายๆ แอปของคุณจะต้องเปิดตัวเร็ว
สำหรับแอพง่าย ๆ การใช้ Redux หรือ MOBX กับอะแดปเตอร์การคงอยู่เป็นวิธีที่ง่ายที่สุดในการไป แต่เมื่อคุณเริ่มปรับขนาดเป็นหลายพันหรือหลายหมื่นระเบียนฐานข้อมูลแอปของคุณจะเปิดตัวช้า (โดยเฉพาะบนอุปกรณ์ Android ที่ช้ากว่า) การโหลดฐานข้อมูลเต็มรูปแบบลงใน JavaScript นั้นมีราคาแพง!
แตงโมแก้ไขได้ โดยขี้เกียจ ไม่มีอะไรโหลดจนกว่าจะมีการร้องขอ และเนื่องจากการสืบค้นทั้งหมดจะดำเนินการโดยตรงบนฐานข้อมูล SQLite Rock-Solid บนเธรดดั้งเดิมแยกต่างหากการสืบค้นส่วนใหญ่จะแก้ไขได้ทันที
แต่แตกต่างจากการใช้ SQLite โดยตรงแตงโมสามารถ สังเกตได้อย่างเต็มที่ ดังนั้นเมื่อใดก็ตามที่คุณเปลี่ยนบันทึก UI ทั้งหมดที่ขึ้นอยู่กับมันจะทำให้เกิดใหม่โดยอัตโนมัติ ตัวอย่างเช่นการทำภารกิจให้เสร็จสมบูรณ์ในแอพที่ต้องทำจะแสดงส่วนประกอบงานอีกครั้งรายการ (เพื่อสั่งซื้อใหม่) และเคาน์เตอร์งานที่เกี่ยวข้องทั้งหมด เรียนรู้เพิ่มเติม
-
- - - - -
ฐานข้อมูลปฏิกิริยารุ่นต่อไป
(พูดคุยเกี่ยวกับแตงโม))
ตัวอย่างรวดเร็ว (ง่ายเกินไป) ตัวอย่าง: แอพที่มีโพสต์และความคิดเห็น
ก่อนอื่นคุณกำหนดโมเดล:
class Post extends Model {
@ field ( 'name' ) name
@ field ( 'body' ) body
@ children ( 'comments' ) comments
}
class Comment extends Model {
@ field ( 'body' ) body
@ field ( 'author' ) author
}จากนั้นคุณเชื่อมต่อส่วนประกอบกับข้อมูล:
const Comment = ( { comment } ) => (
< View style = { styles . commentBox } >
< Text > { comment . body } — by { comment . author } </ Text >
</ View >
)
// This is how you make your app reactive!
const enhance = withObservables ( [ 'comment' ] , ( { comment } ) => ( {
comment ,
} ) )
const EnhancedComment = enhance ( Comment )และตอนนี้คุณสามารถแสดงโพสต์ทั้งหมด:
const Post = ( { post , comments } ) => (
< View >
< Text > { post . name } </ Text >
< Text > Comments: </ Text >
{ comments . map ( comment =>
< EnhancedComment key = { comment . id } comment = { comment } />
) }
</ View >
)
const enhance = withObservables ( [ 'post' ] , ( { post } ) => ( {
post ,
comments : post . comments
} ) )ผลที่ได้คือปฏิกิริยาอย่างเต็มที่! เมื่อใดก็ตามที่โพสต์หรือความคิดเห็นจะถูกเพิ่มเปลี่ยนหรือลบส่วนประกอบที่เหมาะสม จะแสดงใหม่โดยอัตโนมัติ บนหน้าจอ ไม่สำคัญว่าการเปลี่ยนแปลงเกิดขึ้นในส่วนที่แตกต่างกันโดยสิ้นเชิงของแอพทั้งหมดมันใช้งานได้นอกกรอบ!














บริษัท หรือแอพของคุณใช้หรือไม่? เปิดคำขอดึงและเพิ่มโลโก้/ไอคอนของคุณพร้อมลิงค์ที่นี่!

WatermelondB เป็นโครงการโอเพนซอร์ซและต้องการความช่วยเหลือจากคุณในการเจริญเติบโต!
หากมีคุณสมบัติที่ขาดหายไปข้อผิดพลาดหรือการปรับปรุงอื่น ๆ ที่คุณต้องการเราขอแนะนำให้คุณมีส่วนร่วม! อย่าลังเลที่จะเปิดปัญหาเพื่อรับคำแนะนำและดูคู่มือการสนับสนุนสำหรับรายละเอียดเกี่ยวกับการตั้งค่าโครงการการทดสอบ ฯลฯ
หากคุณเพิ่งเริ่มต้นให้ดูปัญหาแรกที่ดีที่ง่ายต่อการมีส่วนร่วม หากคุณมีส่วนร่วมที่ไม่สำคัญส่งอีเมลถึงฉันแล้วฉันจะส่งสิ่งที่ดีให้คุณ? สติ๊กเกอร์!
หากคุณทำหรือกำลังพิจารณาสร้างแอพโดยใช้แตงโมโปรดแจ้งให้เราทราบ!
แตงโม ถูกสร้างขึ้นโดย @Nozbe
ผู้เขียนและผู้ดูแลหลัก ของแตงโม คือ Radek Pietruszewski (เว็บไซต์⋅? (Twitter))
ดูผู้มีส่วนร่วมทั้งหมด
แตงโมมีให้บริการภายใต้ใบอนุญาต MIT ดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม