使用 KeystoneJS 搭建 Headless CMS 与 Express 的完美结合

什么是 KeystoneJS

KeystoneJS 是一个现代化的 Node.js CMS 框架,它使用 MongoDB 数据库作为后端存储,并提供了一个易于使用的管理界面。KeystoneJS 也可以作为一个 Headless CMS 使用,在这种情况下,它只提供 API,而不提供管理界面。

为什么使用 KeystoneJS

KeystoneJS 有许多优点,包括:

  • 管理界面简单易用
  • 支持自定义字段类型和验证规则
  • 支持自定义路由和中间件
  • 支持插件扩展
  • 支持 Headless CMS 模式

使用 KeystoneJS 可以快速搭建一个功能完备的 CMS 系统,并且可以根据需要自定义和扩展。

KeystoneJS 与 Express 的结合

KeystoneJS 是基于 Express 框架构建的,因此可以与 Express 框架无缝集成。使用 KeystoneJS 时,可以很容易地在 Express 应用程序中添加 KeystoneJS 的路由和中间件。

下面是一个使用 KeystoneJS 和 Express 搭建的简单的 CMS 系统的示例代码:

const express = require('express');
const { Keystone } = require('@keystonejs/keystone');
const { Text, Relationship } = require('@keystonejs/fields');
const { MongooseAdapter } = require('@keystonejs/adapter-mongoose');

const keystone = new Keystone({
  adapter: new MongooseAdapter(),
});

keystone.createList('Post', {
  fields: {
    title: { type: Text },
    author: { type: Relationship, ref: 'User' },
    body: { type: Text },
  },
});

const app = express();

app.use('/admin', keystone.createAdminUI());

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

在上面的代码中,我们创建了一个名为 Post 的数据模型,该模型包含 titleauthorbody 三个字段。我们还创建了一个 Express 应用程序,并在 /admin 路径下添加了 KeystoneJS 的管理界面。

使用 KeystoneJS 的 Headless CMS 模式

KeystoneJS 可以以 Headless CMS 的模式使用,这意味着它只提供 API,而不提供管理界面。在这种模式下,我们可以使用 KeystoneJS 来管理我们的数据,并使用任何前端框架来呈现数据。

下面是一个使用 KeystoneJS Headless CMS 模式的示例代码:

const express = require('express');
const { Keystone } = require('@keystonejs/keystone');
const { Text, Relationship } = require('@keystonejs/fields');
const { MongooseAdapter } = require('@keystonejs/adapter-mongoose');

const keystone = new Keystone({
  adapter: new MongooseAdapter(),
});

keystone.createList('Post', {
  fields: {
    title: { type: Text },
    author: { type: Relationship, ref: 'User' },
    body: { type: Text },
  },
});

const app = express();

app.get('/posts', async (req, res, next) => {
  try {
    const posts = await keystone.lists.Post.adapter.findAll();
    res.json(posts);
  } catch (err) {
    next(err);
  }
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

在上面的代码中,我们创建了一个名为 Post 的数据模型,该模型包含 titleauthorbody 三个字段。我们还创建了一个 Express 应用程序,并在 /posts 路径下添加了一个路由,该路由返回 Post 数据模型的所有记录。

总结

KeystoneJS 是一个功能强大的 Node.js CMS 框架,它可以快速搭建一个完备的 CMS 系统,并且可以根据需要自定义和扩展。使用 KeystoneJS 可以在 Express 应用程序中轻松集成,并且可以使用 KeystoneJS Headless CMS 模式来管理数据并与任何前端框架一起使用。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658d7fb9eb4cecbf2d37418f


纠错
反馈