> 웹 프론트엔드 > JS 튜토리얼 > nodejs 프런트엔드 템플릿 엔진 사용 방법

nodejs 프런트엔드 템플릿 엔진 사용 방법

php中世界最好的语言
풀어 주다: 2018-05-29 14:51:45
원래의
2763명이 탐색했습니다.

이번에는 nodejs 프론트엔드 템플릿 엔진 swig 사용법을 보여드리고, nodejs 프론트엔드 템플릿 엔진 swig 사용 시 주의사항은 무엇인지 살펴보겠습니다.

jade에 비해 저는 여전히 swig 프론트엔드 템플릿 엔진을 선호합니다. jade의 구문이 훨씬 더 간결하고 효율적이지만, 저에게 가장 큰 문제는 html처럼 보이지 않는다는 것입니다. . .

그래서 swig를 사용하기로 결정했습니다. 페이지 구조가 친숙해 보이고 사용하기가 훨씬 쉽습니다.

많은 친구들도 둘의 장점과 단점으로 고민하고 있습니다. 이는 사람마다 필요에 따라 다를 수 있습니다.

둘의 비교입니다.

http://vschart.com/compare/ swig-template-engine/vs/jade -template-engin

프론트엔드 템플릿 엔진에 대해 함께 배워볼까요

swig에 대한 간략한 소개swig는 JS 템플릿 엔진으로 다음과 같은 기능을 가지고 있습니다. 기능:

    대부분의 주류 브라우저를 지원합니다.
  1. 표현 호환성이 좋습니다.
  2. 객체 지향 템플릿 상속.
  3. 템플릿의 출력에 필터와 변환을 적용합니다.
  4. 루진에 따라 페이지가 렌더링될 수 있습니다.
  5. 페이지 재사용을 지원합니다.
  6. 동적 페이지를 지원합니다.
  7. 확장 가능하고 사용자 정의가 가능합니다.

1. swig 설치

npm install swig --save
로그인 후 복사

2. Express 프레임워크와 통합app.js

var express = require('express');
var swig = require('swig');
var path = require('path')
var app = express();
var port = process.env.PORT || 4000
//设置swig页面不缓存
swig.setDefaults({
 cache: false
})
app.set('view cache', false);
app.set('views','./views/pages/');
app.set('view engine','html');
app.engine('html', swig.renderFile);
app.listen(port);
console.log('server is started at http://localhost:'+port);
//index page
app.get('/',function(req, res){
 res.render('index',{
  title:'首页 ',
  content: 'hello swig'
 })
})
로그인 후 복사

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>{{ title }}</title>
</head>
<body>
 {{ content }}
</body>
</html>
로그인 후 복사

테스트 실행

node app.js
로그인 후 복사

브라우저에 입력하세요: http://localhost:4000 실행 효과는 다음과 같습니다

Browser running.png

3. 기본 사용법

1. 변수

{{ name }}
로그인 후 복사
주의할 점 여기에는 공백이 있어야 하므로 {{name}}이(가) 오류를 보고합니다

2. 속성

{{ student.name }}
로그인 후 복사

3. 템플릿 상속

Swig은 확장 및 블록을 사용하여 템플릿 상속을 구현합니다. layout.html

먼저 템플릿을 정의합니다

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>{% block title %}{% endblock %}</title>
 {% block head %}{% endblock %}
</head>
<body>
 {% block content %}{% endblock %}
</body>
</html>
로그인 후 복사

이 템플릿에서 우리는 세 개의 블록을 정의했습니다. 하위 템플릿은 이 세 개의 블록을 상속할 수 있습니다

그런 다음 이 템플릿을 상속하기 위해 index.html을 작성합니다

{% extends './layout.html' %}
{% block title %} index {% endblock %}
{% block content %}
 <p>
   <h1>hello swig</h1>
  <p>
{% endblock %}
로그인 후 복사

복사하지 않았습니다. {% block head here %}{% endblock %} 이 블록

