探検
JavaScriptのテンプレートエンジンを作ってみる
■ このスレッドは過去ログ倉庫に格納されています
11
2019/03/05(火) 00:50:27.87ID:8a3k8XPA よ?
91
2019/03/25(月) 21:40:09.75ID:ci2yIkxV HTMLはやめるってHTML内にif else forとかの独自属性をごてごて埋め込むことかな?
id属性とか{{name}}でHTML内のタグの位置を特定するのだけは必要だと思う
そうじゃないとjQueryみたいにセレクタを使うことになるから
id属性とか{{name}}でHTML内のタグの位置を特定するのだけは必要だと思う
そうじゃないとjQueryみたいにセレクタを使うことになるから
101
2019/03/26(火) 23:37:48.08ID:NVFp1MPL 今日は試しにWebComponentsぽい機能を作ってみる
index.html(HTML)
https://pastebin.com/zgk87cxy
config.xml(XML/XHTML)
https://pastebin.com/KuBEp3vm
test.js(JavaScript)
https://pastebin.com/8bnMsLF0
↓出力HTML
https://pastebin.com/UUet5Rw1
https://i.imgur.com/hm4txLj.png
index.html(HTML)
https://pastebin.com/zgk87cxy
config.xml(XML/XHTML)
https://pastebin.com/KuBEp3vm
test.js(JavaScript)
https://pastebin.com/8bnMsLF0
↓出力HTML
https://pastebin.com/UUet5Rw1
https://i.imgur.com/hm4txLj.png
111
2019/03/27(水) 00:42:38.58ID:aVpY1CXQ ちょっと構想を書いてみる。
例えばログインのユーザー入力でエラーが生じたとき、よく赤字でエラーメッセージをだす。
そのときよくあるテンプレートエンジンではHTML内にifを埋め込んでいたりする。
// JS
var js = {
loginErrorName : true, // booleanがfalseのときはhtmlタグが消える
loginErrorPass : false
};
// HTML
<p id="loginError">
<div framework:if="js.loginErrorName" style="color:red;">※そのアカウント名は存在しません。</div>
<div framework:if="js.loginErrorPass" style="color:red;">※パスワードが間違っています</div>
</p>
↓上記を下記のようにクラスライブラリ化してみるか?
// JS
var loginError = new LoginError();
loginError.loginErrorName = true;
loginError.loginErrorPass = false;
// HTML
<p>{{ loginError }}</p>
これだとタグライブラリを作るのに近い感じになりそう。
例えばログインのユーザー入力でエラーが生じたとき、よく赤字でエラーメッセージをだす。
そのときよくあるテンプレートエンジンではHTML内にifを埋め込んでいたりする。
// JS
var js = {
loginErrorName : true, // booleanがfalseのときはhtmlタグが消える
loginErrorPass : false
};
// HTML
<p id="loginError">
<div framework:if="js.loginErrorName" style="color:red;">※そのアカウント名は存在しません。</div>
<div framework:if="js.loginErrorPass" style="color:red;">※パスワードが間違っています</div>
</p>
↓上記を下記のようにクラスライブラリ化してみるか?
// JS
var loginError = new LoginError();
loginError.loginErrorName = true;
loginError.loginErrorPass = false;
// HTML
<p>{{ loginError }}</p>
これだとタグライブラリを作るのに近い感じになりそう。
121
2019/03/31(日) 13:51:59.56ID:quVuOhjO 要素の繰り返しが鬼門だな
131
2019/04/03(水) 18:11:43.84ID:0NhWgLHB 考えた結果、作り直すことにした
Vueの単一ファイルコンポーネントみたいなのを作ろうかと構想してたけど
まずはもっと簡単にjQueryみたいなことをやってみるぞ
Vueの単一ファイルコンポーネントみたいなのを作ろうかと構想してたけど
まずはもっと簡単にjQueryみたいなことをやってみるぞ
2019/04/03(水) 19:10:41.45ID:/cw++oNj
jQueryのどこがテンプレートエンジンなんだ?
とっとと削除依頼出して回線切って首吊って死ねや
とっとと削除依頼出して回線切って首吊って死ねや
151
2019/04/04(木) 08:08:33.83ID:AP8fvSfz 結局DOM操作したほうがいいじゃんと思って。
html内に埋め込まないテンプレートエンジンてこうだろ?↓
特に工夫することもないよね
HTML
https://pastebin.com/8hS3FZur
JS
https://pastebin.com/W5znAzjg
↓出力結果
HTML
https://pastebin.com/1DXTjD88
html内に埋め込まないテンプレートエンジンてこうだろ?↓
特に工夫することもないよね
HTML
https://pastebin.com/8hS3FZur
JS
https://pastebin.com/W5znAzjg
↓出力結果
HTML
https://pastebin.com/1DXTjD88
16デフォルトの名無しさん
2019/04/06(土) 23:26:17.28ID:+du4Jk0c やはりDOM操作系が一番だな
以下、繰り返しのサンプル
HTML
https://pastebin.com/m1jG6UMf
JS
https://pastebin.com/BZ9daPTJ
↓出力結果
https://i.imgur.com/JL8ebLX.png
以下、繰り返しのサンプル
HTML
https://pastebin.com/m1jG6UMf
JS
https://pastebin.com/BZ9daPTJ
↓出力結果
https://i.imgur.com/JL8ebLX.png
2019/04/09(火) 07:01:20.81ID:88xid7Sh
>>9
全然違う
全然違う
2019/04/09(火) 10:49:18.75ID:cRtn1aSe
テンプレートエンジンっていうのは、
テンプレート(雛形)とデータから生成物を
作ってくれる ”エンジン" で完成されたもの。
毎回専用のエンジン(?)を作らなければいけない>>16は
テンプレートエンジンではない。
テンプレートとデータから生成物を作るための
単なるJavaScriptコード
テンプレート(雛形)とデータから生成物を
作ってくれる ”エンジン" で完成されたもの。
毎回専用のエンジン(?)を作らなければいけない>>16は
テンプレートエンジンではない。
テンプレートとデータから生成物を作るための
単なるJavaScriptコード
191
2019/04/09(火) 19:08:59.78ID:mANEt9Mq 分かった。じゃあまたあとで書くが既存の名の知れたテンプレートエンジンを調査するところから始めてみよう
201
2019/04/09(火) 19:37:35.64ID:mANEt9Mq おそらく、jsにはデータだけを置いて、それをどのようにDOMに組み立てるのかを
テンプレート側(HTML)に全て置くのがテンプレートエンジンと言うことなのだろう
>>8はどういう意味なんだろう
HTMLテンプレート自体をjsonにしてしまうとか?
{ "html" : [ "head" : {}, "body" : { "div":"hello" } ] }
テンプレート側(HTML)に全て置くのがテンプレートエンジンと言うことなのだろう
>>8はどういう意味なんだろう
HTMLテンプレート自体をjsonにしてしまうとか?
{ "html" : [ "head" : {}, "body" : { "div":"hello" } ] }
2019/04/09(火) 20:33:21.80ID:QoVolURM
テンプレートにロジックを置くのはアンチパターン。
じゃなきゃロジックレステンプレートなんて言葉は生まれない。
まあifやforくらいは許されてる感あるが…
なぜロジックフルが忌避されてるかって?
答え:PHP
じゃなきゃロジックレステンプレートなんて言葉は生まれない。
まあifやforくらいは許されてる感あるが…
なぜロジックフルが忌避されてるかって?
答え:PHP
221
2019/04/09(火) 23:50:46.70ID:mANEt9Mq 例えばsetInterval()でstyle.opacityを更新して要素を点滅させるとか、ViewModelに関する一切をエンジンに任せ、
テンプレートには<div framework:blink="speed:0.8">greeting</div>とかエンジンが提供する属性を埋め込むのが
よくあるテンプレートエンジンの方向性だよね
テンプレートには<div framework:blink="speed:0.8">greeting</div>とかエンジンが提供する属性を埋め込むのが
よくあるテンプレートエンジンの方向性だよね
2019/04/10(水) 01:02:07.20ID:BUarUbyW
全然違う。それは「テンプレートエンジン」の仕事ではない。
じゃんけんのパーって、手のひら開いて極太ビーム出す必殺技だよね?と言っているに等しい。
トンチンカンにも程がある。
じゃんけんのパーって、手のひら開いて極太ビーム出す必殺技だよね?と言っているに等しい。
トンチンカンにも程がある。
2019/04/10(水) 12:10:44.96ID:sSiaigIF
用語がわかってないから、テンプレートエンジンを作るスタート地点にも立っていない。
「美味しいラーメン作るぞー」と言いながら、
「パラパラのご飯が重要なんですよ」って言ってる。
そして出来た後、皆に突っ込まれる。
「それラーメンじゃなくてチャーハンだろ!」って
それでもまだこう言うんだ。
「え?これいつも行くラーメン屋の一番人気メニューですよ?」と。
つまり素でチャーハンをラーメンだと勘違いしている。
>>22
お前は今、そんなレベルだよ
「美味しいラーメン作るぞー」と言いながら、
「パラパラのご飯が重要なんですよ」って言ってる。
そして出来た後、皆に突っ込まれる。
「それラーメンじゃなくてチャーハンだろ!」って
それでもまだこう言うんだ。
「え?これいつも行くラーメン屋の一番人気メニューですよ?」と。
つまり素でチャーハンをラーメンだと勘違いしている。
>>22
お前は今、そんなレベルだよ
251
2019/04/10(水) 16:09:44.07ID:92CfBwCq /)
///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
261
2019/04/10(水) 16:21:31.25ID:92CfBwCq 入力テンプレートとJSからHTML画面を出力するのがテンプレートエンジンDA!
271
2019/04/10(水) 16:48:39.76ID:92CfBwCq■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】J1昇格PO決勝戦 千葉、来季のJ1昇格が決定 17年越しの悲願叶える…オリジナル10が05年以来のJ1にそろう [久太郎★]
- 南京で「大虐殺」追悼式典 中国、高市政権をけん制 (共同通信) [少考さん★]
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★5 [ぐれ★]
- 【日銀】0.75%に利上げへ 来週の決定会合で、30年ぶり水準 賃金改善の継続見込む [ぐれ★]
- 京都のホテル大幅値下げ 訪日中国人客、年1000万人目前で急ブレーキ ★3 [蚤の市★]
- 緊急入院のゆたぼん「人身事故は嘘」はデマ 「滑稽ですね」救急車写真で証明、法的措置も検討 [少考さん★]
- >>5で貼られたスレにみんなで凸するスレ
- 小野田紀美「外国人帰れ!って言って石を投げられるのは毎日のように。もう殴る蹴るは当たり前でした。それで喧嘩強いんですよ、私。」 [856698234]
- 【実況】博衣こよりのえちえちドラクエ1&2リメイク🧪★3🏡
- 日本人、気づきはじめる「庶民の生活が苦しいのは金持ちが節税したりして金溜め込んでるから。大企業の内部留保もどうにかしろ」 [434776867]
- 高市支持者、応援歌「正義の目ジャスティス💖アイ」を公開 [165981677]
- トランプ大統領、エプスタンイン邸宅で美女に囲まれご満悦の写真見つかる コンドームの山も [907981868]
