nodejs express template (모드) 사용 (ejs + express)

9623 단어 template
원본 주소
                                                                                                 

var express = require("express")

var app = express();



//  ejs   html 。    ,     .ejs       ,        // .html 

app.engine('.html', require('ejs').__express);

//             .html,     res.Render("xx.html")   

app.set('view engine', 'html');

//         ,__dirname     ,       

app.set('views', __dirname + '/views');



app.use(express.static(__dirname + '/public'));



var users = [

    {name: 'tobi', email: '[email protected]'},

    {name: 'loki', email: '[email protected]'},

    {name: 'jane', email: '[email protected]'}

];





app.get('/', function(req, res) {

    //         ,          ,    

    res.render('users', {

        users: users,

        title: "EJS example",

        header: "Some users"

    });

});



if (!module.parent) {

    app.listen(3000);

    console.log('Express app started on port 3000');

}

 



//user.html

<% include header.html %>



<h1>Users</h1>

<ul id="users">

    <% users.forEach(function(user){ %>

    <li><%= user.name %> <<%= user.email %>></li>

    <% }) %>

</ul>

<hr/>

<script>

    avalon.define("test", function(vm){

        vm.users = <%- JSON.stringify(users) %>

    })

</script>

<ul ms-each-el="users" ms-controller="test">

       <li>{{el.name}} <{{el.email}}></li>

</ul>



<% include footer.html %>



//header.html

<!DOCTYPE html>

<html lang="en">

    <head>

        <meta charset="utf-8">

        <title> <%= title %> </title>

        <script src="avalon.js"></script>

            

        <style type="text/css">

            body {

                padding: 50px;

                font: 13px Helvetica, Arial, sans-serif;

            }

        </style>

    </head>

    <body>



//footer.html



</body>

</html>


