使用Nhost与SvelteKit快速构建全栈应用

使用Nhost与SvelteKit快速构建全栈应用

nhost nhost/nhost: 是一个用于构建基于 Nuxt.js 的后端应用程序的框架,可以方便地实现 Nuxt.js 后端应用程序的开发。适合对 Nuxt.js、后端应用程序和想要实现 Nuxt.js 后端应用程序的开发者。 nhost 项目地址: https://gitcode.com/gh_mirrors/nh/nhost

Nhost是一个基于PostgreSQL数据库和Hasura GraphQL引擎的后端即服务(BaaS)平台,能够帮助开发者快速构建现代应用程序。本文将详细介绍如何将Nhost与SvelteKit前端框架结合使用,创建一个完整的全栈应用。

项目初始化与数据库配置

首先需要在Nhost控制面板中创建一个新项目。创建完成后,进入数据库的SQL编辑器执行以下SQL语句来创建电影数据表:

CREATE TABLE movies (
  id SERIAL PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  director VARCHAR(255),
  release_year INTEGER,
  genre VARCHAR(100),
  rating FLOAT
);

INSERT INTO movies (title, director, release_year, genre, rating) VALUES
  ('Inception', 'Christopher Nolan', 2010, 'Sci-Fi', 8.8),
  ('The Godfather', 'Francis Ford Coppola', 1972, 'Crime', 9.2),
  ('Forrest Gump', 'Robert Zemeckis', 1994, 'Drama', 8.8),
  ('The Matrix', 'Lana Wachowski, Lilly Wachowski', 1999, 'Action', 8.7);

重要提示:执行SQL时请确保勾选"Track this"选项,这样Hasura才能自动为表生成GraphQL API。

设置数据访问权限

在Nhost中,数据访问权限需要显式配置。对于我们的电影表,需要为public角色设置select权限:

  1. 在数据库管理界面找到movies表
  2. 点击"Edit Permissions"
  3. 为public角色启用select权限

这样设置后,前端应用才能通过GraphQL查询电影数据。

创建SvelteKit前端应用

使用以下命令创建一个最小化的SvelteKit项目:

mkdir nhost-sveltekit-quickstart && \
cd nhost-sveltekit-quickstart && \
npx sv create --template minimal --no-types --no-add-ons --install npm

这个命令会创建一个不包含额外配置和类型检查的基本SvelteKit项目。

集成Nhost客户端

安装Nhost的JavaScript客户端库:

npm install @nhost/nhost-js

然后在项目中创建Nhost客户端实例。新建src/lib/nhost.js文件:

import { NhostClient } from "@nhost/nhost-js";

export const nhost = new NhostClient({
  subdomain: "<subdomain>",
  region: "<region>",
})

注意:需要将<subdomain><region>替换为你Nhost项目的实际值。

实现数据查询与展示

在SvelteKit的主页面组件中,我们可以使用Nhost客户端查询电影数据。修改src/routes/+page.svelte文件:

<script>
  import { onMount } from 'svelte';
  import { nhost } from '../lib/nhost';

  let loading = true;
  let movies = [];

  const getMovies = `
    query {
      movies {
        title
        genre
        rating
      }
    }
  `;

  onMount(async () => {
    const { data, error } = await nhost.graphql.request(getMovies);
    if (!error) {
      movies = data.movies;
    }
    loading = false;
  });
</script>

{#if loading}
  <p>Loading...</p>
{:else}
  <table>
    <tbody>
      {#each movies as movie}
        <tr>
          <td>{movie.title}</td>
          <td>{movie.genre}</td>
          <td>{movie.rating}</td>
        </tr>
      {/each}
    </tbody>
  </table>
{/if}

这段代码实现了:

  1. 组件挂载时自动查询电影数据
  2. 显示加载状态
  3. 数据加载完成后以表格形式展示

运行与测试

启动开发服务器:

npm run dev

然后在浏览器中访问http://localhost:5173,你应该能看到电影列表成功显示。

总结

通过本文的步骤,我们完成了:

  1. Nhost项目创建与数据库配置
  2. 数据表创建与权限设置
  3. SvelteKit项目初始化
  4. Nhost客户端集成
  5. GraphQL数据查询与展示

这种架构的优势在于:

  • 后端服务完全托管,无需自行搭建
  • 自动生成的GraphQL API简化了数据操作
  • SvelteKit提供了优秀的开发体验和性能
  • 完整的类型安全(如果启用TypeScript)

对于更复杂的应用,你还可以扩展这个基础架构,添加用户认证、数据变更、实时订阅等功能。

nhost nhost/nhost: 是一个用于构建基于 Nuxt.js 的后端应用程序的框架,可以方便地实现 Nuxt.js 后端应用程序的开发。适合对 Nuxt.js、后端应用程序和想要实现 Nuxt.js 后端应用程序的开发者。 nhost 项目地址: https://gitcode.com/gh_mirrors/nh/nhost

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郁勉能Lois

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值