博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs学习笔记<七> 路由
阅读量:6123 次
发布时间:2019-06-21

本文共 1836 字,大约阅读时间需要 6 分钟。

// 引用模块(与C#中命名空间,Java中引用包同理)var http = require("http");var path = require("path");var fs = require("fs");var url = require("url");// 封装路由函数function Root(visit_path,request,response){    var pathObj = url.parse(request.url,true);    // 获取请求路径,解析为url对象    var filePath = path.join(visit_path,pathObj.pathname);    // 拼接目录路径和请求路径,组合成完整访问路径        var fileContent = fs.readFileSync(filePath,'binary');    // 读取目标路径下的文件,以二进制读取(binary)    response.write(fileContent,'binary');    //    将解析的文件以二进制(binary)方式发送    response.end();    }http.createServer((request,response) => {    Root(path.join(__dirname,'view'),request,response);    // __dirname是nodejs内置变量,用来获取当前文件所在的路径}).listen(8080,'127.0.0.1');console.log("success !");

使用readFileSync以同步的方式读取,同步方式读取文件,若遇到请求路径下没有文件,服务器就会直接挂掉。

// 引用模块(与C#中命名空间,Java中引用包同理)var http = require("http");var path = require("path");var fs = require("fs");var url = require("url");// 封装路由函数function Root(visit_path,request,response){    var pathObj = url.parse(request.url,true);    // 获取请求路径,解析为url对象    var filePath = path.join(visit_path,pathObj.pathname);    // 拼接目录路径和请求路径,组合成完整访问路径    /**     * 一般服务器路由使用readFile异步方式去读文件     * 这样可以根据返回的错误信息做不同处理     */    fs.readFile(filePath,'binary',(err,fileContent) => {        if(err){            response.writeHead(404,'not found');            response.end('

404 未找到页面

'); }else{ response.write(fileContent,'binary'); response.end(); } });}http.createServer((request,response) => { Root(path.join(__dirname,'view'),request,response); // __dirname是nodejs内置变量,用来获取当前文件所在的路径}).listen(8080,'127.0.0.1');console.log("success !");

用readFile异步方式读取就能解决请求路径下没找到文件,服务器挂掉的问题。

readFile()的callback中第一个参数[err]是一个对象,当解析路径出错这样一个对象。

关于 /favicon.ico 请求的问题,在请求启动服务后加上 “Server has started.” 

转载于:https://www.cnblogs.com/MirageFox/p/9172246.html

你可能感兴趣的文章
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>
Android打包常见错误之Export aborted because fatal lint errors were found
查看>>