2017-09-07 11 views
1

フラットファイルコンテンツ管理とVue.jsフロントエンドを使用して簡単なサイトを作成しようとしています。 app/posts内の各マークダウンファイルを受け取り、ビルドプロセスのいくつかの種類があるでしょうJSON出力のフラットファイルCMS

app 
- various vue files and folders 
- data.json 
- posts 
- - post1.md 
- - post2.md 

、値下げを処理し、app/data.jsonのすべてを格納します。私は、次のファイル構造を近似することを願っています。その後、vue.jsのフロントエンドはdata.jsonをインポートして、必要に応じてさまざまなコンポーネントを水和させることができます。

私が解決策を見つける際に抱えている問題は、トンのフラットファイルCMSのですが、フラットファイルの処理とレンダリングの間に入ることを許可しているようですテンプレート。私が遭遇したフラットファイルCMSのほとんどは、HTMLドキュメントの静的なサイトフォルダ構造を生成するように設計されています。私はVueを使用していますが、React、Chooなどのようなフロントエンドフレームワークをルーティングに使用する予定であるため、フラットファイルCMSが必要です。このCMSは、処理するデータをフォルダ構造からVueのデータモデルとして機能するように調整できる単一のJSONファイルです。

私はこれを何度も何度もグーグルで見つけました。フロントエンドjsフレームワークの遍在にもかかわらず、結果が非​​常に少ないという事実は、あなたがこのようなサイトを構築しない明白な理由があるのか​​、私が見逃している重要な用語があるのか​​疑問に思っています。

だから、私の質問:

  1. は、あなたが簡単にそれは完全な静的なサイトを生成せずに抽出したデータを収集することを可能にするフラットファイルのCMSはありますか?

  2. そうでない場合、なぜですか?マークダウンファイルでいっぱいのフォルダの処理は、カスタムnpmスクリプトで行うだけで十分ですか?フラットファイルシステムからjsフレームワークにやさしいミニデータベースを生成することは愚かな考えであるという明らかな理由はありますか? はおそらく私たちのPHPとjQueryベースのフラットファイルCMSから1があるかもしれません:あなたは解決策が必要で、まだなら

+0

私は実際にプレレンダリングされたHTMLページが欲しいです。より早いページ表示時間、より簡単なSEOおよびJSなしのクライアントのサポートは明白な利点として気になります。 しかし、それらを気にしない場合は、https://github.com/miaolz123/vue-markdownのようなものを使用して、マークダウンのクライアント側もレンダリングしてみませんか? – raphinesse

+0

応答ありがとう!フロントエンドのフレームワークを使用して、プロジェクトが必要とする多くのDOM操作を最適化しています。 vue-markdownを使用してクライアント上でマークダウンをレンダリングする場合、プロジェクト内のすべてのマークダウンファイル、その生の内容、およびフロントマーカをリストするデータベース(理想的にはjsonファイル)を生成する必要があります。私はそれが本当に私が把握しようとしているものの要点だと思う。マークダウンがフロントエンドにあると、データベースファイルを生成するという問題は、自分のジェネレータをnpmスクリプトなどでロールバックするだけの些細なことになりますか? – Kevin

+0

私はあなたが本当にあなたの要件を持っていることをまだ100%確信していませんが、はい、私はあなたのマークダウンコンテンツのインデックス/ DBを生成することは本当に簡単でなければならないと言います。ディレクトリ内容の一覧表示、ファイルの読み込み、前件と内容の分割、任意でHTMLへのマークダウンのレンダリング、適切な構造のすべての格納、JSONへの直列化、最後にディスクへの書き出しを行います。私は30-50 LoCだと思います。 – raphinesse

答えて

0

。 JSON形式でdatabase.jsにすべてを出力します。 database.js構造は次のようになります(のみログインしているユーザーdatabase.js /書き込みを読むことができるので)あなたがdatabase.jsからデータを取得できるよう

{ 
    "config": { 
     "siteTitle": "Website title", 
     "theme": "default", 
     "defaultPage": "home", 
     "login": "loginURL", 
     "password": "$2y$10$3Et0aY82zCjSZJDAkBep7uXrQHQa3PtLt0okgqF2oen\/IIriiL65O", 
     "menuItems": { 
      "0": { 
       "name": "Home", 
       "slug": "home", 
       "visibility": "show" 
      }, 
      "1": { 
       "name": "Example", 
       "slug": "example", 
       "visibility": "show" 
      } 
     } 
    }, 
    "pages": { 
     "home": { 
      "title": "Home", 
      "keywords": "Keywords, for, this, page", 
      "description": "A short description.", 
      "content": "<h1>Home content.<\/h1>" 
     }, 
     "example": { 
      "title": "Example", 
      "keywords": "Keywords, for, this, page", 
      "description": "A short description is also good.", 
      "content": "An example page." 
     } 
    } 
} 

CMSは、いくつかのカスタム作業が必要になります。これにより、Vueを使用してデータベースデータを取得し、コンテンツを表示することができます。プロジェクトのリンク:https://github.com/robiso/wondercms