使用node.js搭建服务器

 更新时间:2017年05月20日 08:52:24   投稿:mrr  
最近需要完成一个课程设计,被项目经理(组长)分配写界面功能,下面小编通过本文给大家分享使用使用node搭建小型服务器的方法,需要的朋友参考下

使用node搭建小型服务器(其实就是分析url然后输出文件给客户端)

最近需要完成一个课程设计,被项目经理(组长)分配写界面,但是总觉得只写前端的话缺了点什么,所以想自己写下后端玩一下。

期间还稍微纠结了一下用什么语言,本来打算正好学习一下PHP,可后来转念一想,用nodejs岂不美哉,不仅了解了后台开发,也相当于巩固了js基础,一举两得,美滋滋。

在学习node的过程中,学到了使用node实现一个服务器这一块,感觉是对前面所学模块的一个很好的总结。用到了四个基本的模块fs stream http path

代码如下:(内含蹩脚英文注释请见谅)

'use strict'
var url = require('url');
var path = require('path');
var fs = require('fs');
var http = require('http');
//get the current path
//var root = path.resolve('.');//以当前的目录为服务器的根目录
var root = path.resolve(process.argv[2] || '.');//以输入的参数作为服务器的根目录,如果没有输入参数就将当前目录作为服务器根目录
console.log('local root dir :' + root);
//create server
var server = http.createServer(function(request, response) {
  //get the path of URL
  var pathname = url.parse(request.url).pathname;
  //get the local path
  var filepath = path.join(root, pathname);
  //get the file stat and output the request file by callback function
  fs.stat(filepath, function(err, stat) {
    if(!err && stat.isFile()) {
      console.log('200' + request.url);
      response.writeHead(200);
      fs.createReadStream(filepath).pipe(response);//没有必要手动读取文件内容。由于response对象本身是一个Writable Stream,直接用pipe()方法就实现了自动读取文件内容并输出到HTTP响应。
    } else {
      console.log('404' + request.url);
      response.writeHead(404);
      response.end('404 Not Found');
    }
  });
});
server.listen(8080);
console.log('Server is running at http://127.0.0.1:8080/');

对于其中一些函数的解释:

path.resolve() 路径寻航(这名字不错)
path.resolve([from…], to)

有个解释很有趣:相当于不断地调用系统的cd指令

eg:

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
//相当于:
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile1
path.join([path1],path[2]...) 路径合并

将所有名称用path.seq串联起来,然后用normailze格式化

eg:

path.join('///foo', 'bar', '//baz/asdf', 'quux', '..');
=>'/foo/bar/baz/asdf'

既然提到了normalize

那么:

格式化路径 path.normalize(p)
将不符合规范的路径格式化,简化开发人员中处理各种复杂的路径判断

eg:

path.normalize('/foo/bar//baz/asdf/quux/..');
=> '/foo/bar/baz/asdf'

http.response.end()结束相应,告诉客户端所有消息已经发送。当所有要返回的内容发送完毕时,该函数必须要被调用一次。如果不调用该函数,那么客户端将会永远处于等待状态。

使用方法:

response.end([data], [encoding])

data end()执行完毕后要输出的字符,如果指定了 data 的值,那就意味着在执行完 response.end() 之后,会接着执行一条 response.write(data , encoding);

encoding 对应data的字符编码

以上所述是小编给大家介绍的使用node.js搭建服务器的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Node调用Java的示例代码

    Node调用Java的示例代码

    本篇文章主要介绍了Node调用Java的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • node环境执行js文件的完整步骤

    node环境执行js文件的完整步骤

    Nodejs下运行JS代码有两种方式,一种是在Node.js的交互环境下运行,另外一种是把代码写入文件中,然后用node命令执行文件代码,下面这篇文章主要给大家介绍了关于node环境执行js文件的相关资料,需要的朋友可以参考下
    2023-02-02
  • Node.js利用断言模块assert进行单元测试的方法

    Node.js利用断言模块assert进行单元测试的方法

    最近在用Node写一个实时聊天小应用,其中就用到了单元测试,所以死下面这篇文章主要给大家介绍了关于Node.js利用断言模块assert进行单元测试的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • window10系统下nvm详细安装步骤以及使用

    window10系统下nvm详细安装步骤以及使用

    nvm可以管理不同版本的node和npm,可以简单操作node版本的切换、安装、查看等,下面这篇文章主要给大家介绍了关于window10系统下nvm详细安装步骤以及使用的相关资料,需要的朋友可以参考下
    2022-07-07
  • 简单模拟node.js中require的加载机制

    简单模拟node.js中require的加载机制

    大家都知道Node 采用的模块化结构是按照 CommonJS 规范,模块与文件是一一对应关系,即加载一个模块,实际上就是加载对应的一个模块文件。这篇文章显示简单的介绍了nodejs中require的加载机制,而后简单的模拟require函数,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • 浅谈Node框架接入ELK实践总结

    浅谈Node框架接入ELK实践总结

    这篇文章主要介绍了浅谈Node框架接入ELK实践总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Node.js之网络通讯模块实现浅析

    Node.js之网络通讯模块实现浅析

    本篇文章主要介绍了Node.js之网络通讯模块实现浅析,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • electron安装报错终极解决办法详细讲解

    electron安装报错终极解决办法详细讲解

    当使用npm安装electron时,有时候会遇到各种各样的错误,如网络错误、权限错误等等,这篇文章主要给大家介绍了关于electron安装报错终极解决办法的相关资料,需要的朋友可以参考下
    2024-09-09
  • 你所未知的3种Node.js代码优化方式

    你所未知的3种Node.js代码优化方式

    这篇文章主要为大家介绍了3种你所未知的Node.js代码优化方式,帮助大家刚好的进行代码优化,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Nodejs关于gzip/deflate压缩详解

    Nodejs关于gzip/deflate压缩详解

    本文主要向大家介绍了nodejs中关于gzip/deflate压缩的2种方法,分别是管道压缩和非管道压缩,十分详细,并附带示例,这里推荐给大家参考下。
    2015-03-03

最新评论