《了不起的 nodejs》中 TwitterWeb 案例 bug 解决
时间:2022-04-22
本文章向大家介绍《了不起的 nodejs》中 TwitterWeb 案例 bug 解决,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
了不起的nodejs算是一本不错的入门书,不过书中个别案例存在bug,按照书中源码无法做出和书中相同效果,原本兴奋的心情掺杂着些许失落。
现在我们看一下第七章HTTP,一个Twitter Web客户端的例子。
先贴上书中源码
1.创建server.js
1 var qs = require('querystring');
2 require('http').createServer(function(req,res){
3 var body ="";
4 req.on('data',function(chunk){
5 body += chunk;
6 });
7 req.on('end',function(){
8 res.writeHead(200);
9 res.end('Done');
10 console.log('n got name 33[90m' + qs.parse(body).name + ' 33[39mn');
11
12 });
13 }).listen(3000);
2.创建client.js
1 var http = require('http'),
2 qs = require('querystring');
3
4 function send (theName){
5 http.request({
6 host: '127.0.0.1',
7 port: 3000,
8 url: '/',
9 method:'POST'
10 },function(res){
11 res.setEncoding('utf8');
12 res.on('end',function(){
13 console.log('n 33[90m request complete! 33[39m' );
14 process.stdout.write('n your name: ');
15 });
16 }).end(qs.stringify({name: theName}));
17 }
18
19 process.stdout.write('n your name: ');
20 process.stdin.resume();
21 process.stdin.setEncoding('utf8');
22 process.stdin.on('data',function(name){
23 send(name.replace('n', ''));
24 })
很遗憾,最后出来的结果是这样子
效果非常不理想
问题出在哪里呢,和源码一样啊?
哈哈,其实只需要将 client.js 中发送用户名的回调函数修改一下就可以了。
1 var http = require('http'),
2 qs = require('querystring');
3
4 function send (theName){
5 http.request({
6 host: '127.0.0.1',
7 port: 3000,
8 url: '/',
9 method:'POST'
10 },function(){
11 // res.setEncoding('utf8');
12 // res.on('end',function(){
13 console.log('n 33[90m request complete! 33[39m' );
14 process.stdout.write('n your name: ');
15 // });
16 }).end(qs.stringify({name: theName}));
17 }
18
19 process.stdout.write('n your name: ');
20 process.stdin.resume();
21 process.stdin.setEncoding('utf8');
22 process.stdin.on('data',function(name){
23 send(name.replace('n', ''));
24 })
最终结果就是这样子
是不是很酷,虽然是一个很简单的小例子,不过对于初学者来说还是很有成就感的!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- istio的安全(概念)
- 面试题系列第5篇:JDK的运行时常量池、字符串常量池、静态常量池,还傻傻分不清?
- Go by Example 中文版: 互斥锁
- Idea初始化配置大全,以后重装再也不用各种百度了
- 使用这种技巧,可以大大地提高前端布局效率
- Element-UI表格组件实现行拖拽排序
- Vue自定义指令实现拖拽功能
- 小程序 Canvas 层级问题
- JDK 8 新特性之函数式编程 → Stream API
- golang 单元测试框架实践
- 想要成为前端Star 吗?一首歌时间将React/Vue 应用Docker 化
- 60亿次for循环,原来这么多东西
- 不要再问我 in,exists 走不走索引了...
- 知乎太可恶了,一言不合就封号?
- 5年Java开发经验,面试挂在MySQL InnoDB上!大厂究竟多看重MySQL?