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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2656閲覧

node.jsのnodeコマンド

uer03108

総合スコア194

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/09/25 14:12

node.jsをインストールして、下記のサンプルコードを実行することで、
hello worldをブラウザに表示することが出来ました。

index.js

js

1 2var http = require('http'); 3 4http.createServer(function (request, response) { 5 response.writeHead(200, {'Content-Type': 'text/plain'}); 6 response.end('Hello World\n'); 7}).listen(1234); 8

cmd

1node index.js

url

1localhost:1234

超初歩的な質問なのですが、これは複数のjsファイル(サーバ側)を起動しておく場合はどの様にするのでしょうか。

それとも1つ起動しておけば、同じポート番号を使用した(?)jsファイルは自動的に使用できるのでしょうか。

その位、自分で調べろと言われそうですが、どの様なキーワードで調べれば良いのかが分かりません。。。

この様な基本的で初歩的なことが載っているサイトなどを教えて頂けると幸いです。

サーバ<->クライアント間のパラメタの受け渡し(get, post)は、expressとajaxを使うことで出来ました。

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

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

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

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

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

guest

回答2

0

ベストアンサー

それとも1つ起動しておけば、同じポート番号を使用した(?)jsファイルは自動的に使用できるのでしょうか。

アプリケーションはOSに「このポート番号使いたいんだけど開いてる?」というお伺いを立てに行きます。
そしてOSに貸し出してもらう仕組みになっています。
なので1つのNode.jsのアプリが起動している場合、2個目の別のアプリが同じポート番号を借りようと思っても既に貸出済みなので借りる事が出来ずにエラーになるはずです。

ではどうすればいいか?

  • 80番ポートを持つ代表を用意して、4000番みたいな適当な別ポート番号に中継
  • そのJSファイルで色々なアクセスをさばけるようにする

前者の仕組みをリバースプロキシと呼びます。
最近はNginxなどのサーバアプリが主流ですね。

しかし、Node.jsでやるならばメインは後者です。
WebサーバにHTTPリクエストが飛んできた場合、私はこのパスに向かってリクエストを飛ばしているんだよというURL文字列も格納されています。
ApacheやNginxなどの静的ファイル配信サーバは、このパスとマシン内の特定のディレクトリを紐づけている想定でHDD内を漁って見つけたファイルの文字列を返すような設計になっています。

Node.jsの場合はrequest引数の中にそれらの情報が格納されているはずですので、
それらを使ってif文などで分岐させてやれば複数の挙動を定義できます。
Node.js: get path from the request

JavaScript

1var http = require('http'); 2var url = require('url'); 3var fs = require('fs');

var neededstats = [];

http.createServer(function(req, res) {
if (req.url == '/index.html' || req.url == '/') {
fs.readFile('./index.html', function(err, data) {
res.end(data);
});
} else {
var p = __dirname + '/' + req.params.filepath;
fs.stat(p, function(err, stats) {
if (err) {
throw err;
}
neededstats.push(stats.mtime);
neededstats.push(stats.size);
res.send(neededstats);
});
}
}).listen(8080, '0.0.0.0');
console.log('Server running.');

えー、まじかよif文で区切るとか縄文時代かよ
みたいな話ですので、実際にはhttpモジュールをラップしたExpress.jsを使う事が多いですね。
こっちならば賢くパスで区切るようにアクセスが捌けるのでコードがかなり綺麗になります。

投稿2018/09/26 06:07

miyabi-sun

総合スコア21158

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

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

uer03108

2018/09/26 08:06

有難うございました。 1つのjsファイル(サーバ用)を起動しておけば、他のurlにもアクセスできるということですね。 if文で区切るのは斬新ですね。。。 expressをもう少し調べてみます。 何かdosコマンドでサーバを起動するのも、誰かがctrl + c押したらどうするんだろうと心配になりますが。 でも、apahceもdosからも実行できるんですよね。
miyabi-sun

2018/09/26 09:23

> 何かdosコマンドでサーバを起動するのも、誰かがctrl + c押したらどうするんだろうと心配になりますが。 まぁ他のOSも全部そうで、基本的にはバックグラウンド実行ですね。 例えばWindowsならこんな風に実行する手があります。 https://www.softel.co.jp/blogs/tech/archives/3074 Linuxではhttpdみたいな「なんたらd」を起動することが多いですが、 これはバックグラウンド実行するためにデーモンを利用しています。 https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%83%A2%E3%83%B3_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
guest

0

例えば、ApacheやIISといったWEBサービスを立ち上げれば良いという事になります。
WEBサービスを構築すれば、そのサービスでは複数のファイルを同時に動かすことができます。
なので、検索の仕方としては「WEBサービス、node」といった形で調べれば、ご希望に沿ったサイトが見つかるかもしれません。

投稿2018/09/25 14:18

SatoshiMashino

総合スコア210

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

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

uer03108

2018/09/26 13:20

有難うございます。 調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問