从零开始学习Node.js系列教程二:文本提交与显示方法


Posted in Javascript onApril 13, 2017

本文实例讲述了Node.js文本提交与显示方法。分享给大家供大家参考,具体如下:

index.js

var server = require("./server");
var router = require("./router");
var requestHandlers = require("./requestHandlers");
var handle = {}
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
server.start(router.route, handle);

server.js

var http = require("http");
var url = require("url");
function start(route, handle) {
 function onRequest(request, response) {
  var postData = "";
  var pathname = url.parse(request.url).pathname;
  console.log("Request for " + pathname + " received.");
  request.setEncoding("utf8");
  request.addListener("data", function(postDataChunk) {
   postData += postDataChunk;
   console.log("Received POST data chunk '"+
   postDataChunk + "'.");
  });
  request.addListener("end", function() {
   console.log("data received ending" + pathname);
   route(handle, pathname, response, postData);
  });
 }
 http.createServer(onRequest).listen(8888);
 console.log("Server has started.");
}
exports.start = start;

requestHandlers.js

var querystring = require("querystring");
function start(response, postData) {
 console.log("Request handler 'start' was called.");
 var body = '<html>'+
  '<head>'+
  '<meta http-equiv="Content-Type" content="text/html; '+
  'charset=UTF-8" />'+
  '</head>'+
  '<body>'+
  '<form action="/upload" method="post">'+
  '<textarea name="text" rows="20" cols="60"></textarea>'+
  '<input type="submit" value="Submit text" />'+
  '</form>'+
  '</body>'+
  '</html>';
  response.writeHead(200, {"Content-Type": "text/html"});
  response.write(body);
  response.end();
}
function upload(response, postData) {
 console.log("Request handler 'upload' was called.");
 response.writeHead(200, {"Content-Type": "text/plain"});
 response.write("You've sent the text: "+
 querystring.parse(postData).text);
 response.end();
}
exports.start = start;
exports.upload = upload;

router.js

function route(handle, pathname, response, postData) {
 console.log("About to route a request for " + pathname);
 if (typeof handle[pathname] === 'function') {
  handle[pathname](response, postData);
 } else {
  console.log("No request handler found for " + pathname);
  response.writeHead(404, {"Content-Type": "text/plain"});
  response.write("404 Not found");
  response.end();
 }
}
exports.route = route;

result:

从零开始学习Node.js系列教程二:文本提交与显示方法从零开始学习Node.js系列教程二:文本提交与显示方法从零开始学习Node.js系列教程二:文本提交与显示方法从零开始学习Node.js系列教程二:文本提交与显示方法从零开始学习Node.js系列教程二:文本提交与显示方法

知识点:

require和exports的用法:

index.js中代码

var Hello = require('.hello');
hello = new Hello();
hello.setName('Joey');
hello.sayHello();

hello.js中代码

function Hello(){
  var name;
  this.setName = function(thyName){
    name = thyName;
  }
  this.sayHello = function(){
    console.log('Hello ' + name);
  }
}
//exports.Hello = Hello; //此时我们在其他文件中需要通过 require('./hello').Hello来获取Hello对象,这种写法有点冗余
module.exports = Hello; //输出的就是Hello对象本身,不是上面的exports,上面的是暴露.Hello,.Hello赋予了Hello对象

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
arguments对象
Nov 20 Javascript
extjs 学习笔记(二) Ext.Element类
Oct 13 Javascript
jquery tablesorter.js 支持中文表格排序改进
Dec 09 Javascript
创建公共调用 jQuery Ajax 带返回值
Aug 01 Javascript
js计算两个时间之间天数差的实例代码
Nov 19 Javascript
jquery插件推荐 jquery.cookie
Nov 09 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
使用vue根据状态添加列表数据和删除列表数据的实例
Sep 29 Javascript
微信小程序自定义底部导航带跳转功能
Nov 27 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 14 Javascript
vue引入静态js文件的方法
Jun 20 Javascript
vue监听dom大小改变案例
Jul 29 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 #Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
Apr 13 #Javascript
JavaScript数据结构之二叉树的计数算法示例
Apr 13 #Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 #Javascript
JavaScript数据结构之二叉树的查找算法示例
Apr 13 #Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 #jQuery
JavaScript中this的用法及this在不同应用场景的作用解析
Apr 13 #Javascript
You might like
json对象转字符串如何实现
2012/12/02 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Python中is和==的区别详解
2018/11/15 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
python修改文件内容的3种方法详解
2019/11/15 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
python numpy库np.percentile用法说明
2020/06/08 Python
python 制作本地应用搜索工具
2021/02/27 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
爱情保证书
2015/01/17 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
国际贸易实训总结
2015/08/03 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang