【Note】适用于构建即时应用的客户端侧数据库 InstantDB
"个人关于 InstantDB 这个项目的一些笔记。"
Github: InstantDB
这个标题我个人觉得是个噱头。因为存储数据的数据库本身并不是存储在客户端侧的。
它所说说的 Clinet-side-databse
是指它有一个类似于 React Server Component 的方便的API在客户端侧使用:
function Chat() { // 1. 读取数据 const { isLoading, error, data } = useQuery({ messages: {}, });
// 2. 写数据 const addMessage = (message) => { transact(tx.messages[id()].update(message)); }
// 3. 根据数据进行渲染 return <UI data={data} onAdd={addMessage} /> }
然而,React的 Server Components 现在正在逐渐推进类似的操作:
// 这段代码是在服务端侧运行的,用户在请求页面时,服务端会把相应数据渲染发过来// React 本身也已经有了 streaming 之类的特性,例如 Next.js:// https://nextjs.org/docs/app/building-your-application/rendering/server-components#streamingimport Expandable from './Expandable';
async function Notes() { const notes = await db.notes.getAll(); return ( <div> {notes.map(note => ( <Expandable key={note.id}> <p note={note} /> </Expandable> ))} </div> )}
它解决的问题是:极大地方便了例如 Notion 之类的可以实时协作的软件开发,因为数据直接通过客户端向服务端的数据库读取,减少了设计后端的痛苦。
而他们CEO在 HN 上的宣传 也让我觉得他们只是想卖他们的数据服务 :(
之所以记录一下是因为它似乎支持本地部署,btw,我总归不看好。
【END】