質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1411閲覧

コアモジュールをフロントで使いたい

2_34_koki

総合スコア67

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/08/17 10:47

コアモジュール(fs, os)をフロントエンド(React.jsやVue.js)で使用することは可能なのでしょうか?
いろいろ調べてみるとやはりNodeでサーバを建てる方法しか見つからなかったのですか,どうなのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

無理です!
これはNode.jsの歴史と絡めるとわかりやすいのでざっくり紹介。

JSをどうしてもRubyのような汎用スクリプト言語として使いたいウィザードさんがいました。

Chromeが公開しているV8エンジンを引っ張ってきました。
でもJSにはファイルの読み書きや外部モジュールの読み込み機能などがまるっと欠けています。
JSって結局DOMを後付けで変更するための言語でしかないんですよ。

つまりJavaScriptをローカルで動かしても何も出来ないゴミです。
じゃあしょうがないとC++で該当するモジュールを開発・組み込んで実現したのがNode.jsです。
魔改造モジュールを勝手に組み込みまくってるって話なんです。


Chrome等で動作するWebブラウザはC++製のモジュールなんて当然ありません。
fsモジュールを使おうと呼び出しても
「なんじゃそりゃ?そんな変数ねーよ、そもそもrequire関数なんてねーし、エラー」
……となっておしまいです。

HTML5で導入された「File API」や「Fetch」なんかの機能はブラウザに入っているので、
これらの機能を調べつつ、やりたいことの実現可否を検討するしかないですね。

基本的にはAjaxでサーバーにHTTP通信を送って
サーバ側に保存するなりで何とかしてもらうという感じになるでしょう。
Webサービスが金取らないとやってられないのはこういう世知辛い事情があります。


ちなみにNode.jsはWebサーバ建てるのが得意ですが、
Rubyと同じ汎用スクリプト言語なので、
コマンドラインツール作ったりするのも得意ですよ。

仕事で業務用ツールとか作りまくってました。

投稿2020/08/17 11:27

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

2_34_koki

2020/08/17 11:29

めちゃくちゃ納得行きました.ありがとうございます.
2_34_koki

2020/08/17 13:55

ご質問なのですが,それだとSSR時とかにもコアモジュールを使えないということでしょうか?
miyabi-sun

2020/08/18 02:39 編集

基本的にReactやVue等はJSファイルをダウンロードさせ、 テンプレート(HTML風)の文字列を読み込ませて、 変数に応じたふさわしいDOMツリーをJavaScript上で作ってもらおうという思想で作られています。 つまり、SPAは殺風景のHTMLにscriptタグが生えているような状態で、 しばらく真っ白の画面で我慢させる事になるわけですね。 一度表示されれば速いですが。 SSRはこの初回ロード時のHTMLを気の利いたDOMに描画して与えてやるアプローチです。 SSRの一度目は良くても2度目の描画はクライアントのJavaScript上ですよね? なのでコアな箇所にはfsやosを使うことは出来ません。 使うとしても、それを包む箇所に使う感じになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問