Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。
Node.js底层用C++实现的,大部分模块都使用JavaScript编写,含大量的内置模块,使得程序可以脱离Apache、Nginx、IIS等web服务器,作为独立的服务器运行;
node.js优点
node.js 和 Java比较
快速搭建node原生服务器
var http=require("http"); //引用http模板
var server = http.createServer(function(req,res){
//request:请求对象 response:响应请求
response.setHeader("content-type","text/html;charset=utf-8")
res.end("hello world");
});
//指定服务器运行的端口
server.listen(3000,function(err){
if(!err){
console.log("服务器启动成功") }else{
console.log(err); }
});
运行后在浏览器中输入http://localhost:3000 回车 -->则会弹出hello word字样
模块引用 如 var http=require("http");
3.1.1让Web服务器响应和处理不同路径
var http = require('http'); //require 引用内置模块http
var url = require('url'); //require 引用内置模块url
http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'text/plain'}); //设置头信息
var pathname = url.parse(req.url).pathname; //把请求网址交给url 对象处理
var bodyStr =""; //定义一个变量,用来存储要输出的内容
if(pathname==="/"){
//如果是首页
bodyStr = 'Hello World\n';
}else{
bodyStr = req.url; //如果是其他路径
}
res.end(bodyStr); //输出内容
}).listen(9527, '127.0.0.1'); //绑定IP 和端口
console.log('Server running at http://127.0.0.1:9527/'); //控制台输出提示
启动这个范例的服务,然后在浏览器中输入localhost:9527和localhost:9527/other可以看到期望的效果。
再改变一下业务需求,首页显示不变,增加一个/about关于页面,显示一些联系信息,其他页面就提示404 not found。随着请求路径的增长,用if判断的方式对代码组织很不友好,下面改用对象来尝试一下
3.1.2可配置的路径
var http = require('http'); //require 引用内置模块http
var url = require('url'); //require 引用内置模块url
var webPath = {
//许可的路径
"/":"Hello World\n",
"/about":"ID:z3f\nQQ:10590916"
}
http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'text/plain'}); //设置文件头信息
var pathname = url.parse(req.url).pathname; //把请求网址交给url 对象处理
//如果访问路径没有被webPath 指定就是Not found
var bodyStr = webPath[pathname] || "Not found! \n"+req.url+" was not found on this server.";
res.end(bodyStr); //输出内容
}).listen(9527, '127.0.0.1'); //绑定IP 和端口
console.log('Server running at http://127.0.0.1:9527/'); //控制台输出提示
运行代码之后,通过图中会发现之前请求的/other路径现在提示Not found,这是因为我们没有把它放到许可列表中。
将404错误页面放在子目录server下,这样分离的好处是,如果只改变404.html文件的提示内容,那么服务器不用做任何改动,甚至重启都不用, 便利很多,减少了维护成本。
如下图所示,该404设计,在错误提示页面显示了一些公 益信息。
var msgOf404 = require('./22-5.json')
var http = require('http'); //require 引用内置模块http
var url = require('url'); //require 引用内置模块url
var fs = require('fs'); //require 引用内置模块fs
var webPath = {
//许可的路径
"/":"Hello World\n",
"/about":"ID:z3f\nQQ:10590916"
}
var on200 = function(req, res, bodyStr){
res.writeHead(200, {
'Content-Type': 'text/plain'}); //设置文件头信息
res.end(bodyStr); //对客户端输出内容后结束
}
var on404 = function(req, res){
fs.readFile("server/404.html", "utf-8", function (err, file) {
//用内置fs 对象读取文件
res.writeHead(404, {
'Content-Type': 'text/html'}); //设置文件头信息
res