标签:
Node.Js三大特性:单线程、非阻塞I/O、事件驱动
一、创建第一个HelloWorld
1、正常下载安装Node.js包;
2、cmd命令,进入node.js安装程序所在目录:cd:C:\Program Files\nodejs;
3、创建js文件01_helloworld.js,并书写代码:
var http=require("http");//引入http包
http.createServer(function(req,res){//创建服务
res.writeHead(200,{"ContentType":"text/html;charset:utf-8"});//写响应头,200表示请求成功
res.end("helloworld");
}).listen("4505","127.0.0.1")//监听服务
4、在cmd中输入命令node D:\NodeJS\nodedemo\01_helloworld.js
5、在浏览器中输入地址http://127.0.0.1:4505/
6、"helloworld"会呈现
注意:在js文件01_helloworld.js书写代码的时候,var前面不能有空格,否则会出现错误,并且会很难查出原因;
二、创建静态路由
1、在node安装程序下创建文件夹及静态页;
2、示例代码如下:
//require表示引包,引包就是引用自己的一个特殊功能
var http=require("http");
var fs=require("fs");
http.createServer(function(req,res){
if(req.url=="/index")
{
fs.readFile("./test/Web/index.html",function(err,data){
if(err)
{
console.log(err);
}
//req表示请求,request; res表示响应,response
//设置HTTP头部,状态码是200,文件类型是html,字符集是utf8
res.writeHead(200,{"ContentType":"text/html;charset=utf-8"});
res.end(data);
})
}else if(req.url=="/map")
{
fs.readFile("./test/Web/map.html",function(err,data){
if(err)
{
console.log(err);
}
res.writeHead(200,{"ContentType":"text/html;charset=utf-8"});
res.end(data);
})
}else{
res.writeHead(200,{"ContentType":"text/html;charset=utf-8"});
res.end("没有此页面");
}
}).listen("4050","127.0.0.1");//运行服务器,监听4050端口(端口号可以任改)
三、URL类
1、示例代码:
var http = require("http");
var url = require("url");
var server = http.createServer(function(req,res){
//url.parse()可以将一个完整的URL地址,分为很多部分:
//host、port、pathname、path、query
var pathname = url.parse(req.url).pathname;
//url.parse()如果第二个参数是true,那么就可以将所有的查询变为对象
//就可以直接打点得到这个参数
var query = url.parse(req.url,true).query;
//直接打点得到这个参数
var age = query.age;
console.log("pathname:" + pathname);
console.log("query:" + query);
console.log("age:" + age);
res.end();
});
server.listen(3000,"127.0.0.1");
四、文件夹操作
1、创建文件夹:
var http=require("http");
var fs=require("fs");
http.createServer(function(req,res){
if(req.url=="/favicon.ico")
{
return;
}
fs.mkdir("MM");//创建MM文件夹
}).listen("4050","127.0.0.1");
同理还有其它的函数:
//stat检测状态
fs.stat("./album/bbb",function(err,data){
//检测这个路径,是不是一个文件夹
console.log(data.isDirectory());
});
//读取文件夹内所有内容
fs.readdir("./test",function(err,files){});
五、path类:
1、引包:
var path=require("path");
2、函数:
var pathname=url.parse(req.url).pathname;
var extname=path.extname(pathname);//获取扩展名
3、示例代码(完成简单路由的功能示例):
var http = require("http");
var url = require("url");
var fs = require("fs");
var path = require("path");
http.createServer(function(req,res){
//得到用户的路径
var pathname = url.parse(req.url).pathname;
//默认首页
if(pathname == "/"){
pathname = "index.html";
}
//拓展名
var extname = path.extname(pathname);
//真的读取这个文件
fs.readFile("./static/" + pathname,function(err,data){
if(err){
//如果此文件不存在,就应该用404返回
fs.readFile("./static/404.html",function(err,data){
res.writeHead(404,{"Content-type":"text/html;charset=UTF8"});
res.end(data);
});
return;
};
//MIME类型,就是
//网页文件: text/html
//jpg文件 : image/jpg
var mime = getMime(extname);
res.writeHead(200,{"Content-type":mime});
res.end(data);
});
}).listen(3000,"127.0.0.1");
function getMime(extname){
switch(extname){
case ".html" :
return "text/html";
break;
case ".jpg" :
return "image/jpg";
break;
case ".css":
return "text/css";
break;
}
}
六、总结:
Node.Js三大特性:单线程、非阻塞I/O、事件驱动
标签:
原文地址:http://www.cnblogs.com/czqbk/p/5726712.html