nodejs学习笔记<七> 路由
// 引用模块(与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('<h1>404 未找到页面</h1>');
}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.”
nodejs学习笔记<七> 路由的更多相关文章
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...
- Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例
前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...
- Nodejs学习笔记(四)——支持Mongodb
前言:回顾前面零零碎碎写的三篇挂着Nodejs学习笔记的文章,着实有点名不副实,当然,这篇可能还是要继续走着离主线越走越远的路子,从简短的介绍什么是Nodejs,到如何寻找一个可以调试的Nodejs ...
- Nodejs学习笔记(三)——一张图看懂Nodejs建站
前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...
- Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识
目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...
- Nodejs学习笔记(十六)--- Pomelo介绍&入门
目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...
- Nodejs学习笔记(十六)—Pomelo介绍&入门
前言&介绍 Pomelo:一个快速.可扩展.Node.js分布式游戏服务器框架 从三四年前接触Node.js开始就接触到了Pomelo,从Pomelo最初的版本到现在,总的来说网易出品还算不错 ...
- Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识
前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...
随机推荐
- Azure IOT Edge
微软Build 2017大会,纳德拉表示,在计算力的飞速发展中,微软要做的就是将计算的能力赋权给普通用户,让技术为更多用户所用,让计算机视觉.文本理解等技术变得更加普惠(inclusive),同时构建 ...
- golang里处理xml文件 转自https://studygolang.com/articles/5328
<?xml version="1.0" encoding="utf-8"?> <servers version="1"&g ...
- overflow标签
有时父标签设置了固定的宽高,但子标签把父标签给撑开了,就要在父标签里加一个overflow标签,等于hidden超出的地方隐藏,等于auto超出的地方隐藏,并且多个滚动条 <div style= ...
- linux的系统组成和计算机组成原理,linux常用操作
Linux入门 linux简介 学习目的:linux服务器操作系统稳定长期运行,python,pycharm装于linux上 linux系统组成 应用软件:调用系统软件接口 linux操作系统分两 ...
- php 安装mongo扩展(其他扩展同理)
很多次安装mogo扩展不成功,总结出来,无非就是一个原因.对应的版本选择不正确 简单来说这篇文章就是来教你如何选择php对应的mongo.ll版本 查看phpinfo https://pecl.php ...
- RTB业务知识之2-Impression概念和关键属性
一.定义-impression This object describes an ad placement or impression being auctioned. A single bid re ...
- java中构造方法和普通方法的区别
1.普通方法: 定义:简单的说方法就是完成特定功能的代码块. 普通方法定义格式: 修饰符 返回值类型 方法名 (参数类型 参数名1,参数类型 参数名2,.........) { 函数体: re ...
- spring cloud-前端跨域问题的解决方案
当我们需要将spring boot以restful接口的方式对外提供服务的时候,如果此时架构是前后端分离的,那么就会涉及到跨域的问题,那怎么来解决跨域的问题了,下面就来探讨下这个问题. 解决方案一: ...
- TCP/IP学习20180627-数据链路层-ethernet
ifconfig :查看主機支持的網絡協議eth0:以太網接口lo:loopback接口 以太网(Ether-net)的定是指数字设备公司( Digital Equipment Corp.).英特尔公 ...
- 使用R语言-计算均值,方差等
R语言对于数值计算很方便,最近用到了计算方差,标准差的功能,特记录. 数据准备 height <- c(6.00, 5.92, 5.58, 5.92) 1 计算均值 mean(height) [ ...