рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣реИрдмрд░ рдкрд░ рдХрд┐рд╕реА рдиреЗ рднреА рдЙрддреНрдХреГрд╖реНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╕реНрд╡рд┐рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдерд╛ред
рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреЗрдЬреА рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирдП рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЙрдкрдпреЛрдЧ рдкрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреНрд░рд╡реГрддреНрддрд┐ рдиреЗ рдореБрдЭреЗ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВрдиреЗ рдХреЗрд╡рд▓-рдлрд╝рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА, рддреЛ рдореИрдВ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдФрд░ рд╕рд░реНрд╡рд░ (JS.JS), рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ (Backbone.js) рдкрд░ JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рд╕рдм рдХреБрдЫ рдЧрдВрднреАрд░ рд╣реИ :) рдФрд░ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдлреЛрдирдЧреИрдк) рдореЗрдВред рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рдЪрд░рдг рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдерд╛, рдФрд░ рдиреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ Django рдЯреЗрдореНрдкрд▓реЗрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐рдкрдЯрд╛, рдЗрд╕рд▓рд┐рдП рдЪреБрдирд╛рд╡ Swig рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ред
Swig рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- Django рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕
- рдЕрддреНрдпрдзрд┐рдХ рдЙрдЪреНрдЪ рдЧрддрд┐ ( рдорд╛рдирдХ )
- рдиреЛрдб.рдЬреЗрдПрд╕ рдФрд░ рдкреНрд░рдореБрдЦ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
- рд╕рдВрдЧрддрддрд╛ рд╡реНрдпрдХреНрдд рдХрд░реЗрдВ
- рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд
рдиреЛрдб рддреЗрдЬ
рд╕реНрдерд╛рдкрдирд╛
npm install swig
рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдБ
<h1>{{ pagename|title }}</h1> <ul> {% for author in authors %} <li{% if loop.first%} class="first"{% endif %}> {{ author }} </li> {% else %} <li>There are no authors.</li> {% endfor %} </ul>
рдкреНрд░рддрд┐рдкрд╛рджрди
var template = require('swig'); var tmpl = template.compileFile('/path/to/template.html'); tmpl.render({ pagename: 'awesome people', authors: ['Paul', 'Jim', 'Jane'] });
рдкрд░рд┐рдгрд╛рдо
<h1>Awesome People</h1> <ul> <li class="first">Paul</li> <li>Jim</li> <li>Jane</li> </ul>
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕реНрд╡рд╛рдЗрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдиреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░:
Hooking
<script type='text/javascript" src="//path/to/swig/swig.js">
рдЯреЗрдореНрдкрд▓реЗрдЯ рддреИрдпрд╛рд░ рдХрд░реЗрдВ
var template = swig.compile('<p>{% block content %}{% endblock %}</p>', { filename: 'main' }); var mypage = swig.compile('{% extends "main" %}{% block content %}Oh hey there!{% endblock %}', { filename: 'mypage' });
рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛
console.log(mypage.render({}));
рдФрд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
<p>Oh hey there!</p>
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬрдкреНрд░рд▓реЗрдЦрдирдЬреАрдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