最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)

 更新時(shí)間:2024年03月22日 11:50:48   作者:A丶?jí)m土  
SQLite是一種嵌入式關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),是一個(gè)零配置、無(wú)服務(wù)器的、自給自足的、事務(wù)性的SQL數(shù)據(jù)庫(kù)引擎,這篇文章主要給大家介紹了關(guān)于如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)的相關(guān)資料,需要的朋友可以參考下

本篇文章將介紹如何在 Vue3 和 Vite 項(xiàng)目中使用 SQLite 數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)。我們將使用 better-sqlite3 庫(kù)來(lái)創(chuàng)建和管理 SQLite 數(shù)據(jù)庫(kù),并將使用 Vue3 來(lái)開(kāi)發(fā)前端界面。

創(chuàng)建項(xiàng)目

首先,我們需要?jiǎng)?chuàng)建一個(gè)新的 Vue3 項(xiàng)目??梢允褂靡韵旅顒?chuàng)建一個(gè)名為 vue-sqlite 的新項(xiàng)目:

vue create vue-sqlite

然后,安裝所需的依賴項(xiàng),包括 better-sqlite3

npm install better-sqlite3

創(chuàng)建 SQLite 數(shù)據(jù)庫(kù)

接下來(lái),我們需要?jiǎng)?chuàng)建 SQLite 數(shù)據(jù)庫(kù)??梢栽陧?xiàng)目根目錄下創(chuàng)建一個(gè)名為 database.js 的文件,并將以下代碼添加到文件中:

const sqlite = require('better-sqlite3')
const path = require('path')

const dbPath = path.join(__dirname, 'database.sqlite')
const db = new sqlite(dbPath)

const initDb = () => {
  db.prepare(`
    CREATE TABLE IF NOT EXISTS todos (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      text TEXT NOT NULL,
      completed INTEGER NOT NULL DEFAULT 0
    );
  `).run()
}

module.exports = {
  db,
  initDb,
}

在上述代碼中,我們使用 better-sqlite3 庫(kù)創(chuàng)建了一個(gè)名為 db 的 SQLite 數(shù)據(jù)庫(kù)實(shí)例,并將其導(dǎo)出。同時(shí),我們還定義了一個(gè)名為 initDb 的函數(shù),用于初始化數(shù)據(jù)庫(kù)。在 initDb 函數(shù)中,我們使用 SQL 語(yǔ)句創(chuàng)建了一個(gè)名為 todos 的表,該表包括 idtext 和 completed 三個(gè)字段。

創(chuàng)建數(shù)據(jù)模型

接下來(lái),我們需要?jiǎng)?chuàng)建數(shù)據(jù)模型??梢栽陧?xiàng)目根目錄下創(chuàng)建一個(gè)名為 Todo.js 的文件,并將以下代碼添加到文件中:

const { db } = require('./database')

class Todo {
  constructor(text, completed = false) {
    this.text = text
    this.completed = completed
  }

  save() {
    const stmt = db.prepare(`
      INSERT INTO todos (text, completed)
      VALUES (?, ?)
    `)
    stmt.run(this.text, this.completed ? 1 : 0)
  }

  static findAll() {
    const stmt = db.prepare(`
      SELECT *
      FROM todos
    `)
    const rows = stmt.all()
    return rows.map(row => new Todo(row.text, row.completed))
  }

  static findById(id) {
    const stmt = db.prepare(`
      SELECT *
      FROM todos
      WHERE id = ?
    `)
    const row = stmt.get(id)
    return row ? new Todo(row.text, row.completed) : null
  }

  update() {
    const stmt = db.prepare(`
      UPDATE todos
      SET text = ?, completed = ?
      WHERE id = ?
    `)
    stmt.run(this.text, this.completed ? 1 : 0, this.id)
  }

  delete() {
    const stmt = db.prepare(`
      DELETE FROM todos
      WHERE id = ?
    `)
    stmt.run(this.id)
  }
}

module.exports = Todo

在上述代碼中,我們定義了一個(gè)名為 Todo 的類,用于表示待辦事項(xiàng)的數(shù)據(jù)模型。在構(gòu)造函數(shù)中,我們定義了 text 和 completed 兩個(gè)屬性。同時(shí),我們還定義了 save、findAllfindById、update 和 delete 等方法,用于對(duì)數(shù)據(jù)進(jìn)行增刪改查操作。

