node结合swig渲染摸板的方法


Posted in Javascript onApril 11, 2018

在这里就nodejs如何应用swig摸板,总结一下一些基本的用法。

首先当然是利用express框架在node后台上面搭建服务

var express = require('express');
var server = express();

server.listen(8080,'localhost',(req,res)=>{
   console.log('服务器启动...');
})

启动成功之后,开始设置swig摸板的相关配置,具体代码如下:

npm install swig -s

安装成功之后,加上swig配置,代码如下:

//配置摸板引擎
var swig = require('swig');
//参数1,摸板引擎的名称,固定字段
//参数2,摸板引擎的方法
server.engine('html',swig.renderFile);
//摸板引擎存放目录的关键字,固定字段
//实际存在的目录,html文件就在html文件夹下面
server.set('views',__dirname+'/html');
//注册摸板引擎,固定字段
server.set('view engine','html');
//关闭swig缓存,缓存的目的也是提高node服务器的响应速度
swig.setDefaults({cache:false});

配置需要渲染的数据:

server.get('/',(req,res)=>{
  //render方法只有在使用摸板引擎之后才会生效,其中 参数1是需要渲染的摸板名称,参数2就是需要渲染到页面的一些参数
  res.render('temp',{
    name:'张三',
    user:{
      name:'栗子',
      age:18
    },
    lists:['item1','item2','item3','item4','item5',
    'item6','item7','item8','item9','item10','item11','item12',
    'item13','item14','item15','item16','item17','item18','item19',
    'item20','item21','item22','item23','item24','item25','item26']
  });
})

html文件的具体代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div>摸板引擎</div>
  <!-- {{}} 插值表达式-->
  姓名:<p>{{name}}</p>
  {% if user.name == '栗子' && user.age == '18'%}
  姓名:<p>栗子</p>
  {% elseif user.name == '张三'%}
  <p>张三</p>
  {% endif %}
  <p>遍历数组</p>
  {% for items in lists%}
  <li>items</li>
  {% endfor %}
  
   <!-- 页面上面设置数据 -->
  {% set arr = [1,2,3,4,5]%}
  <p>{{arr.length}}</p>
  <!-- 如何引入页面-->
  {% include './common.html' %}
</body>
</html>

具体页面显示如下:

node结合swig渲染摸板的方法

上面讲的是使用swig摸板引擎如何传递参数到页面渲染,下面来看看如何使用swig提取html公共的部分:

html页面公共的部分,比如说header,公共的js css文件,导航栏等

设置一个公共的页面:

<header>
  <title>node</title>
  <!-- css占位符主要用来显示其他页面的个性化的css文件,例如home.css about.css -->
  {% block css%}
  {% endblock %}
  <link rel="stylesheet" href="/static/css/layout.css" rel="external nofollow" >
</header>
<!-- 所以页面公共的导航栏 -->
<nav>
  <li><a href="">首页</a></li>
  <li><a href="">关于我们</a></li>
  <li><a href="">商品列表</a></li>
  <li><a href="">登录</a></li>
  <li><a href="">注册</a></li>
</nav>
 <!-- content占位符主要用来显示其他页面的个性化的内容显示,不同的页面有不同的显示方式 -->
{% block content%}
{% endblock %}
 <!-- js占位符主要用来显示其他页面的个性化的js文件,例如home.js about.js -->
{% block js%}
{% endblock %}
<script src="/static/js/layout.js"></script>

home.html

<!-- 继承所有页面公共的页面模块layout.html -->
{% extends './layout.html'%}
{% block css %}
<link rel="stylesheet" href="/static/css/home.css" rel="external nofollow" >
{% endblock %}
{% block content %}
 <li><a href="">1</a></li>
 <li><a href="">2</a></li>
 <li><a href="">3</a></li>
 <li><a href="">4</a></li>
 <li><a href="">5</a></li>
 <li><a href="">6</a></li>
{% endblock %}

{% block js %}
<script src="/static/js/home.js"></script>
{% endblock %}

当启动node服务器,渲染home页面的时候,你会看到

server.get('/',(req,res)=>{
  res.render('www/home',{});
})

node结合swig渲染摸板的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery ajax 用户无刷新登录方法详解
Apr 28 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
js正文内容高亮效果的实现方法
Jun 30 Javascript
JS清除选择内容的方法
Jan 29 Javascript
js兼容火狐获取图片宽和高的方法
May 21 Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
Jan 04 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
Aug 18 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
微信小程序实现换肤功能
Mar 14 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
Vue+TypeScript中处理computed方式
Apr 02 Vue.js
详解react、redux、react-redux之间的关系
Apr 11 #Javascript
Mac下安装vue
Apr 11 #Javascript
vue-cli 组件的导入与使用教程详解
Apr 11 #Javascript
手动用webpack搭建第一个ReactApp的示例
Apr 11 #Javascript
浅谈vue-cli 3.0.x 初体验
Apr 11 #Javascript
vue 组件高级用法实例详解
Apr 11 #Javascript
vue单个组件实现无限层级多选菜单功能
Apr 10 #Javascript
You might like
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
php生成文件
2007/01/15 PHP
五个PHP程序员工具
2008/05/26 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
vue.js的安装方法
2017/05/12 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python实现的一个火车票转让信息采集器
2014/07/09 Python
Python使用MONGODB入门实例
2015/05/11 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
django修改models重建数据库的操作
2020/03/31 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
《商鞅南门立木》教学反思
2014/02/16 职场文书
教学质量评估实施方案
2014/03/17 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
教师节主持词开场白
2015/05/29 职场文书
辩护意见书
2015/06/04 职场文书