利用 NodeJS 实现静态服务器
一、什么是服务器
- 服务器,也称伺服器,是提供计算服务的设备,由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力
- 常见的HTTP服务器软件:Apache、Nginx、IIS
- node服务器:如果我们使用PHP来写后端的代码时,需要Apache或者Nginx的HTTP服务器来处理客户端的请求响应。不过对Node.js来说,概念完全不一样了。使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器。
二、用node编写http服务器
1、引入http模块
var http = require(“http”);
2、创建服务器
接下来我们使用 http.createServer()方法创建服务器,并使用 listen 方法绑定8888 端口 。 函数通过 request , response参数来接收和响应数据
/*
req(request):返回url信息
res(response):浏览器返回相应信息
*/
http.createServer(function(req,res){
/*
* 如果状态是200,文件类型是html,字符集是utf-8
* */
res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
res.write("http://localhost:8888");
res.end();}).listen(8888);
//实例
var http=require("http");
http.createServer(function(req,res){
res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
res.write("首页");
res.end();
}).listen(8888);
三、Express框架的应用
1、介绍:Express是一个简洁而灵活的node.js Web应用框架,提供一系列强大特性帮助你创建各种Web应用
2、安装:npm install —save express
如果网速慢可以使用淘宝镜像
$ npm install -g cnpm —registry=https://registry.npm.taobao.org
npm install //安装依赖
3、创建HTTP服务器
问题:每次更改程序都要重新启动服务器
解决:使用nodejs自启动工具 supervisor
a、首先安装supervisor
npm install -g supervisor
b、使用 supervisor 替代 node命令启动应用
supervisor app.js
//引入express
var express=require("express");
var ejs = require('ejs');
//实例化
var app=new express();
var host="localhost";
var port=8888;
//设置view层的目录
app.set("views",__dirname+"/pages");
//配置ejs模板扩展名
app.engine("html",ejs.__express);
/*配置ejs模板引擎*/
app.set("view engine","html");
四、ejs的使用和静态资源托管
1、安装ejs:npm install —save ejs
//配置静态资源库
app.use("/",express.static("static"));
app.get("/",function (req,res) {
res.render("index");});
//在控制台打印信息
console.log("http://"+host+":"+port);
//监听
app.listen(port,host);
五、Express中间插件
1、介绍:Express 是一个自身功能极简,完全是由路由和中间件构成一个的 web 开发框架:从 本质上来说,一个 Express 应用就是在调用各种中间件。
2、中间件的功能包括 :
a、执行任何代码。
b、修改请求和响应对象。
c、终结请求-响应循环。
d 、调用堆栈中的下一个中间件。
3、Express 中间件有以下几种:
a、应用级中间件
app.use(function (req,res,next) {//可以匹配任何路由
next();//继续往下执行
});
//首页
app.get("/",function (req,res) {
res.render("index/index");
});
b、路由级中间件
app.get("/",function (req,res,next) {
console.log(11);
next();
});
c、错误处理中间件
app.use(function (req,res,next) {
res.status(404).render('404',{});
});
d、内置中间件
app.use("/",express.static("static"));
e、第三方中间件
//安装中间件
npm install body-parser –save
//设置中间件
var bodyParser = require('body-parser')
//支持request 中 body的 urlencoded字符,
extended为false的时候,键值对中的值就为'String'或'Array'形式,
为true的时候,则可为任何数据类型。
app.use(bodyParser.urlencoded({ extended: false }))
//返回一个只解析json的中间件
app.use(bodyParser.json())
最后用req.body 获取数据
六、get 、 post请求
1、GET 请求的参数在 URL 中,在 Express 中,可以直接使用 req.query 对象。
2、POST 请求在 express 中不能直接获得,可以使用 body-parser 模块。使用后,将可以用 req.body 得到参数。
3、All 可以请求get和post
4、get请求接收参数: req.query.id
5、post请求接收参数
a、安装body-parser
npm install –save body-parser
b、引用body-parser
var bodyParser=require(“body-parser”);
c、设置body-parser
//设置body模式为x-www-form-urlencoded模式
//当extended为false的时候,键值对中的值就为’String’或’Array’形式,为true的时候,则可为任何数据类型。为了安全性最好extended=false
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());//设置成json格式
d、req.body.username接收
七、ejs模板引擎
常用标签:
<%%>:流程控制标签
<%=%> :输出标签(原文输出HTML标签)
<%-%> :输出标签(HTML会被浏览器解析)
示例:
<ul>
<% for(var i = 0 ; i < news.length ; i++){ %>
<li><%= news[i] %></li>
<% } %>
</ul>
<%if type==1 %>
vip会员
<%else if type==0%>
普通会员
<%/if%>
还没有评论,来说两句吧...