node.js的创建web服务器

版权声明:勿转 https://blog.csdn.net/wuqi5328/article/details/82943379

1.首先使用express创建一个项目

使用npm安装Express开发框架:

//命令行输入命令  注意这是cmd
        npm install -g express  
        npm install -g express-generator  

新建一个项目

//命令行输入命令  cmd
        express -t ejs newsproject  //使用express的创建命令创建一个名为newsproject的项目

如果此处出现错误:'express'不是内部或外部命令,也不是可运行的程序或批处理文件。
原因是版本问题:当前版本是4.0.0,改成3.5.0即可运行,在cmd中输入下面命令
npm install -g [email protected]

npm install -g [email protected]
成功安装express之后 

进入项目目录,运行npm安装

//进入项目目录  
        cd newsproject  //打开项目目录
//输入命令安装  
        npm install  //npm安装

运行项目

//项目目录下运行命令  
         node app.js  //运行此项目

至此,我们已经使用express框架自动搭建了一个node服务器,并启动了express提供的一个demo应用,我们可以按照cmd中的提示修改下面的端口号,使用浏览器访问即可得到demo应用的响应。
浏览器访问:http://127.0.0.1:3000/即可见nodejs站点页面,页面输出:Express

Node.js创建第一个应用

在我们创建 Node.js 第一个 “Hello, World!” 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的:
1、引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
2、创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
3、接收请求与响应请求, 服务器很容易创建,创建成功之后客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据

步骤一、引入 required 模块
我们使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:
var http = require(“http”);
步骤二、创建服务器
接下来我们使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。
实例如下,在你项目的根目录下创建一个叫 server.js 的文件,并写入以下代码:

var http = require('http');

http.createServer(function (request, response) {

    // 发送 HTTP 头部 
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 发送响应数据 "Hello World"
    response.end('Hello World\n');
}).listen(8888);

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

分析Node.js 的 HTTP 服务器:

第一行请求(require)Node.js 自带的 http 模块,并且把它赋值给 http 变量。

接下来我们调用 http 模块提供的函数: createServer 。这个函数会返回 一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号。

以上代码我们完成了一个可以工作的 HTTP 服务器,也就是说上面的代码我们就可以完成了一个本地服务器的搭建,当我们运行上面的代码的时候,一个本地服务器就开始运行了,我们只需要打开浏览器向此服务器发送请求,此服务器就会给浏览器返回你定义的返回数据。

使用 node 命令执行以上的代码:

node server.js
Server running at http://127.0.0.1:8888 //cmd输出信息

接下来,打开浏览器访问 http://127.0.0.1:8888/,你会看到一个写着 “Hello World”的网页。
nodejs-helloworld

现在node.js创建一个应用就完成了:

以下补充:

什么是web服务器?

Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合。

大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。

目前最主流的三个Web服务器是Apache、Nginx、IIS。

Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下:

var http = require('http');

在通常的服务器中,数据流通的方式是客户先通过浏览器进行发送请求,服务器在项目中进行查找,然后进入客户所需要的页面进行返回,在查找的过程中可能存在两种情况,就是存在和不存在,当然,我们会做出判断,下面就是:

简单服务器的实现过程:

1.编写服务器代码server.js

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

//创建服务器
http.createServer(function(request,response) {
    //解析请求,包括文件名
    var pathname= url.parse(request.url).pathname;
    //输出请求的文件名
    console.log("Request for "+ pathname + "  received.");

    //从文件系统中都去请求的文件内容
    fs.readFile(pathname.substr(1),function(err, data) {
        if(err) {
            console.log(err);
            //HTTP 状态码 404 : NOT FOUND
            //Content Type:text/plain
            response.writeHead(404,{'Content-Type': 'text/html'});
        }
        else {
            //HTTP 状态码 200 : OK
            //Content Type:text/plain
            response.writeHead(200,{'Content-Type': 'text/html'});

            //写会相应内容
            response.write(data.toString());
        }
        //发送响应数据
        response.end();
    });
}).listen(8888);

console.log('Server running at http://127.0.0.1:8888/');

通过上面代码,我们就能够实现服务器对于文件的查找,下面,我们就进行创建一个html文件,然后通过浏览器进行访问

2.编写html文件(web_server.html),用于浏览器进行请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    这是我创建的,创建一个html文件进行访问
</body>
</html>

创建完成后,我们进行测试,现在我的目录结构是:

3 .进行测试

(1)首先启动服务器,

(2)在浏览器进行访问,

 后台效果:

 把样式写道另外单独一个文件中,然后通过引用的方式引入,于是就会有人使用下面代码:

   

    <link rel="stylesheet" href="http://127.0.0.1:8081/WebServer/index.css">

但是不可以:

因为传递给前端的方式Content-Type是有问题的,需要我们的服务器进行下一步操作,也就是处理静态文件。既然传给前端时需要告诉type是css,那么我们就进行区分对待,如下面代码,我们对server.js进行修改如下

var http=require('http');
var fs = require('fs');
var url = require('url');
 
//创建服务器
http.createServer(function(request,response) {
  //解析请求,包括文件名
  var pathname= url.parse(request.url).pathname;
  //输出请求的文件名
  console.log("Request for "+ pathname + "  received.");
  //当请求static文件夹时,设置文件返回类型是text/css
  var firstDir = pathname && pathname.split('/')[2];
  var ContentType = null;
  if (firstDir && firstDir === 'static') {
    ContentType = {'Content-Type': 'text/css'};
  } else {
    ContentType = {'Content-Type': 'text/html'}
  }
 
  //从文件系统中去请求的文件内容
  fs.readFile(pathname.substr(1),function(err, data) {
    if(err) {
      console.log(err);
      //HTTP 状态码 404 : NOT FOUND
      //Content Type:text/plain
      response.writeHead(404, {'Content-Type': 'text/html'});
    }
    else {
      //HTTP 状态码 200 : OK
      //Content Type:text/plain
      response.writeHead(200, ContentType);
 
      //写会回相应内容
      response.write(data.toString());
    }
    //发送响应数据
    response.end();
  });
}).listen(8081);
 
console.log('Server running at http://127.0.0.1:8081/');

 接着,我们需要在项目中创建一个static文件夹,如下面所示结构:

在static文件下面放入css样式表

 

猜你喜欢

转载自blog.csdn.net/wuqi5328/article/details/82943379