让我们一起学习《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) 运行时的一个环境.不是一门语言. 以 ...
随机推荐
- Scala学习笔记(八):基本类型和操作
基本类型: 整数类型=>数类型 字面量:字面量就是直接写在代码里的常量值 字面量是指由字母.数字等构成的字符串或者数值,它只能作为右值出现,所谓右值是指等号右边的值,如:int a=123这里的 ...
- php模式设计之 工厂模式
承接上篇php模式设计之 单例模式,(虽然好像关系不大).今天讲述第二种基础的模式设计——工厂模式. 那么何为工厂模式? 从名字来看,似乎看不出什么端倪.工厂模式,和生产有关?还是和生产流程有关?难道 ...
- WDCP安装并配置php5.4和mongodb
记录一下,免得忘了.全部都是自己测试用过的安装过程没有问题. linux常用命令 mv 移动文件 mkdir 创建文件夹 rm 删除 cp 复制 netstat 网络状态 tar 解压 wget 下载 ...
- 第二章 Js函数
函数的定义二种定义 ①function myfunc () { console("hello"); }; ②var myfunc = function () { console ...
- C#基础知识系列五(构造函数)
前言 本节主要来学习下实例构造函数.私有构造函数和静态构造函数. 构造函数的作用: 1.当一个类在new实例化对象时,可调用构造函数进行初始化对象. 2.不带参数的构造函数称为“默认构造函数”. 无论 ...
- 每天一个linux命令(18):find 命令概览
Linux 下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所 以它的选项也很多,其中大部分选项都值得我们 ...
- 第十四章:Annotation(注释)
一:注解 1.当成是一种修饰符吧,修饰类及类的所有成员. 代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取. 2.@Override:强制子类覆盖(重写)父类的方法. @Deprecated ...
- JS子父窗口互相取值赋值详解介绍
子窗口赋值到父窗口 代码如下 复制代码 <script>function openWin(str) { window.open(siteurl+"popup/"+ ...
- eclipse快捷键的使用及概述
<eclipse快捷键的使用及概述> <Eclipse概述> Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服 ...
- Weblogic 启动报错:java.lang.NoClassDefFoundError
Weblogic 启动报错:java.lang.NoClassDefFoundError ####<2015-6-17 下午03时30分47秒 CST> <Error> &l ...