Express-node.js 프레임워크 학습 노트

6228 단어

지식:


(1) 라우팅
  • app.get 또는 app.post, 방문
  • var express =  require("express");
    var app = express();
    app.get(' ',function(req,res) {
    res.send();
    res.render();
    })
    
     method , all
    app.all("/",function(){ 
    });
     , , , 
    app.get("/AAb",function(req,res){
     res.send(" ");
    });
     。
     GET ,?  。  # 
     /a ,  /a?id=2&sex=nan  。
    
  • 정규 표현식/^$/
  • /^\/student\/([\d]{6})$/      /student/ 6 
    
     。 , , req.params[0]、[1] 。
    
     。
    1   app.get("/student/:id",function(req,res){
    2       var id = req.params["id"];
    3       var reg= /^[\d]{6}$/;   //      \d 
    4       if(reg.test(id)){   // reg id, 6 
    5           res.send(" " + id);
    6       }else{
    7           res.send(" ");
    8       }
    9   });
    
  • req.params[0] req.body req.query req.param()
  •  url 
    /path/:id, req.params.id 
    /path?id=xx, req.query.id 
     json body  form  req.body 
    --
    --
    app.get(/^\/student\/([\d]{6})$/,function(req,res){
        res.send(" , " + req.params[0]);
    });  //   , xxxxxx
    
  • app.get("/teacher/:gonghao",function(req,res) { res.send(); })
  • app.get("/teacher/:gonghao",function(req,res) {
     res.send(" , " + req.params.gonghao);
    })    //   , xxxxx
    

    (2) 정적 파일 서비스
  • app.use(express.static("경로");//폴더만 있고 js, html, css
  • 는 안 됩니다.
  • app.use("/test",express.static("경로");//라우팅 추가
  • var express = require("express");
    var app = express();
    app.use("/test",express.static("./ "))   //  , js.html.css 
    app.listen(3002);  
    

    (3) 템플릿 엔진과의 조화
    (1)views 폴더에ejs 파일
  • ejs 템플릿//바깥부분은 직접 렌더링되고 안은 논리적입니다.
  • cnpminstallejs--save//ejs외부 플러그인 설치
  • xxxx.ejs :
    
    xxxx.js :
     : ejs 
    var express = require("express");
    var app = express();
    app.set("view engine", "ejs");   //app.set      //engine: 
    app.listen(3003);
    app.get('/', function(req, res) {   
        res.render("haha.ejs",{       //res.render
            news: [" "," "," "]
        });
    });
    
  • 예 2
  • 02.ejs :
    
    
        
        Title
    
    
    

    03.js :
    var express = require("express");
    var app = express();
    app.set("view engine","ejs");  // 
    app.get("/",function(req,res) {
        res.render("02.ejs");
    });  // 
    app.post("/",function(req,res) {
        // 
        res.send(" ");
    });  // 
    app.listen(3008);
    

    (2)views 폴더에 html 파일
    app.engine('.html',require('ejs').renderFile);
    app.set("view engine","html");
    
     :
    var express = require('express');
    var app = express();
    app.engine('.html',require('ejs').renderFile);
    app.set("view engine","html");
    app.set("views","test"); // views , test 
    app.get('/',function(req,res){
        res.render("index2.html");    // test index2.html
    });
    app.listen(3009);
    

    (4) 중간부품:
  • app.get () 의 실행 순서입니다. 같은 페이지로 갈 때 첫 번째 앱만 실행합니다.get
  • app.get("/",function(req,res,next) {console.log("1111111111");next();//next를 추가하면 아래의 같은 루트 주소의 app.get이 실행됩니다}
  • var express= require("express");
    var app = express();
    app.get('/',function(req,res) {
       console.log("1111111");
    });
    app.get('/',function(req,res) {
        console.log("222222");
    });
    app.listen(3000);                      // 11111111
    
    var express= require("express");
    var app = express();
    app.get('/',function(req,res,next) {
       console.log('1111111');
       next();
    });
    app.get('/',function(req,res) {
        console.log("2222222");
    });
    app.listen(3000);    // 1111111,2222222
    
  • app.use("/test"): 127.0.1:3000/test/1111/222/333
  • app.get("/test"): 127.0.1:3000/test
  • 까지만 일치
    (5)res.render () 컨텐트 렌더링
     res.render("xxx.html") views xxx.html。
     views , , app.set("views","aaaa");
    app.set("view engine","html");
    app.set("views"," ");
    // 
    
     :
    var express = require('express');
    var app = express();
    app.engine('.html',require('ejs').renderFile);
    app.set("view engine","html");
    app.set("views","public");
    app.get('/',function(req,res){
        res.render("index.html");
    });
    app.listen(3009);
    

    (6)get 요청
  • req.query 대상은 매개 변수 문자열을 식별하는 대상입니다
  • var express = require("express");
    var app = express();
    app.engine(".html",require("ejs").renderFile);
    app.set("view engine","html");
    app.set("views","test");
    
    app.get('/pp',function(req,res){  
        console.log(req.query);    
        // , , http://127.0.0.1:3000/pp/?name=123&age=22 { name: '123', age: '22' }
        res.render("test.html");
    });
    app.listen(3000);
    
    ● GET URL , Node , url 。
     Express , url 。 req.query 。
    
    ● POST express ,
     body-parser 。 , req.body 。
     , formidable 。
    

    (7)post 요청
  • req.body 대상은post가 제출한 문자열을 식별합니다
  • (1) body-parser   (parse )
    cnpm install body-parser
    (2)
    var express = require("express");
    var bodyParser = require("body-parser");
    var app = express();
    app.engine(".html",require("ejs").renderFile);
    app.set("view engine","html");
    app.get("/",function(req,res){
        res.render("post.html");
    });
    app.use(bodyParser.urlencoded({ extended: false }));
    app.post("/",function(req,res){
        console.log(req.body);
        res.send(" ");
    });
    app.listen(3000);
    

    좋은 웹페이지 즐겨찾기