在 save 方法中,我們使用 SQL 語(yǔ)句將當(dāng)前待辦事項(xiàng)插入到 todos 表中。在 findAll 方法中,我們使用 SQL 語(yǔ)句查詢所有的待辦事項(xiàng),并將查詢結(jié)果轉(zhuǎn)換為 Todo 類的實(shí)例。在 findById 方法中,我們使用 SQL 語(yǔ)句查詢指定 ID 的待辦事項(xiàng),并將查詢結(jié)果轉(zhuǎn)換為 Todo 類的實(shí)例。在 update 方法中,我們使用 SQL 語(yǔ)句更新指定 ID 的待辦事項(xiàng)。在 delete 方法中,我們使用 SQL 語(yǔ)句刪除指定 ID 的待辦事項(xiàng)。

創(chuàng)建界面

接下來(lái),我們需要?jiǎng)?chuàng)建界面??梢栽陧?xiàng)目根目錄下創(chuàng)建一個(gè)名為 TodoList.vue 的文件,并將以下代碼添加到文件中:

<template>
  <div>
    <h1>Todo List</h1>
    <form @submit.prevent="addTodo"> 
      <input v-model="newTodoText" type="text" placeholder="Add a new todo">
      <button type="submit">Add</button>
    </form>
    <ul>
      <li v-for="todo in todos" :key="todo.id">
        <input type="checkbox" v-model="todo.completed" @change="updateTodo(todo)">
        <span :class="{ completed: todo.completed }">{{ todo.text }}</span>
        <button @click="deleteTodo(todo)">Delete</button>
      </li>
    </ul>
  </div>
</template>

<script>
import Todo from './Todo'

export default {
  data() {
    return {
      newTodoText: '',
      todos: [],
    }
  },
  async mounted() {
    const rows = await Todo.findAll()
    this.todos = rows
  },
  methods: {
    async addTodo() {
      const todo = new Todo(this.newTodoText)
      todo.save()
      this.todos.push(todo)
      this.newTodoText = ''
    },
    async updateTodo(todo) {
      todo.update()
    },
    async deleteTodo(todo) {
      todo.delete()
      this.todos = this.todos.filter(t => t.id !== todo.id)
    },
  },
}
</script>

<style>
.completed {
  text-decoration: line-through;
}
</style>

在上述代碼中,我們定義了一個(gè)名為 TodoList 的 Vue組件,用于展示待辦事項(xiàng)列表。在 data 中,我們定義了 newTodoText 和 todos 兩個(gè)屬性。在 mounted 生命周期鉤子中,我們使用 Todo 類的 findAll 方法查詢所有的待辦事項(xiàng),并將查詢結(jié)果賦值給 todos 屬性。在模板中,我們使用 v-for 指令渲染 todos 列表,并通過(guò) v-model 指令和 @change 事件實(shí)現(xiàn)待辦事項(xiàng)的勾選和更新。同時(shí),我們也通過(guò) @click 事件實(shí)現(xiàn)了待辦事項(xiàng)的刪除。

集成 SQLite

現(xiàn)在,我們已經(jīng)可以使用 Todo 類對(duì) SQLite 數(shù)據(jù)庫(kù)進(jìn)行增刪改查操作,也已經(jīng)可以通過(guò) TodoList 組件展示待辦事項(xiàng)列表。接下來(lái),我們需要將它們集成起來(lái)??梢栽?nbsp;src/main.js 文件中將以下代碼添加到文件中:

import { createApp } from 'vue'
import App from './App.vue'
import { initDb } from './database'

initDb()

createApp(App).mount('#app')

在上述代碼中,我們首先調(diào)用了 initDb() 函數(shù),用于初始化 SQLite 數(shù)據(jù)庫(kù)。然后,我們使用 createApp 函數(shù)創(chuàng)建一個(gè) Vue 應(yīng)用,并將其掛載到 HTML 中的 #app 元素上。

現(xiàn)在,我們已經(jīng)完成了使用 Vue3 和 Vite 創(chuàng)建 SQLite 數(shù)據(jù)庫(kù)并進(jìn)行數(shù)據(jù)存儲(chǔ)的過(guò)程??梢酝ㄟ^(guò)運(yùn)行以下命令啟動(dòng)應(yīng)用程序:

npm run dev

打開(kāi)瀏覽器并訪問(wèn) http://localhost:3000,即可看到待辦事項(xiàng)列表頁(yè)面。現(xiàn)在,我們可以添加、更新和刪除待辦事項(xiàng),并且它們的數(shù)據(jù)會(huì)存儲(chǔ)在 SQLite 數(shù)據(jù)庫(kù)中。

結(jié)語(yǔ)

本文介紹了如何在 Vue3 和 Vite 項(xiàng)目中使用 SQLite 數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)。我們使用了 better-sqlite3 庫(kù)來(lái)創(chuàng)建和管理 SQLite 數(shù)據(jù)庫(kù),并使用 Vue3 來(lái)開(kāi)發(fā)前端界面。通過(guò)本文的指導(dǎo),您可以輕松地將 SQLite 數(shù)據(jù)庫(kù)集成到您的

