【问题标题】:jekyll static site generator with sqlite3带有 sqlite3 的 jekyll 静态站点生成器
【发布时间】:2014-11-21 10:43:26
【问题描述】:

我知道 Jekyll 就是关于“不要使用数据库,而是使用静态文件”,但是 如果我想在我的static 网站上实施评级,只是为了能够 存储我的每个学生对某个作文的评分,然后显示 一个平均值,并且“sqlite”是一个基于文件的数据库,它会是 可以使用一些javascript api从该sqlite文件写入/读取?

【问题讨论】:

    标签: javascript sqlite jekyll


    【解决方案1】:

    您可以尝试firebasecloudbase.io,它们都提供免费计划和javascript API。

    Firebase 有一个very good documentation

    【讨论】:

    • 嘿,这很好。所以使用firebase免费(黑客)计划托管,我可以轻松部署,静态站点 - 存储可能性等......?太好了。
    • 只是非常感谢你,David.. 将我指向 Firebase。当您需要页面上的天气信息或在我的情况下对内容进行评级时,与 Jekyll 等静态生成的文件结合使用非常好:) 干杯!
    【解决方案2】:

    您不应该使用 JavaScript 来访问您的数据库 - 因为您的信息会暴露给客户端,所以它会使其易受攻击。 It's definitely possible but highly not recommended.

    但是,有一些方法可以use Jekyll in conjunction with more appropriate languages like PHP,这可能是也可能不是您想要的。我并不完全熟悉 Jekyll 的工作原理,但如果我理解正确,如果它只是生成静态文件,您可以让 Jekyll 生成站点的某些部分,但其他部分在 PHP 上运行以进行这些 SQL 调用。

    这肯定会有点 hacky,所以我真的会评估你想使用 Jekyll 的重要性。 请记住,Jekyll 是为一个非常特定的目的而设计的——将纯文本转换为静态网站,所以这可能不是适合您的工具。

    【讨论】:

    • 我不能在用来托管我的 jekyll 网站的服务器上安装 PHP 解释器,所以我不能使用那些 raw 标签。而且我还想,不可能使用 php 脚本来代替对其他域的 ajax 请求?
    • 在对其他域进行 ajax 调用时会遇到跨域问题。您可能想在问题中添加您的服务器正在运行和允许的内容。
    • 它只允许简单的服务。我会坚持使用all-static 版本,没有评分,这对我来说并不重要,我只是好奇。感谢您的耐心。
    • 看看大卫的回答 - firebase 可能是你要找的。我只是查找了一些一起使用它们的地方。但请记住,所有内容对用户都是公开的。
    • 这不是问题,无论如何我希望它全部公开。虽然看起来firebase也在给simple user authentication.. ;)
    【解决方案3】:

    是的,可以向 Jekyll 生成的静态站点添加数据库功能。 就我而言,我正在使用firebase。 Firebase by Google 为我们提供了许多功能,例如存储、数据库、托管以及使用函数访问无服务器架构。

    所以来做点,你需要做的就是注册http://firebase.google.com 然后创建一个应用程序,然后在您的 JavaScript 中的 head 标签中添加以下代码

    <script src="https://www.gstatic.com/firebasejs/5.9.0/firebase.js"></script>
    <script>
      // Initialize Firebase
      // TODO: Replace with your project's customized code snippet
      var config = {
        apiKey: "<API_KEY>",
        authDomain: "<PROJECT_ID>.firebaseapp.com",
        databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
        projectId: "<PROJECT_ID>",
        storageBucket: "<BUCKET>.appspot.com",
        messagingSenderId: "<SENDER_ID>",
      };
      firebase.initializeApp(config);
    
    var timestamp = new Date().valueOf();
                var obj = {};
                obj[timestamp] = "1";
    
                firebase.database().ref('/').update(obj)
    </script>
    

    更多详情, 你可以访问我关于这个主题的博客

    https://xyzcoder.github.io/firebase/2019/03/17/firebase-real-time-database.html

    注意:我们还可以对谁可以读写数据到我们的 json 存储区实施安全限制

    谢谢, 帕万

    【讨论】:

      猜你喜欢
      • 2016-06-02
      • 2022-08-15
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      相关资源
      最近更新 更多