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 相关文章推荐
js中关于new Object时传参的一些细节分析
Mar 13 Javascript
ajax处理php返回json数据的实例代码
Jan 24 Javascript
JavaScript 判断浏览器是否支持SVG的代码
Mar 21 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
jquery.form.js用法之清空form的方法
Mar 07 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
Aug 19 Javascript
JS常用加密编码与算法实例总结
Dec 22 Javascript
使用vue制作FullPage页面滚动效果
Aug 21 Javascript
jQuery pjax 应用简单示例
Sep 20 jQuery
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 Javascript
vue实现购物车的监听
Apr 20 Javascript
全面解析JavaScript Module模式
Jul 24 Javascript
详解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
php二维数组转成字符串示例
2014/02/17 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
Python命名空间详解
2014/08/18 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
团支书的期末学习总结自我评价
2013/11/01 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
家长对孩子的感言
2014/03/10 职场文书
实验室的标语
2014/06/20 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
投诉信回复范文
2015/07/03 职场文书
聘任通知书
2015/09/21 职场文书
班级班风口号大全
2015/12/25 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB