使用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


相关推荐: 悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  JS经典正则表达式笔试题汇总  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel如何生成API文档?(Swagger/OpenAPI教程)  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Android自定义控件实现温度旋转按钮效果  如何快速搭建二级域名独立网站?  如何快速启动建站代理加盟业务?  Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  英语简历制作免费网站推荐,如何将简历翻译成英文?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何快速登录WAP自助建站平台?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  JavaScript模板引擎Template.js使用详解  SQL查询语句优化的实用方法总结  *服务器网站为何频现安全漏洞?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  高端云建站费用究竟需要多少预算?  活动邀请函制作网站有哪些,活动邀请函文案?  如何在景安云服务器上绑定域名并配置虚拟主机?  Laravel怎么判断请求类型_Laravel Request isMethod用法  文字头像制作网站推荐软件,醒图能自动配文字吗?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  大同网页,大同瑞慈医院官网?  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  如何用JavaScript实现文本编辑器_光标和选区怎么处理  打造顶配客厅影院,这份100寸电视推荐名单请查收  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  在线制作视频的网站有哪些,电脑如何制作视频短片?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  如何用虚拟主机快速搭建网站?详细步骤解析  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何用IIS7快速搭建并优化网站站点?  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Python函数文档自动校验_规范解析【教程】  如何在IIS中新建站点并解决端口绑定冲突?  如何在IIS服务器上快速部署高效网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup