让我们一起学习《Node.js入门》一书吧!
Node.js入门 读完本书之后,你将完成一个完整的web应用,该应用允许用户浏览页面以及上传文件。
里面对一些知识的讲解,让你略窥Node.js的门径。最好一段代码一段代码的写下来,我的习惯是手里拿着笔,边写重点的词,边思索,再敲敲代码。一天到两天你能看完这本书,我看过一遍了,计划再寻摸一遍。有问题大家可以一起探讨。
四个文件在同一个目录下
启动
cmd窗口:
输入 node D:\workspace\nodejs\index.js
也可以定位到当前目录后:
D:\workspace\nodejs\ node index.js
打开
localhost:8080/start
说下,此书最后的例子完整代码中有点问题。你应该会出现 类似no such file or directory ,或者是此文件已经存在的错误提示。修改处已经做了标注:
具体文件:
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; handle["/show"]=requestHandlers.show; 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"); route(handle,pathname,response,request); } http.createServer(onRequest).listen(8080); console.log("Server has started"); } exports.start=start;
router.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");
route(handle,pathname,response,request);
}
http.createServer(onRequest).listen(8080);
console.log("Server has started");
}
exports.start=start;
requestHandler.js
//var exec=require("child_process").exec; var querystring=require("querystring"), fs=require("fs"), formidable=require("formidable"); function start(response){ console.log("start was called"); var body="<!DOCTYPE html>"+ '<head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>'+ '这是个测试</title></head><body>'+ '<form action="/upload" enctype="multipart/form-data" method="post">'+ '<input type="file" name="upload" />'+ '<input type="submit" value="Upload file" />'+ '</form>'+'</body></html>'; response.writeHead(200,{"Content-Type":"text/html"}); response.write(body); response.end(); } function upload(response,request){ console.log("upload was called"); var form=new formidable.IncomingForm({uploadDir:"tmp"});//Modify console.log("about to parse"); form.parse(request,function(error,fields,files){ console.log("parsing done"); fs.renameSync(files.upload.path,"tmp/test.jpg");//The Dir,pay attention response.writeHead(200, {"Content-Type": "text/html"}); response.write("Received image:<br /><img src='/show' />"); response.end(); }); } function show(response){ console.log("Show was callde"); fs.readFile("tmp/test.jpg","binary",function(error,file){//The Dir,pay attention if(error){ response.writeHead(500,{"Content-Type":"text/plain"}) response.write(error + "\n"); response.end(); } else { response.writeHead(200, {"Content-Type": "image/jpeg"}); response.write(file, "binary"); response.end(); } }) } exports.start=start; exports.upload=upload; exports.show=show;
你可以下载 node.js入门正确示例
让我们一起学习《Node.js入门》一书吧!的更多相关文章
- 【特别推荐】Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- Node.js入门 NPM
参考一 Node入门 七天学会NodeJS Node.js v4.2.4 手册 & 文档 Node.js 教程 node.js摸石头系列 从零开始学习node.js What is ...
- 创业笔记-Node.js入门之JavaScript与Node.js
JavaScript与Node.js JavaScript与你 抛开技术,我们先来聊聊你以及你和JavaScript的关系.本章的主要目的是想让你看看,对你而言是否有必要继续阅读后续章节的内容. 如果 ...
- 【灵魂拷问】你为什么要来学习Node.js呢?
[灵魂拷问]你为什么要来学习Node.js呢? 学习node.js适合的人群: 需要必备一些HTML,CSS,JavaScript及编程有一定程度了解的读者阅读,一些简单的命令行操作,具备服务端开发经 ...
- Node.js 入门到干活,10 个优质项目就够了!
Node.js 在很多大公司都有不错的实践,比如:淘宝.天猫 Web 版,很多页面都是在 Node 服务器上渲染的.还有各种脚手架.前端打包发布工具.构建生态的小工具,也基本都是 Node.js 编写 ...
- 极简 Node.js 入门 - Node.js 是什么、性能有优势?
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 4.4 可写流
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 前端学习 node 快速入门 系列 —— 初步认识 node
其他章节请看: 前端学习 node 快速入门 系列 初步认识 node node 是什么 node(或者称node.js)是 javaScript(以下简称js) 运行时的一个环境.不是一门语言. 以 ...
随机推荐
- app:发布新版本的具体步骤
1
- 20145208 实验三 Java面向对象程序设计
20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
- 零散知识记录-一个MQ问题
[背景]我有一项零散工作:维护大部门的一台测试公用MQ服务器.当大部分MQ被建立起来,编写了维护手册,大家都按照规程来后,就基本上没有再动过它了.周五有同学跟我反映登录不进去了,周日花了1个小时来解决 ...
- memset的使用
今天写程序的时候用了memset这个函数,我知道他是关于清空指针的,设置为0.但我用的时候,没有注意到他是以字节为单位进行操作的,改了半天其他程序内容.要注意的是,memset是对字字进行操作,所以以 ...
- 由外边距合并到BFC
置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<JavaScript实现Ajax小结> 作者主页:myvin 博主QQ:851399101(点击QQ和 ...
- #Linux学习笔记# Linux文件的所有者、群组和其他人
1.关于所有者.群组和其他人 在Linux系统中,每个文件都具有User.Group和Others三种身份的权限配置.那这三种身份分别表示什么意思呢?配置这三种身份的权限有啥意义呢? (1)文件所有者 ...
- FileStream大文件复制
FileStream缓冲读取和写入可以提高性能.FileStream读取文件的时候,是先讲流放入内存,经Flash()方法后将内存中(缓冲中)的数据写入文件.如果文件非常大,势必消耗性能.特封装在Fi ...
- nginx web加密访问
有时我们会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开, 我们希望的是某些特定的客户端可以访问.那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那 ...
- onclik的使用.
//好笨啊,这个居然忘记了,在行间家onclick事件要加();,addEventListener只要使用函数名字就好了 <!doctype html> <html> < ...
- hdu4547 lca tarjan
比较直接. #include<map> #include<queue> #include<stack> #include<cmath> #include ...