从零开始学习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 sortable效果 代码有错但值得看看
Nov 05 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
Nov 07 Javascript
js实现Select列表内容自动滚动效果代码
Aug 20 Javascript
深入理解jquery中的each用法
Dec 14 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
Mar 08 Javascript
JS解决移动web开发手机输入框弹出的问题
Mar 31 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
May 02 Javascript
JavaScript中关于class的调用方法
Nov 28 Javascript
微信小程序switch开关选择器使用详解
Jan 31 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
Nov 25 Javascript
js模拟实现烟花特效
Mar 10 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与javascript对多项选择的处理
2006/10/09 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
英国足球店:UK Soccer Shop
2017/11/19 全球购物
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
自我评价格式
2014/01/06 职场文书
给老婆的搞笑检讨书
2014/01/12 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
Python函数中的不定长参数相关知识总结
2021/06/24 Python
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
mysql如何能有效防止删库跑路
2021/10/05 MySQL
Python实现文字pdf转换图片pdf效果
2022/04/03 Python