3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

かつて DWT 使いだったおじさんたちへ

Last updated at Posted at 2016-03-13

Dreamweaver テンプレート (以下 DWT)、使わなくなりましたね。

HTML コンテンツの共通部分を管理したり、変数や式を使った条件分岐で出力するパーツを出し分けできたりと便利で、大規模な静的サイトの構築では威力を発揮しました。

でも Dreamweaver って有料だし、バグったりするし、Node.js 製のテンプレートエンジン使えば同じ問題を解決できるし、などの要因によって Grunt が出てきた辺りからでしょうか、使わなくなったと記憶しています。

そんな DWT ですが先日ふと思い出して、こんな使い方あったなぁ、なんてものが出てきたのでここに記しておこうと思います。

テンプレートコードは Javascript の式が使える

下記のようなテンプレートコードですが、

@@(!templateParam)@@
<!-- TemplateExpr expr="!templateParam" -->

公式のヘルプにも記載があるとおり、Javascript が使えます。
簡単な演算だけに限らず大体使えます。

テンプレートコード内で Javascript を使ってみる

式として成立すれば割りと何でも良くて、例えば下記のようなコードを書くとわーっと何かが出てきます。

window.dwt
<script>
@@(
(function() {

  /* window 配下をちら見してみる */
  var obj = window;
  var key;
  var value;
  var data = ['var data = {'];

  for (key in obj) {
    value = obj[key];
    if (/^string|object$/.test(typeof value)) {
      data.push('"'+ key +'": "'+ value +'",');
    }
    else {
      data.push('"'+ key +'": '+ value +',');
    }
  }

  data.push('};');
  return data.join('\n');

}());
)@@
</script>
output.html
<script>
var data = {
"navigator": "[object Navigator]",
"dreamweaver": "[object Dreamweaver]",
// 省略 ...
"dwscripts": function dwscripts() {
},
"dwscripts_getNewline": function dwscripts_getNewline() {
// 省略 ...
</script>

window 配下にいろいろといらっしゃるのが確認できました。
Dreamweaver が内部で使っている風なコードが出てきましたね。
テンプレートコード内ではこんな感じで Javascript を使えます。

上記の結果を見るとファイル操作関数とかもあるんですが、大丈夫でしょうか。
野良 DWT とかよく見ないで無邪気に使ったりすると大変なことになりそうです☆

まとめ

Dreamweaver のテンプレートコード内では Javascript が使えます。
使い方次第では僕が考えた最強の DWT とかできそうです。

ちなみに僕はあまり活用していなくて、下記のような残念な使い方だけしていました。

@@(''/*

ここにテンプレートパラメータなどの説明を Markdown 形式で書いて
ドキュメント代わりにしていました。

*/)@@

おまけ

navigator オブジェクトにも幾つか値が入っていました。
OSX の Dreamweaver CC 2015 を使った時の出力です。

navigator.appName;  // "Netscape"
navigator.appVersion; // "4"
navigator.winOSname;  // "NA"
navigator.platform; // "MacPPC"
navigator.userAgent;  // "Dreamweaver/16.1(Macintosh; U; Mac OS X)Adobe Dreamweaver CC 2015/16.1.0.7851"

興味深いのは Netscape4 というバージョンです。
もしかして Dreamweaver が使っている Javascript エンジンは Netscape 4 がオープンソース化された時のものなのかも知れませんね。
それならばテンプレートコード内で JSON オブジェクトが使えないのも納得です。

(2016/03/14) navigator.appName には大体のブラウザで Netscape が入っている仕様なので宛にはなりませんでした。thx @jkr_2255

3
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?