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. app:发布新版本的具体步骤

    1

  2. 20145208 实验三 Java面向对象程序设计

    20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  3. 零散知识记录-一个MQ问题

    [背景]我有一项零散工作:维护大部门的一台测试公用MQ服务器.当大部分MQ被建立起来,编写了维护手册,大家都按照规程来后,就基本上没有再动过它了.周五有同学跟我反映登录不进去了,周日花了1个小时来解决 ...

  4. memset的使用

    今天写程序的时候用了memset这个函数,我知道他是关于清空指针的,设置为0.但我用的时候,没有注意到他是以字节为单位进行操作的,改了半天其他程序内容.要注意的是,memset是对字字进行操作,所以以 ...

  5. 由外边距合并到BFC

    置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<JavaScript实现Ajax小结> 作者主页:myvin 博主QQ:851399101(点击QQ和 ...

  6. #Linux学习笔记# Linux文件的所有者、群组和其他人

    1.关于所有者.群组和其他人 在Linux系统中,每个文件都具有User.Group和Others三种身份的权限配置.那这三种身份分别表示什么意思呢?配置这三种身份的权限有啥意义呢? (1)文件所有者 ...

  7. FileStream大文件复制

    FileStream缓冲读取和写入可以提高性能.FileStream读取文件的时候,是先讲流放入内存,经Flash()方法后将内存中(缓冲中)的数据写入文件.如果文件非常大,势必消耗性能.特封装在Fi ...

  8. nginx web加密访问

    有时我们会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开, 我们希望的是某些特定的客户端可以访问.那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那 ...

  9. onclik的使用.

    //好笨啊,这个居然忘记了,在行间家onclick事件要加();,addEventListener只要使用函数名字就好了 <!doctype html> <html> < ...

  10. hdu4547 lca tarjan

    比较直接. #include<map> #include<queue> #include<stack> #include<cmath> #include ...