欢迎来到全新的 hello-sqlite!
Glitch上有很多很棒的项目,人们可以进行混编来制作自己的项目,但如果您正在寻找快速入门或一张白纸,我们提供了三个最简单的“hello”项目,每个项目都在前一个项目的基础上增加一层复杂性:
hello-webpage这是一个简单的静态网页,包含 CSS 和 JavaScript 文件。hello-express它扩展hello-webpage了一个Node.js服务器,使用express处理请求并提供页面/数据。hello-sqlite添加一个数据库,用于hello-express存储页面会话之间的信息。
hello-sqlite它是第三大最受欢迎的入门项目,很多人都用它来探索新的想法。然而,这个项目却有点特殊之处……
它实际上并没有使用数据库!
为什么??
当用户在 Glitch 上查看项目时,他们看到的都是同一个正在运行的项目实例。当你访问hello-sqlite.glitch.me时,你访问的数据库和我访问时看到的数据库是同一个。如果应用需要获取用户输入并将其存储到数据库中,那么我就能看到你输入的数据,反之亦然。对于类似博客评论区这样的场景,这正是我们想要的,但对于代码演示来说,这样做并不合适。我们也不希望有人冒着风险,在代码演示中添加一些不友好的内容,让其他用户都能看到!
当然,人们不会hello-sqlite直接使用——他们会进行混音,将其变成其他东西。我们遇到了一个难题:如何让一个项目在被混音后表现出不同的行为?
在 Glitch 上重新混音项目时,除了少数例外,您将获得混音时项目文件的副本。我们不会复制名为 `<project_name>` 的特殊文件夹中的任何内容.data,该文件夹用于存放特定于该单个项目的数据。例如hello-sqlite,`<project_name>` 文件夹用于存放 SQLite 数据库文件。我们还会对名为 `<project_name>` 的文件进行特殊处理.env。该文件用于存放项目运行所需的密钥,例如 API 密钥或项目特定变量。`<project_name>` 文件包含一系列变量定义,如下所示:
# here are my secrets!
API_KEY=b33fcabbage
MY_GREATEST_FEAR=notenoughpudding
当一个项目被重新混音时,我们会删除所有值,但保留变量名,以便重新混音的人可以用自己的值填充它们:
# here are my secrets!
API_KEY=
MY_GREATEST_FEAR=
想到这里,我灵光一闪!我们在 hello-sqlite 中添加了一个变量.env:
DISALLOW_WRITE=TRUE
然后,我们向项目中添加了允许用户向数据库添加条目的代码,但同时会检查该变量是否已设置:
// DISALLOW_WRITE is an ENV variable that gets reset for new projects so you can write to the database
if (!process.env.DISALLOW_WRITE) {
// write to the database!
}
这意味着示例数据库编写代码可以直接自定义,无需取消注释——点击“重新混合”按钮即可!如果用户也在构建演示,他们DISALLOW_WRITE也可以将其设置为 true,以获得同样的好处。
结论
这算不算一种“权宜之计”?也许吧!我认为这个方案恰到好处地平衡了巧妙性和不依赖于因为应用是由员工开发的就给予特殊待遇之间的关系。
此外,在添加新逻辑的同时,我们还更新了 JS 以使用广泛支持的 ES6 语法,并整理了文档。
试试看!
感谢所有参与代码审查和集思广益的朋友们,也感谢所有参与新版测试的用户。如果您想构建一个将数据存储到服务器的简单应用,不妨尝试一下,hello-sqlite并告诉我们您的想法。
祝您使用愉快!
文章来源:https://dev.to/glitch/hello-to-the-new-hello-sqlite-5044