使用 Dexie.js 创建一个离线笔记应用

使用 Dexie.js 创建一个离线笔记应用

创建一个使用 Dexie.js 的小型离线笔记应用,可以分为以下几个步骤。Dexie.js 是一个轻量级、强大的 IndexedDB 库,非常适合在浏览器中存储离线数据。

1. 初始化项目

安装必要工具

  1. 确保你已经安装了 Node.js 和 npm。
  2. 创建一个新的项目文件夹并初始化项目:
mkdir offline-notes
cd offline-notes
npm init -y
  1. 安装 Dexie.js 和其他工具(如 Vite 用于开发):
npm install dexie
npm install vite --save-dev
  1. 添加必要的依赖,比如 Vue.js(前端框架,可选):
npm install vue

2. 配置项目结构

创建以下文件结构:

offline-notes/
├── index.html
├── src/
│   ├── main.js
│   ├── db.js
│   ├── components/
│   │   ├── NoteList.vue
│   │   ├── AddNote.vue
├── package.json
└── vite.config.js

3. 设置 Vite 配置

在项目根目录创建 vite.config.js

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  plugins: [vue()],
});

4. 配置 Dexie 数据库

src/db.js 中创建并配置 Dexie 数据库:

import Dexie from 'dexie';

// 创建数据库实例
const db = new Dexie('NotesDatabase');

// 定义表结构
db.version(1).stores({
  notes: '++id, title, content, createdAt',
});

export default db;

5. 编写核心组件

NoteList.vue

显示所有笔记的组件:

<template>
  <div>
    <h1>笔记列表</h1>
    <ul>
      <li v-for="note in notes" :key="note.id">
        <h3>{{ note.title }}</h3>
        <p>{{ note.content }}</p>
        <small>{{ new Date(note.createdAt).toLocaleString() }}</small>
      </li>
    </ul>
  </div>
</template>

<script>
import db from '../db';

export default {
  data() {
    return {
      notes: [],
    };
  },
  async mounted() {
    this.notes = await db.notes.toArray(); // 获取所有笔记
  },
};
</script>

AddNote.vue

添加新笔记的组件:

<template>
  <div>
    <h1>添加新笔记</h1>
    <form @submit.prevent="addNote">
      <input v-model="title" placeholder="标题" required />
      <textarea v-model="content" placeholder="内容" required></textarea>
      <button type="submit">保存</button>
    </form>
  </div>
</template>

<script>
import db from '../db';

export default {
  data() {
    return {
      title: '',
      content: '',
    };
  },
  methods: {
    async addNote() {
      await db.notes.add({
        title: this.title,
        content: this.content,
        createdAt: new Date().toISOString(),
      });
      this.title = '';
      this.content = '';
      alert('笔记已保存!');
    },
  },
};
</script>

6. 整合应用入口

src/main.js 中挂载 Vue 应用:

import { createApp } from 'vue';
import NoteList from './components/NoteList.vue';
import AddNote from './components/AddNote.vue';

const app = createApp({
  components: {
    NoteList,
    AddNote,
  },
  template: `
    <div>
      <add-note></add-note>
      <note-list></note-list>
    </div>
  `,
});

app.mount('#app');

7. 创建 HTML 文件

在根目录的 index.html 中引入:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>离线笔记应用</title>
</head>
<body>
  <div id="app"></div>
  <script type="module" src="/src/main.js"></script>
</body>
</html>

8. 运行项目

  1. 在终端中启动 Vite 开发服务器:
npx vite
  1. 打开浏览器访问 http://localhost:5173

功能扩展

  1. 搜索功能:在数据库中添加全文搜索功能。
  2. 同步功能:通过服务端 API 实现在线/离线同步。
  3. 分类标签:为笔记添加标签字段,支持按标签过滤。
  4. PWA 支持:使应用可以离线运行。

通过这种方式,你就能从零开始构建一个使用 Dexie.js 的简单离线笔记应用,并可以根据需求扩展功能!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值