从零开始学习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 相关文章推荐
让你的网站可编辑的实现js代码
Oct 19 Javascript
DOM_window对象属性之--clipboardData对象操作代码
Feb 03 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
给文字加上着重号的JS代码
Nov 12 Javascript
PHP实现本地图片上传和验证功能
Feb 27 Javascript
js数组去重的N种方法(小结)
Jun 07 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
Jun 08 Javascript
详解vue.js下引入百度地图jsApi的两种方法
Jul 27 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
axios对请求各种异常情况处理的封装方法
Sep 25 Javascript
webpack中的模式(mode)使用详解
Feb 20 Javascript
JavaScript架构localStorage特殊场景下二次封装操作
Jun 21 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 验证码的实现代码
2011/07/17 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
php 使用array函数实现分页
2015/02/13 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
zend framework重定向方法小结
2016/05/28 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
js string 转 int 注意的问题小结
2013/08/15 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
大学毕业生推荐信
2014/07/09 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
八年级物理教学反思
2016/02/19 职场文书
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript