从零开始学习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字符串日期yyyy-MM-dd转化为date示例代码
Mar 06 Javascript
开发中可能会用到的jQuery小技巧
Mar 07 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
Jun 24 Javascript
js分页工具实例
Jan 28 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
vue 开发一个按钮组件的示例代码
Mar 27 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
May 09 Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 Javascript
基于Vue实现图片在指定区域内移动的思路详解
Nov 11 Javascript
JS实现图片切换特效
Dec 23 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 GD绘制24小时柱状图
2008/06/28 PHP
php二分查找二种实现示例
2014/03/12 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
javascript数据类型详解
2017/02/07 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
python连接MySQL数据库实例分析
2015/05/12 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
用 Python 制作地球仪的方法
2020/04/24 Python
Wallis官网:英国女装零售商
2020/01/21 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
新闻网站实习自我鉴定
2013/09/25 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
校庆口号
2014/06/20 职场文书
银行给客户的感谢信
2015/01/23 职场文书
校友会致辞
2015/07/30 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技