NodeJS入门(一)- 基本文件路由实现
2017-03-10 12:05
393 查看
使用http和fs模块实现文件路由和基本页面访问【不涉及后台交互】
分为三个文件:
app.js 应用文件(放在项目根目录)
server.js 服务器启动文件(放在server目录)
route.js 路由文件(放在route目录)
运行node app.js,即可
app.js
server.js
route.js
这里模块编写遵循JS函数式编程规范
分为三个文件:
app.js 应用文件(放在项目根目录)
server.js 服务器启动文件(放在server目录)
route.js 路由文件(放在route目录)
运行node app.js,即可
app.js
var server = require('./server/server'); var router = require('./route/route'); router.setRootPath(__dirname); router.get('/', function(req, res){ router.sendFile(res, "/view/index.html"); });//处理/的get请求 server.start(router);
server.js
var http = require('http'); function start(router) { http.createServer(function(request, response) { router.init(request, response); }).listen(8080); console.log('Server 127.0.0.1:8080 starting'); } exports.start = start;
route.js
var url = require('url'); var path = require('path'); var querystring = require('querystring'); var fs = require('fs'); module.exports = { fileType: { "css": "text/css", "gif": "image/gif", "html": "text/html", "ico": "image/x-icon", "jpeg": "image/jpeg", "jpg": "image/jpeg", "js": "text/javascript", "json": "application/json", "pdf": "application/pdf", "png": "image/png", "svg": "image/svg+xml", "swf": "application/x-shockwave-flash", "tiff": "image/tiff", "txt": "text/plain", "wav": "audio/x-wav", "wma": "audio/x-ms-wma", "wmv": "video/x-ms-wmv", "xml": "text/xml" }, routePathGet: {}, routePathPost: {}, get: function(pathname, fn) { this.routePathGet[pathname] = fn; }, post: function(pathname, fn) { this.routePathPost[pathname] = fn; }, rootPath: "", setRootPath: function(rp) { this.rootPath = rp; }, sendFile: function(response, pathname) { var ext = path.extname(pathname).slice(1); var ft = this.fileType[ext] || "text/plain"; response.setHeader("Content-type", [ft, "charset=utf-8"]); pathname = this.rootPath + pathname; pathname = path.normalize(pathname); fs.readFile(pathname, function(err, data) { if (err) { response.statusCode = 404; response.end('404文件不存在'); } else { response.statusCode = 200; response.end(data, "binary"); } }); }, init: function(request, response) { console.log(request.url); var fn = undefined; var pathname = request.url; if (request.method.toLowerCase() === 'get') { fn = this.routePathGet[pathname]; } else { fn = this.routePathPost[pathname]; } if (fn) { fn(request, response); } else { this.sendFile(response, pathname); } } };
这里模块编写遵循JS函数式编程规范
相关文章推荐
- nodejs入门学习笔记一——一个完整的http路由服务实现
- Node初学者入门,一本全面的NodeJS教程,微小的web框架,能实现文件上传功能以及数据解析功能
- 路由基本配置命令收录(快速入门)
- 文件服务器实现基本条件!
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- 动态规划入门(三)DP 基本思想 具体实现 经典题目 POJ1159 POJ1458 POJ1141
- 动态规划入门(二)DP 基本思想 具体实现 经典题目 POJ1088 POJ1163 POJ1050
- 在C++中实现文件的读写的基本方法
- 基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(二):秒表
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- D-Bus入门(四)——QTDBUS代码,实现ofono代码下的python测试文件activite-context的功能
- WebWork之--使用fileUpload interceptor实现文件上传[基本配置+注意事项]
- BizTalk Server 基于消息的基本数据交换(二) - 使用属性提升 实现根据消息内容的路由及订阅
- JAVA 文件上传下载笔记之使用基本IO流实现上传
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- Linux命令-基本操作及文件操作常用命令--详解Linux入门到精通系列
- BizTalk Server 基于消息的基本数据交换(二) - 使用属性提升 实现根据消息内容的路由及订阅
- Silverlight中用WCF实现文件快速上传(一、基本方法)(转载)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)