은layout.html 템플릿 페이지에서 많은 블록을 정의할 수 있고 하위 페이지를 선택적으로 구현할 수 있음을 의미합니다.

4.include template

현재 위치에 대한 템플릿을 포함합니다. 이 템플릿은 현재 컨텍스트를 사용합니다

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>{% block title %}{% endblock %}</title>
 {% include "./includes/head.html" %}
 {% block head %}{% endblock %}
</head>
<body>
 {% include "./includes/header.html" %}
 {% block content %}{% endblock %}
</body>
</html>
로그인 후 복사

5.if판단

{ % if name === '郭靖' % }
 hello 靖哥哥
{ % endif % }
로그인 후 복사

6.if-else판단

{ % if name === '郭靖' % }
 hello 靖哥哥
{ % elseif name === '黄蓉' % }
 hello 蓉妹妹
{ % else % }
 hello 欧阳峰
{ % endif % }
로그인 후 복사

7 .for Loop

첫 번째 밤나무:

// arr = [1, 2, 3]
{ % for key, val in arr % }
 <p>{ { key } } -- { { val } }</p>
{ % endfor % }
로그인 후 복사

For 루프 내장 변수:

    loop.index: 현재 루프의 인덱스(1부터 시작)
  1. loop.index0: 루프의 인덱스 current loop (0에서 시작)
  2. loop.revindex: 끝에서 시작하는 현재 루프의 인덱스(1부터 시작)
  3. loop.revindex0: 끝에서 시작하는 현재 루프의 인덱스(시작) from 0)
  4. loop.key: 반복이 객체인 경우 현재 루프의 키입니다. 그렇지 않으면 loop.index
  5. loop.first와 동일합니다. 첫 번째 값인 경우 true를 반환합니다.
  6. loop.last: 마지막 값이면 true를 반환합니다.
  7. loop.cycle: 지정된 매개변수를 마침표로 사용하는 하나의 도우미 함수
  8. 사용법:
// arr = [1, 2, 3]
{ % for key, val in arr % }
 <p>{{ loop.index }} -- {{ key }} -- {{ val }}</p>
{ % endfor % }
로그인 후 복사

8. 필터에

  1. add(value):使变量与value相加,可以转换为数值字符串会自动转换为数值。

  2. addslashes:用 \ 转义字符串

  3. capitalize:大写首字母

  4. date(format[, tzOffset]):转换日期为指定格式

  5. format:格式

  6. tzOffset:时区

  7. default(value):默认值(如果变量为undefined,null,false)

  8. escape([type]):转义字符

  9. 默认: &, <, >, ", '

  10. js: &, <, >, ", ', =, -, ;

  11. first:返回数组第一个值

  12. join(glue):同[].join

  13. json_encode([indent]):类似JSON.stringify, indent为缩进空格数

  14. last:返回数组最后一个值

  15. length:返回变量的length,如果是object,返回key的数量

  16. lower:同''.toLowerCase()

  17. raw:指定输入不会被转义

  18. replace(search, replace[, flags]):同''.replace

  19. reverse:翻转数组

  20. striptags:去除html/xml标签

  21. title:大写首字母

  22. uniq:数组去重

  23. upper:同''.toUpperCase

  24. url_encode:同encodeURIComponent

  25. url_decode:同decodeURIComponemt

使用方法:

例如我们要格式化一个时间,使用方法和linux上的管道命令非常像

{{ birthday|date('Y-m-d') }}
로그인 후 복사

大写首字母

{{ name|title }}
로그인 후 복사

9.set命令

用来设置一个变量,在当前上下文中复用

{% set foo = [0, 1, 2, 3, 4, 5] %}
 {% for num in foo %}
 <li>{{ num }}</li>
{% endfor %}
로그인 후 복사

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

vue-cli与webpack处理静态资源的方法及webpack打包使用步奏详解

JavaScript常用截取字符串方法使用汇总

위 내용은 nodejs 프런트엔드 템플릿 엔진 사용 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