1. 위 는 express 가 모델 을 사용 하 는 기본 적 인 예 이다.
app.set("view engine","ejs"); 이 문장 은 모형 엔진 을 ejs http://github.com/visionmedia/ejs 로 설정 합 니 다.
ejs 는 npm install ejs 를 통 해 설치 할 수 있 습 니 다.
2. app. get 에서.
res.render('users', { users: users, title: "EJS example", header: "Some users" }); 2 단계 가 실 행 됩 니 다.
  • . / views / index. ejs 파일 의 내용 을 읽 은 다음 title 변 수 를 EJS example 로 대체 합 니 다. 예 를 들 어 <% = title% > 는 EJS example 로 변 경 됩 니 다.되 돌아 오 는 내용 이 content 1
  • 이 라 고 가정 합 니 다.
  • 이어서. / views / layout. ejs 를 읽 고 그 중의 body 변 수 를 content 1 로 대체 합 니 다. 예 를 들 어 <% = body% > 는 content 1 의 내용 으로 변 합 니 다.

  • 3. 2 에서 기본 layot. ejs 를 사용 하지 않 으 려 면 스스로 지정 할 수 있 습 니 다.예 를 들 면:
    res.render("index",{"title":"test","layout":"main"});

    혹시
    res.render("index",{"title":"test","layout":"main.ejs"});

    4. layot 를 사용 하지 않 으 려 면 layot 를 false 로 설정 할 수 있 습 니 다. 예 를 들 어:
    res.render("index",{"layout":false});

    5. 모든 요청 을 따로 설정 하지 않 으 려 면.전역 설정 사용 가능:
    app.set("view options",{                                                                                          
    
                                                                                                                                                                                         
    
        "layout":false
    
                                                                                                                                                                                         
    
    });

    6. ejs 에서 기본 닫 기 표 시 는 <% 입 니 다. .. %>,우리 도 자신의 라벨 을 정의 할 수 있다.예 를 들 면:
    app.set("view options",{                                                                                  
    
       "open":"{{",                                                                                  
    
       "close":"}}"
    
    });

    7. 모든 모델 엔진 의 용법 은 공통점 과 차이 가 있 고 전체적인 사용 방법 은 위 와 같다.
    다음은 현재 자주 사용 되 는 모델 엔진 입 니 다.
    Template Engines
    Below are a few template engines commonly used with Express:
  • Haml haml implementation
  • Jade haml.js successor
  • EJS Embedded JavaScript
  • CoffeeKup CoffeeScript based templating
  • jQuery Templates for node

  • 8. 웹 애플 리 케 이 션 에서 특정한 내용 을 반복 적 으로 표시 해 야 합 니 다. 예 를 들 어 사용자 댓 글 기능 은 모든 사용자 의 댓 글 을 반복 적 으로 표시 해 야 합 니 다. 이 럴 때 저 희 는 순환 을 통 해 이 루어 질 수 있 습 니 다.그러나 [부분 모드] (parial) 를 사용 하여 실현 할 수 있 습 니 다.예 를 들 면:
  • 우선 우 리 는 부분 적 인 모델 을 만 듭 니 다. / views / comment. ejs:
    <div class="comment_item">                                                                
    
        <div class="comment_user"><%=comment.user%></div> :                                                                
    
        <div class="comment_content"><%=comment.content%></div>                                                                
    
    </div>
    주의: 여 기 는 comment. xxxx
  • 입 니 다.
  • 그리고... / views / index. ejs 에서 partial 을 통 해 comment
    this is <%=title%>!                                                          
    
    <br/>                                                          
    
    <%- partial("comment",comments)%>
    를 호출 합 니 다. 주의: 여 기 는 partial ("comment. ejs", comments) 입 니 다. < --단 어 는 복수 로 해 야 한다.
  • 마지막 으로 router 에서 index. ejs 를 호출 합 니 다.
    var app=require("express").createServer();                                                  
    
                                                                                                         
    
    app.set("view engine","ejs");                                                  
    
                                                                                                         
    
    app.get("/",function(req,res){                                                  
    
        res.render("index",{"title":"test","layout":false,"comments":[                                                  
    
            {"user":"gainover","content":"test1"},                                                  
    
            {"user":"zongzi","content":"test2"},                                                  
    
            {"user":"maomao","content":"test3"}                                                  
    
        ]});                                                  
    
    });                                                  
    
                                                                                                         
    
    app.listen(3000);
    주의: 코드 에 있 는 comments 와 index. ejs 의 comments 변수 이름 이 일치 하고, partial 이 호출 한 comment. ejs 에 서 는 comment 의 단수 형식 을 사용 합 니 다.
  • 소스 코드 보기: 효과 도 는 다음 과 같 습 니 다. 목록 에 표 시 될 때 우리 가 흔히 볼 수 있 는 장면 은 첫 번 째 요소 나 마지막 요 소 를 특수 하 게 표시 하 는 것 입 니 다.partial 에서 우 리 는 express 에 내 장 된 변 수 를 통 해 현재 대상 이 첫 번 째 요소 나 마지막 요소 인지 판단 할 수 있 습 니 다. 예 를 들 어
    <div class="comment_item<%if(firstInCollection){%> firtitem <%}%>">                               
    
        <div class="comment_user"><%=comment.user%></div> :                               
    
        <div class="comment_content"><%=comment.content%></div>                               
    
    </div>
    이렇게 첫 번 째 댓 글 의 class 에 firstiem 이 하나 더 있 습 니 다.유사 한 내 장 된 변 수 는 다음 과 같 습 니 다. first InCollection 이 배열 의 첫 번 째 요소 라면 trueindexInCollection 현재 요소 가 배열 에 있 는 색인 lastInCollection 이 배열 의 마지막 요소 라면 truecollection Length 배열 의 길이 입 니 다. 
  • 마지막 으로 partial 이 모드 를 호출 할 때의 경로 에서 문 제 를 찾 습 니 다. partial ("edit") 은 같은 디 렉 터 리 에 있 는 edit. ejb 파일 을 찾 습 니 다.partial ("... / message") 은 이전 디 렉 터 리 의 message. ejs 파일 을 찾 습 니 다.partial (users) 은 users. ejs 파일 을 찾 습 니 다. users. ejs 가 존재 하지 않 으 면 / users / index. ejs 파일 을 찾 습 니 다. 

  • <% = users% > 는 내용 을 전의 합 니 다. 의 미 를 바 꾸 고 싶 지 않 으 면 <% - users% > 를 사용 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기