riot.js,emmet,markedを試しながら恐る恐るコンテンツ管理システムを作っている。

公開:2016-06-06 21:13
更新:2020-02-15 04:37
カテゴリ:riot.js,electron,静的ブログジェネレータ,emmet,marked

コンテンツ管理システムをぼちぼちと作っている。

軽量でミニマムな仕様かつ学習コストが低いというのでriot.jsを使ってみている。確かに学習コストは低い気がする。メニューをカスタムタグにして配置してみているが、そんなに1つのアプリで再利用するものでもないので、メリットは今一つ実感できていない。

エディタ部分はマークダウンで書きつつ、タグ直書きもemmetで端折れるようにしてみている。私が望んでいるエディタはまさにこの仕様なのだ。

データの保存形式はJSONだが、極力語彙はJSON-LDで修飾しようと思っている。schema.orgのBlogPostingを見るとブログ記事を保存するのに必要な語彙はほとんどそろっているからだ。今ちょっと1レコード分のデータフォーマットを考えているところだ。

{
  "@context": {
    "@vocab": "http://schema.org/",
    "status": {
      "@id": "https://sfpgmr.net/status",
      "@type": "Text"
    }
  },
  "@id": "http://sfpgmr.net/blogPosts",
  "BlogPosting": {
    "@type": "BlogPosting",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://blog.sfpgmr.net/"
    },
    "author": {
      "name": "SFPGMR",
      "@id": "https://www.sfpgmr.net/",
      "url": "https://www.sfpgmr.net/"
    },
    "@id": "https://blog.sfpgmr.net/2016/06/010001.html",
    "url": "https://blog.sfpgmr.net/2016/06/010001.html",
    "headline": "タイトル",
    "articleBody": "\\u003ca href='https://www.sfpgmr.net/' \\u003eテスト\\u003c/a\\u003e\\u003cscript\\u003ealert('aa');\\u003c/script\\u003e \\u003cp\\u003eテストページです。\\u003c/p\\u003e",
    "datePublished": "2015-03-19T00:37:31+09:00",
    "dateModified": "2015-03-19T00:37:31+09:00",
    "publisher": {
      "@type": "Organization",
      "name": "SFPGMR",
      "logo": {
        "@type": "ImageObject",
        "url": "https://www.sfpgmr.net/content/2011/05/20110524.png"
      }
    },
    "description": "",
    "keywords": "",
    "fileFormat": "text/markdown",
    "image": {
      "@type": "ImageObject",
      "url": "https://www.sfpgmr.net/content/2011/05/20110524.png",
      "height": 855,
      "width": 1161
    }
  },
  "status": "draft"
}

上のが今のところのデータフォーマットである。これをnedbを使ってデータとして保存して、HTMLファイルを生成したり、メタデータとして埋め込んだりできればいいなあと思っているところである。