Swig - Django рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣реИрдмрд░ рдкрд░ рдХрд┐рд╕реА рдиреЗ рднреА рдЙрддреНрдХреГрд╖реНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╕реНрд╡рд┐рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдерд╛ред

рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреЗрдЬреА рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирдП рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЙрдкрдпреЛрдЧ рдкрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреНрд░рд╡реГрддреНрддрд┐ рдиреЗ рдореБрдЭреЗ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВрдиреЗ рдХреЗрд╡рд▓-рдлрд╝рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА, рддреЛ рдореИрдВ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдФрд░ рд╕рд░реНрд╡рд░ (JS.JS), рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ (Backbone.js) рдкрд░ JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рд╕рдм рдХреБрдЫ рдЧрдВрднреАрд░ рд╣реИ :) рдФрд░ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдлреЛрдирдЧреИрдк) рдореЗрдВред рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рдЪрд░рдг рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдерд╛, рдФрд░ рдиреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ Django рдЯреЗрдореНрдкрд▓реЗрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐рдкрдЯрд╛, рдЗрд╕рд▓рд┐рдП рдЪреБрдирд╛рд╡ Swig рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ред

Swig рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

рдиреЛрдб рддреЗрдЬ

рд╕реНрдерд╛рдкрдирд╛
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> 

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ
рдкреНрд░рд▓реЗрдЦрди
рдЬреАрдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ


Source: https://habr.com/ru/post/In174207/


All Articles