Node.js搭建本地Web服务器(一)

如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP服务器,并配上 mod_php5 模块和php-cgi。
从这个角度看,整个”接收 HTTP 请求并提供 Web 页面”的需求根本不需要 PHP 来处理。
不过对 Node.js 来说,概念完全不一样了。使用 Node.js 时,我们不仅仅实现一个应用,同时还实现了整个 HTTP 服务器。事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的。


一、准备

首先,需要安装nodejs,这个可以去官网下载。
安装完成后可以通过命令行测试安装是否成功,输入:node -v,应该会显示当前安装node版本号。
本文中用到的模块,都是nodejs核心模块,不需要从外部下载,如果有需要,可以使用以下命令安装:npm install xxx。

因为在大陆地区可能还需要配置淘宝镜像:npm install -g cnpm --registry=https://registry.npm.taobao.org

二、开始

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

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

http.createServer(function (req, res) {
  var pathname = __dirname + url.parse(req.url).pathname;
  if (pathname.charAt(pathname.length - 1) == "/") {
    pathname += "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"});
      }
      fs.readFile(pathname, function (err, data) {
        res.end(data);
      });
    }else {
      res.writeHead(404, {"Content-Type": "text/html"});
      res.end("<h1 style='text-align:center;color:red'>404 Not Found</h1>");
    }
  });
}).listen(8000, "localhost");
console.log("listening at http://localhost:8000/");
三、启动

当node安装完成及上述server.js文件也新建好之后。将其与你要访问的文件夹放在一起,可以放子层。比如,如果你要打开自己写的某个html文件。
你可以先将当前文件放入子层,然后输入如下命令启动web服务:

  • 先打开cmd,进入server文件所在目录,比如是test目录; 然后输入:node ./server.js,

  • 此时会提示server running at http://localhost:8000/, 表示启动服务成功;

  • 最后打开浏览器,进入:localhost:8000/,即可访问此资源。

    文件目录:
    test
    |—css
    ——–|__style.css
    |—image
    ——–|__bg.png
    |—js
    ——–|__script.js
    |—index.html
    |—server.js

四、最后

require引用需要用到的模块;
createServer方法表示创建一个http服务;
pathname入口文件,此处默认index.html
res.writeHead发送HTTP头部\HTTP状态值:200:OK\内容类型:text/html文件;
res可以自己添加信息来简单交互,比如可以修改点header信息或者修改返回的资源数据;
listen 当前监听端口。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值