使用node.js搭建服务器

发布时间 - 2026-01-11 01:11:41    点击率:

使用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搭建服务器的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对网站的支持!


# nodejs搭建服务器  # nodejs搭建本地服务器并访问文件的方法  # Nodejs 搭建简单的Web服务器详解及实例  # 在windows上用nodejs搭建静态文件服务器的简单方法  # NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法  # Nodejs如何搭建Web服务器  # 客户端  # 小编  # 是一个  # 这一  # 很好  # 有个  # 那就  # 将会  # 在此  # 英文  # 给大家  # 如果没有  # 总觉得  # 就将  # 这名  # 将不  # 所述  # 开发人员  # 给我留言  # 很有趣 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Android使用GridView实现日历的简单功能  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  javascript基于原型链的继承及call和apply函数用法分析  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  jquery插件bootstrapValidator表单验证详解  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  JS实现鼠标移上去显示图片或微信二维码  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  油猴 教程,油猴搜脚本为什么会网页无法显示?  Mybatis 中的insertOrUpdate操作  如何获取免费开源的自助建站系统源码?  免费网站制作appp,免费制作app哪个平台好?  北京网站制作公司哪家好一点,北京租房网站有哪些?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  详解阿里云nginx服务器多站点的配置  网站制作壁纸教程视频,电脑壁纸网站?  如何快速生成专业多端适配建站电话?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何快速辨别茅台真假?关键步骤解析  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  如何安全更换建站之星模板并保留数据?  如何获取上海专业网站定制建站电话?  Laravel怎么实现模型属性的自动加密  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Laravel如何创建自定义中间件?(Middleware代码示例)  香港服务器部署网站为何提示未备案?  Laravel集合Collection怎么用_Laravel集合常用函数详解  浅谈javascript alert和confirm的美化  C语言设计一个闪闪的圣诞树  javascript读取文本节点方法小结  JavaScript如何实现路由_前端路由原理是什么  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  PHP正则匹配日期和时间(时间戳转换)的实例代码  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  Bootstrap CSS布局之列表  Python函数文档自动校验_规范解析【教程】  如何为不同团队 ID 动态生成多个“认领值班”按钮  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel如何自定义错误页面(404, 500)?(代码示例)  如何在建站之星网店版论坛获取技术支持?  IOS倒计时设置UIButton标题title的抖动问题  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  如何快速选择适合个人网站的云服务器配置?