到此這篇關(guān)于如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)的文章就介紹到這了,更多相關(guān)Vue3 Vite用SQLite數(shù)據(jù)存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue+SpringBoot使用WebSocket方式

    vue+SpringBoot使用WebSocket方式

    WebSocket是一種全雙工通信協(xié)議,通過(guò)HTTP升級(jí)機(jī)制建立連接,支持實(shí)時(shí)雙向數(shù)據(jù)傳輸,示例代碼展示了如何在Java Spring Boot和Vue.js中實(shí)現(xiàn)WebSocket服務(wù)和客戶端
    2025-02-02
  • 使用el-upload實(shí)現(xiàn)文件上傳方式(包括預(yù)覽,下載)

    使用el-upload實(shí)現(xiàn)文件上傳方式(包括預(yù)覽,下載)

    該文章介紹了兩種文件上傳、預(yù)覽和下載的方法,分別是通過(guò)卡片形式和按鈕形式,卡片形式中的下載和預(yù)覽功能尚未完善,父組件使用了el-upload組件,可以實(shí)現(xiàn)新增、編輯和查看文件的功能
    2025-11-11
  • Vue使用moment處理不同時(shí)區(qū)的時(shí)間的操作方法

    Vue使用moment處理不同時(shí)區(qū)的時(shí)間的操作方法

    這篇文章主要介紹了如何在Vue項(xiàng)目中使用moment和moment-timezone插件處理時(shí)區(qū),包括安裝依賴、基礎(chǔ)使用方法(如時(shí)區(qū)轉(zhuǎn)換)、全局掛載以及注意事項(xiàng)(如時(shí)區(qū)標(biāo)識(shí)規(guī)范、UTC時(shí)間處理和Vue3適配),需要的朋友可以參考下
    2026-03-03
  • vue項(xiàng)目初始化到登錄login頁(yè)面的示例

    vue項(xiàng)目初始化到登錄login頁(yè)面的示例

    今天小編就為大家分享一篇vue項(xiàng)目初始化到登錄login頁(yè)面的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • vue中使用百度腦圖kityminder-core二次開(kāi)發(fā)的實(shí)現(xiàn)

    vue中使用百度腦圖kityminder-core二次開(kāi)發(fā)的實(shí)現(xiàn)

    這篇文章主要介紹了vue中使用百度腦圖kityminder-core二次開(kāi)發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vue項(xiàng)目中使用flow做類型檢測(cè)的方法

    Vue項(xiàng)目中使用flow做類型檢測(cè)的方法

    這篇文章主要介紹了Vue項(xiàng)目中使用flow做類型檢測(cè)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 微信小程序開(kāi)發(fā)實(shí)現(xiàn)消息框彈出

    微信小程序開(kāi)發(fā)實(shí)現(xiàn)消息框彈出

    在小程序的wxml文件中創(chuàng)建消息框,消息框一般包含要提示的消息內(nèi)容以及確認(rèn)和取消按鈕,在小程序的wxss文件中定義消息框的樣式,在小程序的js文件中,我們需要通過(guò)Animation對(duì)象實(shí)現(xiàn)消息框的彈出動(dòng)畫
    2023-12-12
  • element動(dòng)態(tài)路由面包屑的實(shí)現(xiàn)示例

    element動(dòng)態(tài)路由面包屑的實(shí)現(xiàn)示例

    本文主要介紹了element動(dòng)態(tài)路由面包屑的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue實(shí)現(xiàn)多欄布局拖拽

    vue實(shí)現(xiàn)多欄布局拖拽

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)多欄布局拖拽,改變盒子的寬度,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue登錄注冊(cè)實(shí)例詳解

    vue登錄注冊(cè)實(shí)例詳解

    在本篇內(nèi)容里小編給大家分享的是關(guān)于vue登錄注冊(cè)的相關(guān)實(shí)例內(nèi)容以及寫法分析,有需要朋友們可以學(xué)習(xí)下。
    2019-09-09

最新評(píng)論

五莲县| 枞阳县| 新巴尔虎右旗| 印江| 西华县| 忻州市| 景德镇市| 化州市| 乐平市| 虎林市| 清丰县| 新田县| 贺州市| 邹城市| 颍上县| 岑溪市| 石门县| 涡阳县| 西安市| 葫芦岛市| 高雄县| 龙陵县| 德昌县| 青浦区| 延边| 阿合奇县| 旬邑县| 嘉善县| 鄂托克前旗| 柏乡县| 宿松县| 柘荣县| 封开县| 错那县| 奉贤区| 夏津县| 会宁县| 阜南县| 五华县| 宁安市| 周至县|