整理Node.js Express框架中爆炸速度的ECT模板语法
的一个选择是:目标
由于Express框架以其最快的速度而闻名,但是由于它的语法没有整理,所以我决定自己整理一下。
请参考
在这里的网站上(http://ectjs.com/),有关于ECT的说明,有一些详细内容。它与CoffeeScript相似,但并不完全相同。
语法
无需转义即可输出
<h1><%- @title %></h1>
逃逸并输出
<code><%= @source %></code>
如果条件成立
<% if @value1? : %>
<label>?で存在確認。false,"",0でも存在すればここです</label>
<% else if !@value2 : %>
<label>[false,0,""+存在しない] を判断したければ!</label> <!-- ?と同じ役割も兼ねます -->
<% else if @value3 == "2" : %>
<label>式で比較。=== は無くて、==で型の一致も見られます。</label>
<% else : %>
<label>該当無し</label>
<% end %>
・新增变量
<!-- 変数宣言。後続の処理でこの変数を使えます。 -->
<% @start_num = 0 %>
・三个操作
<!-- 三項演算で値を@strに入れます。 -->
<!-- @valueがあれば"a"。無ければ"b"が出力される -->
<% @str = if @value then "a" else "b" %>
<label><%- @str %></label>
<!-- こちらは変数に代入せず直接画面出力する場合 -->
<label><%= if @value then "a" else "b" %></label>
虽然文
<!-- 括弧内がtrueの間繰り返します -->
<% while (@start_num++ < @max_num) : %>
<li><%- @start_num %></li>
<% end %>
使用for循环对数组进行迭代。
<!-- 繰り返しは配列のみです。オブジェクト(map)はダメです -->
<% @value = [1,2,3] %>
<% for val in @value : %>
<li><%- val %></li>
<% end %>
· 转换语句
<% @oauthProvider='facebook' %>
<% switch @oauthProvider : %>
<% when 'facebook' : %>
<label>facebook</label>
<% end %>
<% when 'twitter' : %>
<label>twitter</label>
<% end %>
<% else : %>
<label>else</label>
<% end %>
<% end %>
使用函数
// JavaScriptでテンプレートに関数を渡した場合
data.calc = function(a,b){return a+b;};
res.render('test', data);
<!-- test.ect -->
<!-- 画面側で利用可能 -->
<%= @calc(1,2) %>
使用布局
<!-- page.ectファイル -->
<% extend 'layout.ect' %>
<!-- layout.ectの中の"content"の場所に読み込まれます -->
<div>Hello, World!</div>
<% block 'footer' : %>
<!-- layout.ectの中の"content 'footer'"の場所に読み込まれます -->
<span>Custom footer content</span>
<% end %>
+
请将以下内容用中文进行同义转述,只需要一种表达方式:
<!-- layout.ectファイル -->
<html>
<body>
<% content %>
<footer>
<% content 'footer' %>
</footer>
</body>
</html>
请用中文写下以下原文的同义表达:
↓
<!-- page.ectを表示した結果になります -->
<!-- layout.ectの中に、page.ectの内容と部品(blockの部分)が読み込まれます -->
<html>
<body>
<div>Hello, World!</div>
<footer>
<span>Custom footer content</span>
</footer>
</body>
</html>
他正在加载ECT文件。
<!-- 他ファイルをパラメータを含めて表示 -->
<!-- item.ectを読み込みますが、拡張子付きで指定すると
動きがおかしくなったので付けない方がいいです。 -->
<% include 'item', { item : 'book', price: '10$' } %>
被加载到 ↑ 中。
<!-- item.ect -->
<div><%= @item %></div>
<div><%= @price %></div>
我觉得除了以上所提到的,可能还有其他的,不过只要有这些就差不多可以写了。
做不到的事 (zuò bù de shì)
以下是我曾经尝试过但未能成功的事情。
如果有人知道如何做,请告诉我(>人<)
在ECT文件中定义函数
<!-- こういう風に、ECT内で変数作るように関数は作れなかったです -->
<% @calc=function(a,b){return a+b;} %>
为变量增加的类型的for循环。
<!-- 実行できませんでした -->
<% for (@i = 0;@i < 5; @i++) : %>
<li><%= @i %></li>
<% end %>