【node.js】搭建可访问本地文件的服务器

一、先上访问静态文件的完整代码
(先走下流程,再解析代码)

//加载模块
var http = require('http');
var fs = require('fs');
var url = require('url');
var path = require('path')
 
var server = http.createServer(function(req, res){
    var staticPath = path.join(__dirname,'act');    
    var pathObj = url.parse(req.url, true);            
    var filePath = path.join(staticPath, pathObj.pathname);                                                         
    var fileContent = fs.readFileSync(filePath,'binary');      
    res.write(fileContent,'binary');
    res.end();    
});
 
server.listen(8080);
console.log('服务器已打开, 可以运行 http://localhost:8080');


①、将代码复制到server.js文件中。(我的server.js是放在E盘下的subject文件中)

②、同时server.js同目录下创建一个act文件,用于存放html文件

③、在act里面创建一个index.html文件。(内容大家随便)。

④、在cmd终端运行server.js(不知道如何运行,可以看我以前写的“node.js简易上手”);

⑤、在浏览器中输入http://localhost:8080/index.html。就可以运行了。(如果在chrome浏览器运行有问题的朋友,可以在火狐浏览器打开)

 
二、代码分析。

//加载模块
var http = require('http');
var fs = require('fs');
var url = require('url');
var path = require('path')
 
var server = http.createServer(function(req, res){
    
    //1.__dirname是全局变量,可以直接获取。表示当前执行脚本所在的目录。(这里是E:\subject)
    var staticPath = path.join(__dirname,'act');    
        //path.join方法,拼接目录地址
    //2.staticPath拼接后的目录地址,为了跳到自己项目所在那个目录。(这里是E:\subject\act)
 
    //3.req.url请求的链接(这里输出的是/index.html)
    var pathObj = url.parse(req.url, true);            
        //url.parse方法,解析请求的url,解决链接"\"和"/"的差异问题。
    //4.解析后的req.url是个对象。
    
    //5.从解析后的对象中获取到pathname(这里pathObj.pathname是/index.html)
    var filePath = path.join(staticPath, pathObj.pathname);   
        //path.join方法,拼接完整项目目录地址。
    //6.fileContent拼接后的项目目录名字(这里是E:\subject\act\index.html)
            
    //fs.readFileSync方法,同步读取文件信息                                                          
    var fileContent = fs.readFileSync(filePath,'binary');      
        //读取拼接完整后的目录中的文件, 'binary'表示二进制方式读取    
    
    res.write(fileContent,'binary');
    res.end();    
});
 
server.listen(8080);
console.log('服务器已打开, 可以运行 http://localhost:8080');


这里要注意下的是

var fileContent = fs.readFileSync(filePath,'binary');  

 
fs.readFileSync()方法是同步读取文件数据,如果文件过大读取时间会稍长,会导致响应时间过长。
原文链接:https://blog.csdn.net/w390058785/article/details/79757014 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值