2011-12-14 11 views
4

私はWordpressをCMSバックエンドとして使用することを考えました。多くの人がそれを知っていて、使いやすく、Node.JSをフロントエンドとして使用しているからです。あなたはおそらく、なぜ私は最初にそれをしたいのだろうと思っているでしょう、何が利点ですか?FrontendとWordpressのNode.jsをバックエンドとして使用する方法は?

私はWebSocketを使用したいと思います.Node.JSの素晴らしいSocket.ioライブラリは、クロスブラウザーの美しいWebSocketサポートを提供します。基本的には、ユーザーがサイトに来て、WebSocketが作成され、コンテンツがJSONのようにフロントエンドに非同期にフィードされ、ページを更新せずにフロントエンドですべてデコードされます。

効果的に私はWordpressをリアルタイムCMSにしています。あなたはサイトにアクセスしますが、クリックするたびにJSONとしてページが取得され、websocket経由で返され、複数のリクエストやページサイズを保存します。

Node.JSをMySQLデータベースに接続して情報を取り出して表示するにはどうすればよいですか?チュートリアル、リソース、および他の役に立つヒントは、感謝していただければ幸いです。私の同僚のうちのいくつかは同じことを疑問に思っています。だから、答えは誰にとっても大きな助けになると思います。

+0

Node.jsはサーバー側のテクノロジです。もちろん、コマンドプロンプトやシッククライアントアプリケーションを開発したい場合は、それを使用することはできますが、ブラウザ内では使用できません。 –

+0

下記のVahurの答えを少し参考にしてください。私はフロントエンドとしてNode.JSを使用するように頼んで、私の質問に間違って言いました。 –

答えて

9

は正確には、あなたは、フロントエンド・ソリューションのためのNode.jsを使用することはできません、いないブラウザでは(他のサーバと同じように考えますPHP、JSPなどのサイド・サイド言語)。

ただし、jQueryやその他のJavascriptライブラリを使用して説明したソリューションを作成することはできますが、Socket.IOでデータ転送を実装するだけで済みます。サーバーサイドでは、ウェブソケットを扱うためのものが必要なので、最もネイティブな方法はNode.jsを使用することですが、Wordpressを使用したいので、Wordpressはあなたが説明したように、私はノードからNodeへのあなたのCMSを書く必要があるのではないかと心配しています。

また、説明した方法には大きな欠陥があります。検索エンジンのクローラはまだJavaScriptを解析して実行することができないため、すべてのコンテンツが動的に読み込まれた場合、Googleや他のユーザーにとっては空ではないように見えるため、検索結果にサイトを作成することはほとんど不可能です。

ノード用のMySQLおよびその他のモジュールでは、NPM registryNode modules pageをチェックする必要があります。

EDIT ドウェインはコメントで彼の解決策を説明した後、これは私はそれを行うだろうかです:

  1. Iは、フロントエンドのためのjQueryを使用すると思います。 document.on()にバインドし、セレクタを 'a'に設定して、ウェブページ上のすべてのアンカーがハンドラを起動させるようにします。
  2. ハンドラは、a.href属性を解析し、外部リンクかどうかを判断します。外部リンクかどうかは、JavaScriptによって処理されるべきではありません。また、次のページへのリンク、記事などへのリンクでもあります。ハンドラ内でe.preventDefault()を使用すると、ブラウザがその場所にリダイレクトされなくなります。
  3. 次に、ハンドラーは、記事に基づいてURLに.getJSON()を呼び出して、JSONのコンテンツを取得します。ドメイン間の問題を防ぐために、特定のパターン(www.domain.com/apiのようなすべてのURLなど)を.htaccess経由でノードサービスにリダイレクトするのが最も簡単な方法です。
  4. ノードは要求を見て、パラメータを抽出して、ユーザーが望むものを見つけ出すでしょう。 this moduleでMySQLデータベースに接続します(これは簡単に取得できます)。JSON形式の対応するコンテンツを返します。 Content-Typeヘッダーを 'application/json'に設定することを忘れないでください。
  5. jQueryは応答を取得し、要求のタイプを把握し、それに応じてコンテンツを更新します。利益。

ご覧のとおり、この場合はWebSocketを使用しません。実際にはあまり効果がないからです。ほとんどの場合、両方法である小さなリアルタイム更新(帯域幅を削減する巨大なHTTPヘッダーはありません)を対象としています。これは、ブラウザがブラウザにデータを要求することなく、サーバーがデータをブラウザにプッシュできることを意味します。ブログのコンテキストでは、これは必須ではなく、あまりにも多くのリクエストを必要としないため、帯域幅の違いは目に見えません。しかし、教育目的で使用する場合は、基本的にgetJSONの部分をSocketIOに置き換えてください。ApacheがWebSocketのプロキシをサポートしているかどうかはわかりません。 SocketIOの基礎に関する追加情報はhereです。

