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入门》一书吧!的更多相关文章

  1. 【特别推荐】Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  2. Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  3. Node.js入门 NPM

    参考一 Node入门  七天学会NodeJS  Node.js v4.2.4 手册 & 文档  Node.js 教程 node.js摸石头系列 从零开始学习node.js   What is ...

  4. 创业笔记-Node.js入门之JavaScript与Node.js

    JavaScript与Node.js JavaScript与你 抛开技术,我们先来聊聊你以及你和JavaScript的关系.本章的主要目的是想让你看看,对你而言是否有必要继续阅读后续章节的内容. 如果 ...

  5. 【灵魂拷问】你为什么要来学习Node.js呢?

    [灵魂拷问]你为什么要来学习Node.js呢? 学习node.js适合的人群: 需要必备一些HTML,CSS,JavaScript及编程有一定程度了解的读者阅读,一些简单的命令行操作,具备服务端开发经 ...

  6. Node.js 入门到干活,10 个优质项目就够了!

    Node.js 在很多大公司都有不错的实践,比如:淘宝.天猫 Web 版,很多页面都是在 Node 服务器上渲染的.还有各种脚手架.前端打包发布工具.构建生态的小工具,也基本都是 Node.js 编写 ...

  7. 极简 Node.js 入门 - Node.js 是什么、性能有优势?

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  8. 极简 Node.js 入门 - 4.4 可写流

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  9. 前端学习 node 快速入门 系列 —— 初步认识 node

    其他章节请看: 前端学习 node 快速入门 系列 初步认识 node node 是什么 node(或者称node.js)是 javaScript(以下简称js) 运行时的一个环境.不是一门语言. 以 ...

随机推荐

  1. 高校手机签到系统——第一部分Authority权限系统(下)

    很抱歉,之前寝室光纤断了,所以到现在才更新这个系列的第二篇博客.点击访问高校手机签到系统——第一部分Authority权限系统(上) 这几天我反思了一下上一篇写博上的方式,一味的贴代码式的,是否应该更 ...

  2. CocoaPods Podfile 文件写法有讲究

    最近做到一些项目想到用 OC/Swift混编的问题.为了搞懂 bridge header 这个文件是咋个情况.却一致报错.最后不知不觉发现问题问题居然出在 Podfile 上. 开始我是从 IT 江湖 ...

  3. scikit-learn——快速入门

    scikit-learn——快速入门 sklearn 快速入门 环境: ubuntu 12.04, 64 bits python 2.7 sklearn 0.14 好几个月没有发博客了,平时的笔记都随 ...

  4. OVER(PARTITION BY)函数介绍

    问题场景 最近在项目中遇到了对每一个类型进行求和并且求该类型所占的比例,当时考虑求出每种类型的和,并在java中分别对每一种类型的和与总和相除求出所占比例.后来,想到这样有点麻烦,并且项目中持久层使用 ...

  5. 利用Ant脚本生成war包的详细步骤

    使用ant脚本前的准备 1.下载一个ant安装包.如:apache-ant-1.8.4-bin.zip.解压到E盘. 2.配置环境变量.新增ANT_HOME:E:\apache-ant-1.8.4:P ...

  6. Missing message for key "err1" in bundle "(default bundle)" for locale zh_CN

    这个问题是: 你的使用了ApplicationResources_zh_CN.properties文件没有找到. 1.是struts-config.xml中的<message-resources ...

  7. OC基础--内存管理中的@property关键字以及其参数

    在上一篇博客中整理的内存管理,管理类的代码量会感觉很大,而且如果对象多的话,感觉到代码有点冗余.下面就介绍Xcode中为我们自动生成内存管理代码的关键字@property 例如:在Person这个类中 ...

  8. 【BZOJ-1984】月下“毛景树” 树链剖分

    1984: 月下“毛景树” Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 1314  Solved: 416[Submit][Status][Discu ...

  9. 使用U盘安装mint

    系统坏了,重新装的时候,硬盘甚至都没法格式化...所以,狠狠心买了块固态硬盘,123G,威刚. 想自己装Linux系统,这样用起来更方便一点,不用装虚拟机,然后再跑linux什么的.最后选了mint. ...

  10. Ext comboBox的remote和local的区别

    remote模式下不能使用模糊查询的功能 而local模式下可以实现模糊查询的功能 如果非要实现模糊查询的功能,最好就是提前把数据查询出来,缓存到本地,然后再用local模式 且,改个属性,改成可编辑 ...