Nodejs 프런트엔드 템플릿 엔진 사용 튜토리얼

php中世界最好的语言
풀어 주다: 2018-05-21 13:50:04
원래의
1719명이 탐색했습니다.

이번에는 nodejs 프론트엔드 템플릿 엔진 swig 사용법 튜토리얼을 가져왔습니다. nodejs 프론트엔드 템플릿 엔진 swig 사용 시 주의사항 은 무엇인가요? 다음은 실제 사례입니다. 살펴보겠습니다.

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

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

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

프론트엔드 템플릿 엔진인 swig에 대해 알아봅시다.

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中文网其它相关文章!

推荐阅读:

php生成随机数字、字母或数字字母混合的字符串

php图片裁剪与缩略图使用实例讲解

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

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