hello world###

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World');
}).listen(3000); console.log('Server begin');

事件驱动编程###

Node的核心理念时事件驱动编程,即了解有哪些事件以及如何响应这些事件;前面例子中,HTTP请求就是要处理的事件,http.createServer方法将函数作为一个参数,描述如何响应这个事件

路由###

指向客户端提供它说发出的请求内容的机制;对基于web的客户端/服务端编程而言,就是客户端在URL中指明它想要的内容,具体来说就是路径和查询字符串

修改前面的例子

var http = require('http');

http.createServer(function (req, res) {
var path = req.url.replace(/\?(?:\?.*)?$/, '').toLowerCase();
console.log(path);
switch(path) {
case '/':
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Homepage');
break;
case '/about':
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('About');
break;
default:
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Not Found');
break;
} }).listen(3000);

静态资源服务###

静态资源:HTML和图片等这些内容不会变化的资源;用Node提供静态资源只适用于初期的小型项目,对于比较大的项目,你应该会想用Nginx或CDN之类的代理服务器来提供静态资源

使用Apache或IIS,只是创建一个HTML文件,访问它,然后让它自动发送到客户端。使用Node则必须打开文件,读取其中的内容,然后将这些内容发送给浏览器。

var http = require('http');
var fs = require('fs'); function serverStaticFile(res, path, contentType, responseCode) {
var responseCode = responseCode || 200;
fs.readFile(__dirname +'/' + path, function(err, data) {
console.log(err);
if(err) {
res.writeHead(500, {'Content-Type': 'text/plain'});
res.end('500 - Internal Error');
} else {
res.writeHead(responseCode, {'Content-Type': contentType});
res.end(data);
}
});
} http.createServer(function (req, res) {
var path = req.url.replace(/\?(?:\?.*)?$/, '').toLowerCase();
switch(path) {
case '/':
serverStaticFile(res, 'public/home.html', 'text/html');
break;
case '/about':
serverStaticFile(res, 'public/about.html', 'text/html');
break;
case '/logo.jpg':
console.log(0);
serverStaticFile(res, 'public/logo.jpg', 'image/jpg');
break;
default:
serverStaticFile(res, 'public/404.html', 'text/html', 404);
break;
}
}).listen(3000);
console.log('Server start');

fs.readFile是读取文件的异步方法。这个函数有同步版本,fs.readFileSync。它调用fs.readFile读取指定文件中的内容,fs.readFile读取完文件后执行回调函数,如果文件不存在,或者读取文件时遇到许可权限方面的问题,会设定err变量,并且会返回一个HTTP 500的状态码表明服务器错误。如果文件读取成功,文件会带着特定的响应码和内容类型发给客户端。

__dirname会被解析为正在执行的脚本所在的目录。

express-1 从Node开始的更多相关文章

  1. 使用express+multer实现node中的图片上传

    使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...

  2. 基于 Express 搭建一个node项目 - 起步

    一,如何基于 Express 搭建一个node项目 什么是Express 借用官方的介绍,Express是一个基于Node.js平台的极简.灵活的web应用开发框架,它提供了一系列强大的特性,帮助你创 ...

  3. 新建一个express工程,node app无反应

    1.问题描述 新建一个express工程,node app以后无反应,浏览器输入localhost:3000,显示如下 2.解决方法 在app.js文件中加入如下代码 app.listen(3000, ...

  4. Express 4.x Node.js的Web框架

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3821150.html ...

  5. Express 4.x Node.js的Web框架----《转载》

    本文使用node.js v0.10.28 + express 4.2.0 1 Express概述 Express 是一个简洁而灵活的node.js的MVC Web应用框架,提供一系列强大特性创建各种W ...

  6. windows系统下,express构建的node项目中,如何用debug控制调试日志

    debug是一款控制日志输出的库,可以在开发调试环境下打开日志输出,生产环境下关闭日志输出.这样比console.log方便多了,console.log只有注释掉才能不输出. debug库还可以根据d ...

  7. express脚手架重建node项目

    安装express 和express-generator cnpm install express express-generator -g express demo1 创建demo1项目, 进入项目 ...

  8. Node.js Express 路由文件分类

    前言 基于上一篇Web Api Controller分类,在MVC中我们通常要按自己的业务来划分Controller层, 好处多多,那么Express框架作为Node.js的一款MVC框架,那么自然也 ...

  9. Node 进阶:express 默认日志组件 morgan 从入门使用到源码剖析

    本文摘录自个人总结<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 章节概览 morgan是express默认的日志中间件, ...

  10. node.js入门及express.js框架

    node.js介绍 javascript原本只是用来处理前端,Node使得javascript编写服务端程序成为可能.于是前端开发者也可以借此轻松进入后端开发领域.Node是基于Google的V8引擎 ...

随机推荐

  1. tomcat URL乱码问题

    用get传参时,显示乱码 在tomcat里的server.xml中添加一下即可. <Connector port="8080" protocol="HTTP/1.1 ...

  2. Rsync+lsync实现触发式实时同步

    使用rsync+lsync实现触发式实时同步 服务器信息 centos6.5 主:192.168.5.4 搭建lsync 从:192.168.5.3 搭建rsync 1.1 从服务器设置 # yum ...

  3. 群内大神与你交流WEB经验 业内专家指点就职技巧

    就知道你是一个有理想要抱负的人,不会满足于做一个初级的前端开发工程师.在接下来的这个阶段,我们将走上前端开发的进阶之路,将自己的能力再往上拔高一个等级.同样,薪资也会往上升一个等级!但是,如果你是一个 ...

  4. jvm分析

    是什么 jps   查看所有的jvm进程,包括进程ID,进程启动的路径等等. jstack   观察jvm中当前所有线程的运行情况和线程当前状态. 系统崩溃了?如果java程序崩溃生成core文件,j ...

  5. EasyUI中控件汉化问题

    --BY ZYZ 我在使用EasyUI的过程中,遇到了控件无汉化的情况,如下图. 这么多洋文看着觉得挺烦的.时间居然是月日年格式的,这样可不行,得改. 重写控件代码?别,那能是我这种低级代码C-V客能 ...

  6. Struts2之OGNL

    一.OGNL是什么? OGNL(Object-Graph Navigation Language)对象图导航语言,是一种表达式语言,它可以 1.遍历对象的结构图 2.存取对象的属性(实例属性和静态属性 ...

  7. JQ AJAX

    用AJAX方法不刷新网页使用下拉列表连接数据库 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  8. CLR via C#学习笔记----知识总概括

    第1章 CLR的执行模型 托管模块的各个组成部分:PE32或PE32+头,CLR头,元数据,IL(中间语言)代码. 高级语言通常只公开了CLR的所有功能的一个子集.然而,IL汇编语言允许开发人员访问C ...

  9. java web开发环境配置

    一:安装jdk   http://www.java.com/zh_TW/ 二:下载tomcat,这里是zip版.http://tomcat.apache.org/download-70.cgi 三:在 ...

  10. 深入理解SELinux SEAndroid

    参考文章: 一. http://blog.csdn.net/innost/article/details/19299937 二. http://blog.csdn.net/innost/article ...