时间:2021-05-26
相对于jade,我还是更喜欢swig前端模板引擎,jade虽然语法简练高效了不少,但是在我这最大的问题是
他没有一个html该有的样子。。。
所以我还是决定使用swig,页面结构,样子都是熟悉的样子,使用起来顺手了许多。
很多朋友也在纠结二者的优缺点,这个根据需求因人而异吧
这是两者的比较
http://vschart.com/compare/swig-template-engine/vs/jade-template-engin
下面我们一起学习下swig这个前端模板引擎
swig的简单介绍
swig是JS模板引擎,它有如下特点:
一. swig的安装
npm install swig --save二.和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 pageapp.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, 执行效果如下
浏览器运行.png
三.基本用法
1.变量
{{ name }}这里需要注意的是前后两端都要有空格,这样{{name}}写就会报错
2.属性
{{ student.name }}3.模板继承
Swig 使用 extends 和 block 来实现模板继承 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>这个模板里面我们定义了三个block块,子模板可以对这三个block继承
然后我们写一个index.html继承这个模板
{% extends './layout.html' %}{% block title %} index {% endblock %}{% block content %} <div> <h1>hello swig</h1> <div>{% endblock %}注意我这里并没有复写{% block head %}{% endblock %}这个块
也就是说我们可以在layout.html模板页面里面定义很多block,而子页面可以有选择性的实现。
4.include模板
包含一个模板到当前位置,这个模板将使用当前上下文
<!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循环
先上栗子:
// arr = [1, 2, 3]{ % for key, val in arr % } <p>{ { key } } -- { { val } }</p>{ % endfor % }for循环内置变量:
使用方法:
// arr = [1, 2, 3]{ % for key, val in arr % } <p>{{ loop.index }} -- {{ key }} -- {{ val }}</p>{ % endfor % }8.强大的内置过滤器
使用方法:
例如我们要格式化一个时间,使用方法和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 %}参考文献:http://www.iqianduan.net/blog/how_to_use_swig
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文为大家分享了nodejs个人博客开发的载入页面,具体内容如下模板引擎使用ejs作为我们博客的前端模板引擎,用来从json数据生成html字符串安装:npmi
起步随着javascript的壮大,前端也要使用自己的模板引擎了。若变量使用{{包裹的形式,而{{又会被Django模板引擎解析。导致{{无法输出到前端,这个时
关于functmplfunctmpl是一个基于JavaScript/Nodejs的高扩展性的模板引擎模板格式如果想在一个模板中插入另一个模板,可以使用比如插入模
node.js中grunt和gulp的区别详解自nodeJS登上前端舞台,自动化构建变得越来越流行。目前最流行的当属grunt和gulp,这两个光看名字挺像,功
关于javascript前端开发之实现二进制读写操作的相关介绍,请看以下内容详解,本文介绍的非常详细,具有参考价值。由于种种原因,在浏览器中无法像nodejs那