現在、xserverでサイトを作っており、mysql データベースのデータをphpからsql発行して取ってきてます。
最近気づいたのですが、sqlで取ってきた情報をjavascriptで料理する際、いちいち非同期通信で処理しなきゃいけないというのにぶち当たりました。
で、
これが面倒、理解に苦しみ、
であれば
nodejs 入れて javascriptでのデータベース操作が出来ればなと思いました。
質問は、現在の環境はxservar で mysqlをphpで。
これを維持しながら javascript の環境も構築できるでしょうか?
nodejs入れたら、今まで構築したprogram も全部js仕様に変えなきゃいけなくなる?
ご教授お願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
結論から言うと無理です。
シンプルにNode.jsがどういうものなのか理解出来てないよう見受けられました。
実際やるベースで手段を調べていく内に落胆することになると思うので、
何故無理なのか、そのへんを解説していきます。
まずJavaScriptはご存知の通り
ブラウザでHTMLをロードした後に動作して
DOMツリーを編集して画面の変更を促す為に用意されている言語です。
んで、RubyやPythonのように汎用スクリプト言語として動かしたいと思う人が居て
JavaScriptには外部のファイルを読み込んだり、自由なネットワーク通信等の足りない機能が沢山あります。
それを自作したC++のモジュールを組み込んで魔改造して汎用スクリプト言語にしてしまったのがNode.jsです。
nodejs 入れて javascriptでのデータベース操作が出来ればなと思いました。
Node.jsは確かにMySQL等のデータベースに直接繋いで読み書きできますが、
それはC++で追加された魔改造モジュールを利用しているに過ぎません。
訪問者がWebサイトを閲覧するのに使うのはWebブラウザであり
そこで実行されるのはJavaScriptです。
C++製のモジュールは使えません。
最近気づいたのですが、sqlで取ってきた情報をjavascriptで料理する際、いちいち非同期通信で処理しなきゃいけないというのにぶち当たりました。
これは一生解決しません。
マイクロサービスとかいうやつです。
モダンなサービスはHTTPで通信して情報の授受を代わりに行う仕組みを広く公開していますから
それのクローズ版を自分で作り、それを自分がAjaxで利用させて頂く感じですね。
JavaScriptには裏でこっそりHTTPリクエスト飛ばして結果を受け取る事くらいしか出来ないので
リクエストを飛ばした先のWebサーバに代替してもらうしかないわけです。
xserverでサイトを作っており、mysql データベースのデータをphpからsql発行して取ってきてます。
XserverはNginXを利用した既製品のWebサーバです。
PHPが組み込まれて使えるようになっています。
Node.jsはRuby等と同じ汎用スクリプトの分類なので
自前のWebサーバモジュールを使ってWebサーバとして稼働させます。
なのでNginXの部分が完全に不要です。
おまけ: フロントエンドとNode.js
でもでも、ReactやVue.jsなんかはNode.jsでJavaScriptを両立させてるじゃん!と思うかもしれません。
確かに昨今Node.jsでJavaScriptを作るフロントエンド開発というものが主流になっています。
これはJavaScriptには他のモジュールをロードする機能が存在しないので、
Node.jsが導入したrequire
を擬似的に再現しようという試みのものとなっています。
どのようにそれを実現させるかというと、
Node.js用のコードを解析してファイルの最初にあるrequireを検知したらそのファイルを全て取り出してきて関数の中に閉じ込めつつ1ファイルにぶち込みこます。
そして自作のrequire関数を宣言して、閉じ込めた関数にアクセス出来るようにします。
Webpackというライブラリは
このようにNode.jsのrequireをJavaScript世界に無理やり持ってくる作りになっています。
勿論、JavaScriptにはC++製のモジュールは存在しませんので、
使えるのはピュアなJavaScriptでも使えるモジュールだけという制約があります。
投稿2021/07/19 02:52
総合スコア21203
0
本質的な話は maisumakun さんのと同意見なので省きます。
PHPでやってることを、まるっとNode.jsに置き換えることも出来るでしょうし。
《nodejs 入れて javascriptでのデータベース操作が出来》てもそれはサーバーの中だけの話で、
webブラウザ宛にクエリー結果を応答しないと、webブラウザで見せることができないので、
質問者さんの感じる面倒くささの解決には至らないです。
大きく、
- クエリー実行
- 結果の加工
- htmlの出力(DOM操作、レンダリング)
という流れがあって、どこまでサーバーがやってどこからクライアントがやるのか、
サーバーとwebブラウザとで緊密な連携が必要になりますが、
昨今のフレームワーク導入でラクになるところもあるかもしれません。
(あまりそっち方面を深堀りしていないので具体的な言及はできませんが。)
で、Xserverの共用サーバーにNode.jsを組み込めるのか?ってゆー別の問題が。
機能一覧 | レンタルサーバーならエックスサーバー
マニュアル | レンタルサーバーならエックスサーバー
ざーっと読んだけど、そういう説明がない。
ぐぐると「やってみました」系記事がいくつか見つかるけれど、
つまりはunofficialなので転んでも滑っても自己解決できないといけないですねと。
XserverにNode.jsを仕込んでる人がteratailにどのくらいいるのかわからないけど、
あまりアドバイスは当てにしないでやったらいいと思うよ。
レンタルサーバーで特別難しいことをしなくても大抵使えるPHPで無難に作れるんなら、
私ならそっちを選ぶけどなぁ。
投稿2021/07/16 00:45
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/26 04:13
0
PHPとNode.jsのサーバでどのように役割分担させるのでしょうか。両者の連携など、考えることが増えます。
…というより、
sqlで取ってきた情報をjavascriptで料理する際、いちいち非同期通信で処理しなきゃいけない
非同期となるのはサーバとクライアントの間に通信を挟むからであって、言語の問題ではありません。全部サーバ生成にするのでもない限り、この非同期の問題を完全に無視する方法はありません。
投稿2021/07/15 23:01
総合スコア146018
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
サーバーから返す時にHTMLに表示したい形に整形して返せばJavaScriptの仕事は「返ってきた情報をそのままHTMLに入れるだけ」になります。
※イベントを付与する場合はHTMLに入れた後に設定する必要がありますが、それは動的に生成している以上必要な手続きです
投稿2021/07/15 23:24
総合スコア80875
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/26 04:05
2021/12/26 10:56
2021/12/26 11:02
2021/12/26 11:03
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/26 04:17