Node.js を使用して単純な Web サーバーを構築する方法のチュートリアル

高洛峰
リリース: 2017-02-21 14:39:23
オリジナル
1520 人が閲覧しました

この記事のテーマは、ノードを使用して最も単純な Web サーバーを構築することです。後で、ニーズに応じてノードを使用して、開発プロセス中にサーバーとの単純な対話をシミュレートすることができます。リソース制御などを返します。必要な友達は参考にしてください。

前書き

Nodejs を使用した Web サーバーの構築は、Node.js を学習するための比較的包括的な入門チュートリアルです。単純な Web サーバーを完成させるには、次のような Nodejs のいくつかの重要なモジュールを学習する必要があるためです。プロトコル モジュール、ファイル システム、URL 解析モジュール、パス解析モジュール、および 301 リダイレクトの問題について、簡単な Web サーバーを構築する方法について簡単に説明します。

先ほど、Web サーバーを使用せずにブラウザ側のローカル リソースにアクセスしたい場合は、小規模な Web サーバーを単独で起動できる Firefox ブラウザを使用できます。
ノードを初めて使用する人が一般的に理解できるように、この記事のコードを可能な限り単純化するように努めます。

準備

まず、nodejsをインストールする必要があります。これは公式Webサイトからダウンロードできます。現在、v0.12バージョンがローカルにインストールされています。

インストールが完了したら、コマンド ラインで「node -v」と入力してインストールが成功したかどうかをテストできます。現在インストールされているノードのバージョン番号が表示されます。 node -v,应该会显示当前安装node版本号。
本文中用到的模块,都是nodejs核心模块,不需要从外部下载,如果有需要,可以使用以下命令安装:npm install xxx

开始

下一步,新建js文件,可以命名为server.js,代码如下:

var http = require('http');
 var url = require('url');
 var path = require('path');
 var fs = require('fs');

 var dir, arg = process.argv[2] || ''; // 命令行第三个参数,用来接收目录,可为空,相对当前server.js文件的目录名称
 // 比如使用命令 node server debug,意思就是debug文件夹与server.js文件同级
 // 且你想以debug文件夹启动web服务

 http.createServer(function (req, res) {
 var pathname = __dirname + url.parse(req.url).pathname;
 dir = dir ? dir : pathname; // 记住dir(目录)
 pathname = dir ? pathname.replace(dir, dir + arg + '/') : pathname; // 替换文件静态路径
 if (path.extname(pathname) == "") {
 pathname += "/";
 }
 if (pathname.charAt(pathname.length - 1) == "/") {
 pathname += "index.html"; // 入口文件,此处默认index.html
 }

 fs.exists(pathname, function (exists) {
 if (exists) {
 switch (path.extname(pathname)) {
 case ".html":
 res.writeHead(200, {"Content-Type": "text/html"});
 break;
 case ".js":
 res.writeHead(200, {"Content-Type": "text/javascript"});
 break;
 case ".css":
 res.writeHead(200, {"Content-Type": "text/css"});
 break;
 case ".gif":
 res.writeHead(200, {"Content-Type": "image/gif"});
 break;
 case ".jpg":
 res.writeHead(200, {"Content-Type": "image/jpeg"});
 break;
 case ".png":
 res.writeHead(200, {"Content-Type": "image/png"});
 break;
 default:
 res.writeHead(200, {"Content-Type": "application/octet-stream"});
 }

 // res可以自己添加信息来简单交互 比如可以修改点header信息 或者修改返回的资源数据
 fs.readFile(pathname, function (err, data) {
 res.end(data);
 });
 }
 else {
 res.writeHead(404, {"Content-Type": "text/html"});
 res.end("<h1>404 Not Found</h1>");
 }
 });
 }).listen(8085, "127.0.0.5"); // 服务器端口

 console.log("server running at http://www.php.cn/:8085/");
ログイン後にコピー

启动

当node安装完成及上述server.js文件也新建好之后。将其与你要访问的文件夹放在一起,可以放同层或者直接下层。比如,如果你要访问d:testdebug文件夹。

你可以先将当前文件放入同层或者直接下,然后输入如下命令启动web服务:

  1. 先打开`cmd`,进入server文件所在目录,比如是`test`目录;

  2. 然后输入:`node server debug`(同层), 或者`node server`(子层),

  3. 此时会提示`server running at http://www.php.cn/:8085/この記事で使用されているモジュールはすべて nodejs コア モジュールであり、必要に応じて次のコマンドを使用してインストールできます: npm install xxx

  4. Start

次に、server.js という名前の新しい js ファイルを作成します。コードは次のとおりです。

ノードのインストール時 完了後、上記のserver.jsファイルも作成されます。アクセスしたいフォルダーと同じ階層またはその直下にまとめて配置します。たとえば、d:testdebug フォルダーにアクセスする場合です。 まず現在のファイルを同じレイヤーに置くか、直接ダウンロードしてから、次のコマンドを入力して Web サービスを開始できます:

まず `cmd` を開き、サーバー ファイルが配置されているディレクトリに入ります。 `test` ディレクトリなど; ,


は `server running at http://www.php.cn/:8085/` を表示し、サービスが正常に開始されたことを示します


最後にブラウザを開き、このリソースにアクセスするには、「127.0.0.5:8085」と入力します。
  1. 最後に

  2. 上記のコードを簡単に説明します。

  3. まず最初に、どのモジュールを使用する必要があるかを示します。最初にそれらを引用符で囲んでください。
  4. arg は、入力されたコマンドラインの 3 番目のパラメータを示します。上記は手動インターセプトです

;この記事のコードでは、クライアントの関連情報を伝える

🎜🎜req という匿名関数が渡されます。 http リクエストには、リクエスト メソッド、リクエスト クエリ パラメータ、リクエスト ヘッダー情報など、HTTP レスポンス (リターン) オブジェクトを表す 🎜🎜🎜🎜res を使用して、リクエストされたリソースをクライアントに返すことができます。返されたデータ、返されたヘッダー情報など、返されたコードなどの手動 🎜🎜🎜🎜fs は、ファイル リソース オブジェクトを表します。具体的には、nodejs 公式 Web サイトの API にアクセスできます。はリソースパスオブジェクトを表し、具体的にはnodejs公式WebサイトのAPIにアクセスできます。 🎜🎜🎜🎜listen は、作成された listen サービスを表します。このポートにアクセスすると、以前の匿名関数コールバックに入り、リソースをクライアントに返します。 🎜🎜node.js を使用してシンプルな Web サーバーを構築する方法に関するその他のチュートリアルについては、PHP 中国語 Web サイトに注目してください。 🎜
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!