Node.js教程 简单、强大的swig.js
沉沙 2018-10-19 来源 : 阅读 1282 评论 0

摘要:本篇教程介绍了Node.js教程 简单、强大的swig.js,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

本篇教程介绍了Node.js教程 简单、强大的swig.js,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

<

Swig.js

A simple, powerful, and extendable JavaScript Template Engine。

简单概括:JS模板引擎。



Why to use


根据路劲渲染页面
面向对象的模板继承,页面更复用
动态页面
快速上手
功能强大
Others




How to use

参见swig.js官网



项目实例



页面复用

大部分页面都有header 和 footer区域,可以通过继承页面实现复用,具体如下: 
layout.html



<html>
<head>
</head>
<body>
  <div class="header-container">
  ...
  </div>

  {% block content %}{% endblock %}

  <div class="footer-container">
  ...
  </div>
</body>
</html>

welcome.html



// 依据实际目录填写
{% extends ‘../layout.html‘ %}
{% block content %}
<div class="content-container">
  <h1>hello swig.js</h1>
</div>
{% endblock %}



信息、功能函数配置化

企业信息、所有权、工商注册号等信息,可将这些信息存在在system-params.json中,还可以添加实时计算函数,然后通过swig.js显示和调用: 
system-params.json:



{
  "isDevMode": "true",
  "corporation": "CCCCCCCC",
  "ICPNumber": "沪ICP备xxxxxxxx号",
  ...
}

app.js



var systemParams = require(‘./config/system-params.json‘),
    swig = require(‘swig‘);
swig.setDefaults({
  cache: !systemParams.isDevMode,
  locals: {
    now: function () {
      return new Date();
    },
    systemParams: systemParams
  }
});

layout.html



<html>
...
<body>
  {% block content %}{% endblock %}

  <div class="footer-container">
    <p class="text-center">
      <span>Copyright ? {{now() | date(‘Y‘)}}</span>
      <span>{{systemParams.corporation}}</span>
      <span>{{systemParams.ICPNumber}}</span>
    </p>
  </div>
</body>
</html>



Express.js 和 Require.js整合

在Express.js中通过swig.js路劲渲染页面,页面中使用require.js的require(deps, callback)形式加载页面需要的js: 
app.js

app.engine(‘html‘, swig.renderFile);
app.set(‘view engine‘, ‘html‘);
app.set(‘views‘, __dirname + ‘/views‘);

routers.js

module.exports = [{
  path: ‘/‘,
  view: ‘default/welcome‘,
  data: {
    title: ‘welcome‘,
    requireScripts: [
      ‘controllers/default/welcome-controller‘
    ],
    styles: [
      ‘default/welcome.css‘
    ]
  }
}];

config-routers.js

var routers = require(‘./routers‘);
...
for ... {
  ...

  router.get(routers[i].path, function(req, res) {
    res.render(routers[i].view, routers[i].data, routers[i].callback);
  });
}

layout.html



<html>
<head>
  ...

  {% if styles %}
    {% for style in styles %}
      <link rel="stylesheet" href="{{style}}" />
    {% endfor %}
  {% endif %}

  ...
</head>
<body>
  ...

  <script type="text/javascript">
    var GlobalConfig = {
      requireScripts: []
    };

    // add require scripts by page config
    {% if requireScripts %}
      {% for script in requireScripts %}
      GlobalConfig.requireScripts.push(‘{{ script }}‘);
      {% endfor %}
    {% endif %}
  </script>

  <script src="/lib/require/require.js"></script>
  <!-- require.js配置信息 -->
  <script src="/main.js"></script>
  <!-- require(deps, callback)加载页面依赖js -->
  <script src="/bootstrap.js"></script>
</body>
</html>

bootstrap.js

// add others js
GlobalConfig.requireScripts.push(‘...‘);

requirejs(GlobalConfig.requireScripts, function () {
  // todo
}



Others

Super Quick Start: 
Swig.js docs
        
            $(function () {
                $(‘pre.prettyprint code‘).each(function () {
                    var lines = $(this).text().split(‘\n‘).length;
                    var $numbering = $(‘<ul/>‘).addClass(‘pre-numbering‘).hide();
                    $(this).addClass(‘has-numbering‘).parent().append($numbering);
                    for (i = 1; i <= lines; i++) {
                        $numbering.append($(‘<li/>‘).text(i));
                    };
                    $numbering.fadeIn(1700);
                });
            });
   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程