In the downloaded/installed package we need JavaScript files (.js) from the dist/ folder.
And include required script in our HTML page:
- <html>
- <head>
- ...
- <script src="path/to/template7.min.js"></script>
- </head>
- <body>
- ...
- </body>
- </html>
Template7 templates looks like Handlebars templates, it is like regular HTML but with embedded handlebars expressions:
- <div class="list-block">
- <ul>
- {{#each items}}
- <li class="item-content">
- <div class="item-inner">
- <div class="item-title">{{title}}</div>
- </div>
- </li>
- {{/each}}
- </ul>
- </div>
Template7 support expressions with the following syntax:
{{title}}
- plain variable. Outputs "title" variable in current context
{{../title}}
- plain variable. Outputs "title" variable in parent context
{{../../title}}
- plain variable. Outputs "title" variable in parent context of parent context
{{this}}
- plain variable. Outputs variable equals to current context
{{person.name}}
- plain variable. Outputs variable equals to "name" property of "person" variable in current context
{{../person.name}}
- plain variable. The same but for parent context
{{@index}}
- access to additional data variable. Such data variables could be used in helpers
{{#each}}
- begin of block expression
{{else}}
- begin of block inverse expression (where supported)
{{/each}}
- end of block expression
{{#each reverse="true"}}
- begin of block expression with passed reverse:true
hash arguments
Helpers could be plain expressions and block expressions:
{{join myArray delimiter=", "}}
- execute "join" helper and pass there "myArray" variable of current context and delimiter:', '
hash argument
Template7 is a globally available Window function.
First of all we need to deliver string template. For example, we can store in script tag:
- <script id="template" type="text/template7">
- <p>Hello, my name is {{firstName}} {{lastName}}</p>
- </script>
Now we need to compile it in JavaScript. Template7 will convert our template string to plain JavaScript function:
- var template = $$('#template').html();
- // compile it with Template7
- var compiledTemplate = Template7.compile(template);
- // Now we may render our compiled template by passing required context
- var context = {
- firstName: 'John',
- lastName: 'Doe'
- };
- var html = compiledTemplate(context);
Now, html
variable will contain:
- <p>Hello, my name is John Doe</p>
以上这个是单独使用Template7.js的实例。
下面这个是在Framework7中使用Template7实例
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>Template7 实例教程
- </title>
- </head>
- <body>
- <div class="views">
- <div class="view view-main">
- <div class="pages">
- <script id="homeTemplate" type="text/template7">
- <div data-page="home" class="page">
- <div class="page-content">
- <div class="content-block">
- <p>Hello, my name is {{firstName}} {{lastName}}</p>
- </div>
- </div>
- </div>
- </script>
- </div>
- </div>
- </div>
- <script type="text/javascript" src="//ku.shouce.ren/libs/fk7/1.4.2/js/framework7.min.js">
- </script>
- <script>// 声明Dom7
- var $$ = Dom7;
- // 初始化 App
- var myApp = new Framework7({
- precompileTemplates: true
- });
- var mainView = myApp.addView('.view-main');
- // Now we may render our compiled template by passing required context
- var context = {
- firstName: 'John',
- lastName: 'Doe'
- };
- mainView.router.load({
- template: Template7.templates.homeTemplate,
- context: context
- })
- </script>
- </body>
- </html>