
수백에서 수만에서 수만에서 수만 건의 레코드를 확장하는 강력한 React 및 React Native 앱을 구축하고 빠르게 유지하십시오.
| watermelondb | |
|---|---|
| ⚡️ | 얼마나 많은 데이터가 있든 앱을 즉시 시작하십시오. |
| ? | 수백에서 수만에서 수만 건의 레코드에서 매우 확장 가능 |
| ? | 게으른로드 . 필요할 때만 데이터를로드하십시오 |
| 오프라인 우선. 자신의 백엔드와 동기화하십시오 | |
| 멀티 플랫폼 . iOS, Android, Windows, Web 및 Node.js | |
| ⚛️ | React에 최적화되었습니다. 데이터를 구성 요소에 쉽게 연결할 수 있습니다 |
| ? | 프레임 워크-공수성. JS API를 사용하여 다른 UI 프레임 워크에 연결하십시오 |
| ⏱ | 빠른. 그리고 모든 릴리스마다 더 빨라지고 있습니다! |
| ✅ | 입증되었습니다. 2017 년부터 Nozbe를 Powers Nozbe (그리고 다른 많은 사람들) |
| 반응성. (선택 사항) RXJS API | |
| ? | 관계. 바위가 고요한 Sqlite Foundation을 기반으로합니다 |
| 흐름 또는 타입 스크립트가있는 정적 유형 |
Watermelondb 는 React Native 및 React 웹 앱에서 사용자 데이터를 처리하는 새로운 방법입니다.
React Native에서 복잡한 응용 프로그램을 구축하는 데 최적화되었으며 가장 큰 목표는 실제 성능 입니다. 간단히 말해서, 앱은 빠르게 시작해야합니다 .
간단한 앱의 경우 지속성 어댑터와 함께 Redux 또는 Mobx를 사용하는 것이 가장 쉬운 방법입니다. 그러나 수천 또는 수만 개의 데이터베이스 레코드로 확장을 시작하면 앱이 시작되면 느리게 진행됩니다 (특히 느린 Android 장치에서). 전체 데이터베이스를 JavaScript에로드하는 것은 비싸다!
수박은 게으르면서 그것을 고정시킵니다. 요청 될 때까지 아무것도로드되지 않습니다. 그리고 모든 쿼리는 별도의 기본 스레드의 Rock-Solid SQLite 데이터베이스에서 직접 수행되므로 대부분의 쿼리는 순간적으로 해결됩니다.
그러나 sqlite를 직접 사용하는 것과는 달리 수박은 완전히 관찰 가능합니다 . 따라서 레코드를 변경할 때마다 이에 의존하는 모든 UI는 자동으로 재 렌더링됩니다. 예를 들어, 할 일 앱에서 작업을 완료하면 작업 구성 요소, 목록 (재주문) 및 모든 관련 작업 카운터를 다시 렌더링합니다. 자세히 알아보십시오 .
|
| | ---- | --- | |
차세대 반응 데이터베이스
(Watermelondb에 대한 이야기)
Quick (Over-Simplified) 예 : 게시물 및 댓글이있는 앱.
먼저 모델을 정의합니다.
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는 오픈 소스 프로젝트이며 번성하려면 도움이 필요합니다!
누락 된 기능, 버그 또는 다른 개선 사항이 있으면 기여하는 것이 좋습니다! 프로젝트 설정, 테스트 등에 대한 자세한 내용은 지침을 얻고 기고 안내서를 참조하십시오.
방금 시작한다면 기여하기 쉬운 첫 번째 문제를 참조하십시오. 사소한 기여를한다면 저에게 이메일을 보내 주시면 좋은 것을 보내 드리겠습니다. 상표!
Watermelondb를 사용하여 앱 제작을 고려하고 있다면 알려주십시오.
Watermelondb는 @nozbe에 의해 만들어졌습니다.
Watermelondb의 주요 저자이자 관리자는 Radek Pietruszewski (웹 사이트 ⋅? (Twitter))입니다.
모든 기고자를 참조하십시오.
Watermelondb는 MIT 라이센스에 따라 제공됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.