从零开始学习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 相关文章推荐
[原创]静态页面也可以实现预览 列表不同的显示方式
Oct 14 Javascript
js实现权限树的更新权限时的全选全消功能
Feb 17 Javascript
js调用activeX获取u盘序列号的代码
Nov 21 Javascript
jQuery实现转动随机数抽奖效果的方法
May 21 Javascript
原生Javascript和jQuery做轮播图简单例子
Oct 11 Javascript
Js apply方法详解
Feb 16 Javascript
js前端实现图片懒加载(lazyload)的两种方式
Apr 24 Javascript
vue-loader教程介绍
Jun 14 Javascript
js实现点击按钮随机生成背景颜色
Sep 05 Javascript
关于Vue中$refs的探索浅析
Nov 05 Javascript
微信小程序选择图片控件
Jan 19 Javascript
前端实现滑动按钮AJAX与后端交互的示例代码
Feb 24 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通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
php实现数字补零的方法总结
2018/09/12 PHP
为javascript添加String.Format方法
2020/08/11 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
vue封装swiper代码实例解析
2019/10/08 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
python的多重继承的理解
2017/08/06 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
天猫精选:上天猫,就够了
2016/09/21 全球购物
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
销售自荐信
2013/10/22 职场文书
中国好声音华少广告词
2014/03/17 职场文书
员工安全生产责任书
2014/07/22 职场文书
初中学习计划书范文
2014/09/15 职场文书
员工考勤管理制度
2015/08/06 职场文书
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS