简单、强大的swig.js
来源:互联网 发布:java并发框架支持锁 编辑:程序博客网 时间:2024/05/20 16:09
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 jsGlobalConfig.requireScripts.push('...');requirejs(GlobalConfig.requireScripts, function () { // todo}
Others
Super Quick Start:
Swig.js docs
1 0
- 简单、强大的swig.js
- 简单而强大的swig.js
- EdoJS,简单、强大的JS框架!
- 简单强大的javascript表单验证 - Parsley.js
- swig简单应用实战
- JS是一门很强大的语言
- 强大的JS版分页
- 强大的js事件委托
- linux 简单强大的命令
- javascript常用开发笔记:一个简单强大的js日期格式化方法
- hexo —— 简单、快速、强大的Node.js静态博客框架
- octave的swig进展
- 语言的黏合剂-SWIG
- swig+python的用法
- swig+python的用法
- swig android的使用
- swig的相关命令
- swig的安装
- Yii2创建控制器(createController)
- uva 340
- 怎样选购照片打印机
- CentOS6.5编译内核步骤
- [jms那点事儿] JMS ( java message service )入门 + activemq消息持久化
- 简单、强大的swig.js
- 第4题
- java servlet----模拟一个简单的tomcat服务器
- 把i come from tianjin.到转成tianjin. from come i
- 希尔加密算法(湖南师范大学第六届大学生计算机程序设计竞赛)hnuoj11552
- Halcon 学习总结——邮票目录检测(stamp_catalogue)
- Java虚拟机ClassLoader知识详解(1)
- Asp.net--数据绑定控件ListView
- Python基础:19类和实例的内建函数