この記事のテーマは、ノードを使用して最も単純な 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服务:
先打开`cmd`,进入server文件所在目录,比如是`test`目录;
然后输入:`node server debug
`(同层), 或者`node server
`(子层),
此时会提示`server running at http://www.php.cn/:8085/
この記事で使用されているモジュールはすべて nodejs コア モジュールであり、必要に応じて次のコマンドを使用してインストールできます: npm install xxx
。
Start
ノードのインストール時 完了後、上記のserver.jsファイルも作成されます。アクセスしたいフォルダーと同じ階層またはその直下にまとめて配置します。たとえば、d:testdebug フォルダーにアクセスする場合です。 まず現在のファイルを同じレイヤーに置くか、直接ダウンロードしてから、次のコマンドを入力して Web サービスを開始できます:
まず `cmd` を開き、サーバー ファイルが配置されているディレクトリに入ります。 `test` ディレクトリなど; ,
は `server running at http://www.php.cn/:8085/
` を表示し、サービスが正常に開始されたことを示します
最後に
上記のコードを簡単に説明します。
;この記事のコードでは、クライアントの関連情報を伝える
🎜🎜req という匿名関数が渡されます。 http リクエストには、リクエスト メソッド、リクエスト クエリ パラメータ、リクエスト ヘッダー情報など、HTTP レスポンス (リターン) オブジェクトを表す 🎜🎜🎜🎜res を使用して、リクエストされたリソースをクライアントに返すことができます。返されたデータ、返されたヘッダー情報など、返されたコードなどの手動 🎜🎜🎜🎜fs は、ファイル リソース オブジェクトを表します。具体的には、nodejs 公式 Web サイトの API にアクセスできます。はリソースパスオブジェクトを表し、具体的にはnodejs公式WebサイトのAPIにアクセスできます。 🎜🎜🎜🎜listen は、作成された listen サービスを表します。このポートにアクセスすると、以前の匿名関数コールバックに入り、リソースをクライアントに返します。 🎜🎜node.js を使用してシンプルな Web サーバーを構築する方法に関するその他のチュートリアルについては、PHP 中国語 Web サイトに注目してください。 🎜