从零开始学习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 相关文章推荐
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
Oct 09 Javascript
谈谈jQuery Ajax用法详解
Nov 27 Javascript
Bootstrap字体图标无法正常显示的解决方法
Oct 08 Javascript
bootstrap flask登录页面编写实例
Nov 01 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
Feb 09 Javascript
vue微信分享的实现(在当前页面分享其他页面)
Apr 16 Javascript
vue引入静态js文件的方法
Jun 20 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
Sep 11 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
JavaScript模拟实现网易云轮播效果
Apr 04 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
提问的智慧(2)
2006/10/09 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
angularJS 入门基础
2015/02/09 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
环境工程大学生个人的自我评价
2013/10/08 职场文书
农村婚礼证婚词
2014/01/10 职场文书
学习决心书范文
2014/03/11 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js