使用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自定义表单验证规则教程
如何快速选择适合个人网站的云服务器配置?

