从零开始学习Node.js系列教程二:文本提交与显示方法

发布时间 - 2026-01-11 00:38:26    点击率:

本文实例讲述了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:

知识点:

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程序设计有所帮助。


# Node.js  # 文本  # 提交  # 显示  # node.js中的http.get方法使用说明  # node.js中的http.createServer方法使用说明  # node.js中的http.response.addTrailers方法使用说明  # node.js中的http.response.writeHead方法使用说明  # node.js中的http.request方法使用说明  # node.js+Ajax实现获取HTTP服务器返回数据  # 从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析  # 从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例  # 从零开始学习Node.js系列教程五:服务器监听方法示例  # 从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例  # 从零开始学习Node.js系列教程四:多页面实现的数学运算示例  # 从零开始学习Node.js系列教程三:图片上传和显示方法示例  # 从零开始学习Node.js系列教程一:http get和post用法分析  # 从零开始学习Node.js系列教程之设置HTTP头的方法示例  # 的是  # 给大家  # 所述  # 程序设计  # 讲述了  # 赋予了  # Request  # log  # received  # setEncoding  # postData  # response  # pathname  # console  # parse  # createServer  # chunk  # listen  # Server  # data 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  iOS UIView常见属性方法小结  在线教育网站制作平台,山西立德教育官网?  简历没回改:利用AI润色让你的文字更专业  如何挑选高效建站主机与优质域名?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何在阿里云域名上完成建站全流程?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Laravel观察者模式如何使用_Laravel Model Observer配置  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  Android 常见的图片加载框架详细介绍  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何自定义建站之星网站的导航菜单样式?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  如何快速上传建站程序避免常见错误?  如何基于PHP生成高效IDC网络公司建站源码?  Laravel如何实现事件和监听器?(Event & Listener实战)  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  php结合redis实现高并发下的抢购、秒杀功能的实例  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Laravel如何配置Horizon来管理队列?(安装和使用)  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  手机软键盘弹出时影响布局的解决方法  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  电商网站制作价格怎么算,网上拍卖流程以及规则?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何快速重置建站主机并恢复默认配置?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Android滚轮选择时间控件使用详解  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  JS去除重复并统计数量的实现方法  如何在云主机上快速搭建网站?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  音乐网站服务器如何优化API响应速度?  Python进程池调度策略_任务分发说明【指导】  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Linux网络带宽限制_tc配置实践解析【教程】  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  微信小程序 wx.uploadFile无法上传解决办法