从零开始学习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宝典学习笔记
Feb 07 Javascript
Add a Picture to a Microsoft Word Document
Jun 15 Javascript
使用js在页面中绘制表格核心代码
Sep 16 Javascript
jQuery实现冻结表格行和列
Apr 29 Javascript
Node.js中process模块常用的属性和方法
Dec 13 Javascript
微信小程序实现图片预加载组件
Jan 18 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
Feb 22 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
Oct 10 Javascript
微信小程序自动客服功能
Nov 02 Javascript
微信二次分享报错invalid signature问题及解决方法
Apr 01 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
Sep 29 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
Nov 09 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 采集程序中常用的函数
2009/12/09 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python解决字典中的值是列表问题的方法
2013/03/04 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python中自定义函数的教程
2015/04/27 Python
Python复制文件操作实例详解
2015/11/10 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
Gap英国官网:Gap UK
2018/07/18 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
高中英语教学反思
2014/02/04 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
与美同行演讲稿
2014/09/13 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python