Node.js初学第一天

Node.Js三大特性:单线程、非阻塞I/O、事件驱动

一、创建第一个HelloWorld

1、正常下载安装Node.js包;

2、cmd命令,进入node.js安装程序所在目录:cd:C:Program Files odejs;

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 odedemo1_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、事件驱动

原文地址:https://www.cnblogs.com/czqbk/p/5726712.html