【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#streaming
import 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】

Comments is loading... / 评论区正在加载中...