+0

ああ、もちろん。私はこの愚かなアイデアを持っていたのは、フロントエンドでリンクを介してページをロードし、非JSON /ダイナミックページを取得することですが、リンクをクリックすると(パスはまだ正確でクロール可能です)、追加/出力/ jsonをURLの末尾に置き、JSONを返します。したがって、URLに/ output/jsonが最後にある場合、Node.JSにJSONをwebsocket経由で返し、フロントエンドでjQueryのようなものを使用してJSON配列をソートすることはできません。それが可能なのでしょうか? –

+0

また、Wordpressを管理者のバックエンドとして使用したい場合は、Node.JSのようなものを使用して、JSONがWordpressの関数や何も使用せずに投稿テーブル自体を調べてリクエストしているかどうかを問い合わせますそうですね。したがって、Node.JSを使用してWordpressテーブルに接続し、必要なテーブル行を自分で引き出します。それは少し意味がありますか?だから、Node.JSをフロントエンドで使うという私の質問は、それを置くのは間違った方法ですが、Node.JSがJSONだけを返し、より速くするためにWebSocket経由で接続を開いておきます。 –

+0

フロントエンドはまだ普通のWordpressのウェブサイトですが、すべてのリンクはonclickイベントがバインドされています.JSON経由でクリックした場合はページを読み込みません。画像やその他のものではなく内容をすばやく進めるだけです。ユーザーまたはGoogleがリンクを渡ってきた場合、彼らは引き続き従うことができ、ページは通常のようにレンダリングされ、同じように動作します。 –

2

編集:「フロントエンドでNode.jsを使用する」という部分を見落としました。 Vahur Roosimaaが言っているように、Node.jsはサーバー側にあります(Nginx/Apache + PHPの組み合わせと考える)。ノードはjQueryのようなフロントエンドライブラリではありません。 あなたが望むのであれば、Webソケット機能のためだけに使うことができます(私はSocket.IOを使って提案します)。 Node.jsのとMySQLについて

ニースチュートリアル:

http://www.giantflyingsaucer.com/blog/?p=2596
http://mclear.co.uk/2011/01/26/very-simple-nodejs-mysql-select-query-example/
http://www.hacksparrow.com/using-mysql-with-node-js.html

このSO質問にも役立つかもしれない:MySQL with Node.js

examples from the github repo of node-mysqlを確認してください。

ORMのように高度なものをお望みなら、私はSequelizeをお勧めします。 SOから
もう一つの良い質問:それは、サーバー上で実行されるためWhich ORM should I use for Node.js and MySQL?

2

あなたは、私が最近、Wordpressのデータベースから基本ポスト検索を行うためのシンプルなフロントエンドとして機能することができNode JS例を追加しましたWordscriptをチェックアウトする必要があります。

ノードに共通のmysqlライブラリを使用し、取得パラメータからMySQLクエリを生成し、データベースから取得したデータをレンダリングします。タグを含む。

Wordscriptは、バックエンド/フロントエンドの開発者がWordpress PHPコードベースで作業することを余儀なくされることを目指していますが、Wordpressの管理インタフェースを必要に応じて使用することができます。 APIはRubyとPHPで書かれており、JSONのフィードと関数は、通常、ノードのバージョンと同じ方法で返されます。そのため、スクリプト言語が利用できる追加オプションがあります。

0

あなたが持っているオプションの1つは、CMSとしてWordPressを持ち、その管理UIを保持したい場合、HTMLの代わりにJSONを出力するためのWordPressテンプレートを書き込むことです。

Wordscriptとは対照的に、これはソリューションに固有のものです。必要なテンプレート/データごとにJSON出力を記述する必要があるためです。利点は、あなたのニーズに合わせてJSONを作成できることです。

ノード側で、JSONを消費する小さなサーバーを作成し、必要なjavascriptテンプレート言語を使用できるようにします。また、NodeJsは、レンダリングされたコンテンツやJSON出力をメモリに保存できるため、WordPressテンプレートへのラウンドトリップを節約できるので、パフォーマンスにも役立ちます。

私はnodejsとwordpressを一緒に使用することの利点の多くを説明する、これについてのブログを書いています。

http://www.1001.io/improve-wordpress-with-nodejs/

関連する問題