从零开始学习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 相关文章推荐
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
Javascript小技巧之生成html元素
May 15 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
Jul 18 Javascript
js实现九宫格图片半透明渐显特效的方法
Feb 16 Javascript
JavaScript实现时间倒计时跳转(推荐)
Jun 28 Javascript
老生常谈js数据类型
Aug 03 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
Mar 06 Javascript
react 创建单例组件的方法
Apr 26 Javascript
JS面试题大坑之隐式类型转换实例代码
Oct 14 Javascript
JavaScript中的事件与异常捕获详析
Feb 24 Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 Javascript
JS自定义右键菜单实现代码解析
Jul 16 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
PHP默认安装产生系统漏洞
2006/10/09 PHP
PHP编程中八种常见的文件操作方式
2006/11/19 PHP
php适配器模式介绍
2012/08/14 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
PHP实现的函数重载功能示例
2018/08/03 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
Javascript的匿名函数小结
2009/12/31 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
django中的图片验证码功能
2019/09/18 Python
Django重设Admin密码过程解析
2020/02/10 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
2014植树节活动总结
2014/03/11 职场文书
会计专业求职信范文
2014/03/16 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
Python中文纠错的简单实现
2021/07/07 Python
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python