Benjamin

静以修身,俭以养德,非澹薄无以明志,非宁静无以致远。
随笔 - 386, 文章 - 0, 评论 - 196, 引用 - 0
数据加载中……

nodejs的express模块(web框架)使用

安装cnpm:
npm config set registry https://registry.npm.taobao.org(永久使用)
npm --registry https://registry.npm.taobao.org install express(临时使用)
1、安装 Express
cnpm install express --save 安装Express并将其保存到依赖列表中
body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。
cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。
multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。
cnpm install body-parser --save
cnpm install cookie-parser --save
cnpm install multer --save
cnpm list express 安装完后,我们可以查看下 express 使用的版本号:
2、简单使用
//express_demo.js 文件
var express = require('express');
var app = express();
 
app.get('/', function (req, res) {
   res.send('Hello World');
})
 //var server = app.listen(3456, "127.0.0.1", function () {})指定ip,一般用的是127.0.0.1
var server = app.listen(8081, function () {
 
  var host = server.address().address
  var port = server.address().port
 
  console.log("应用实例,访问地址为 http://%s:%s", host, port)
 
})
在浏览器中访问 http://127.0.0.1:8081,会显示hello world
Request 对象 - request 对象表示 HTTP 请求,包含了请求查询字符串,参数,内容,HTTP 头部等属性
.获取客户ip地址:request.ip
.获取上传的文件:request.files
Response 对象 - response 对象表示 HTTP 响应,即在接收到请求时向客户端发送的 HTTP 响应数据
重定向redirect
    response.redirect("/hello/anime");//重定向到/hello/anime
.发送文件sendFile
   response.sendFile("/path/to/anime.mp4");
.渲染网页模板render,即把变换的内容加载到网页.
    response.render("index", { message: "Hello World" });//将message变量传入index模板,值为"Hello World"渲染成HTML网页
    
2、路由决定了由谁(指定脚本)去响应客户端请求。
//  /del_user 页面响应
app.get('/del_user', function (req, res) {
   console.log("/del_user 响应 DELETE 请求");
   res.send('删除页面');
})
// 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求
app.get('/ab*cd', function(req, res) {   
   console.log("/ab*cd GET 请求");
   res.send('正则匹配');
})
3、静态文件express.static 中间件来设置静态文件路径。例如,如果你将图片, CSS, JavaScript 文件放在 public 目录下,可以这么写:
app.use('/public', express.static('public'));
4、GET 、post方法:
index.html内容
<html>
<body>
<form action="http://127.0.0.1:8081/process_get" method="GET">
First Name: <input type="text" name="first_name">  <br>
 
Last Name: <input type="text" name="last_name">
<input type="submit" value="Submit">
</form>
</body>
</html>
server.js
ar express = require('express');
var app = express();
 
app.use('/public', express.static('public'));
 
app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})
 
app.get('/process_get', function (req, res) {
 
   // 输出 JSON 格式
   var response = {
       "first_name":req.query.first_name,
       "last_name":req.query.last_name
   };
   console.log(response);
   res.end(JSON.stringify(response));
})
 
var server = app.listen(8081, function () {
 
  var host = server.address().address
  var port = server.address().port
 
  console.log("应用实例,访问地址为 http://%s:%s", host, port)
 
})
5、上传文件
var express = require('express');
var app = express();
var fs = require("fs");
 
var bodyParser = require('body-parser');
var multer  = require('multer');
 
app.use('/public', express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/tmp/'}).array('image'));
 
app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})
app.post('/file_upload', function (req, res) {
 
   console.log(req.files[0]);  // 上传的文件信息
 
   var des_file = __dirname + "/" + req.files[0].originalname;
   fs.readFile( req.files[0].path, function (err, data) {
        fs.writeFile(des_file, data, function (err) {
         if( err ){
              console.log( err );
         }else{
               response = {
                   message:'File uploaded successfully', 
                   filename:req.files[0].originalname
              };
          }
          console.log( response );
          //中文编码处理
          res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
          res.end( JSON.stringify( response ) );
       });
   });
})
6、Cookie 管理
var cookieParser = require('cookie-parser')
var util = require('util');
 
var app = express()
app.use(cookieParser())
 
app.get('/', function(req, res) {
    console.log("Cookies: " + util.inspect(req.cookies));
})
7、添加 favicon.ico 
在  public/images 添加文件 favicon.ico 
打开 myapp 下的 app.js 在其中添加
var favicon = require('serve-favicon');
app.use(favicon(__dirname+'/public/images/favicon.ico'));
然后通过命令行安装 serve-favicon 
重启应用即可
8、中间件:处理HTTP请求的函数.
参数为:
.四个的时候---第一个为错误处理,第二个为客户请求request,第三个为服务器响应respond,第四个为next中间件. 如function(error, request, response, next){}
.三个的时候---第一个客户请求request,第二个为服务器响应respond,第三个为next中间件. 如function(request, response, next){}
.两个的时候---第一个客户请求request,第二个为服务器响应respondfunction. 如function(request, response){}
中间件use
app.use(express.bodyParser());//使用body参数
app.use(express.methodOverride());//使用函数覆盖
app.use(app.router);//使用路由
app.use(function(err, req, res, next){
 console.error(err.stack);
 res.send(500, 'Something broke!');
});//错误内容显示
9、动态网页模板views
res.render('index',{title:"最近文章"});
npm install -g express-generator
npm update -g express
express APP_NAME  //创建项目
express APP_NAME -e  //以ejs作为模板引擎创建项目
将ejs文件(EJS 是一套简单的模板语言,用普通的 JavaScript 代码生成 HTML 页面)改为html
var ejs = require('ejs');
app.engine('.html', ejs.__express);
app.set('view engine', 'html');  //app.set('view engine', 'ejs');
npm install;//在项目文件夹
每次修改代码后,需要手动重启服务,可以使用nodemon进行自动重启
npm install -g nodemon
将package.json文件中的代码修改为:
"start": "nodemon ./bin/www

posted on 2019-06-05 09:55 Benjamin 阅读(488) 评论(0)  编辑 收藏 引用 所属分类: 杂谈


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理