LoginSignup
2
2

More than 5 years have passed since last update.

pug+riot.jsでyieldを使う。

Posted at

まとめ

  1. jadeじゃなくて、pugを使おう!
  2. pugなら、「yield」は「yield.」・「yield(from="xxx")」・「yield(from="xxx")」で書ける!
  3. pugはブラウザじゃなくてあらかじめwebpack等で変換!cdnはどこ???

pugとriot.jsではyieldがキーワード。

ということで、うまく使えない。らしい。

my-tag
  #{'yield'}

とかエスケープすればいいらしい。意味なくない?riotするためのyieldしか使わないのに。
ならば、ということでいろいろやって解決したのですが、実は、それは、pugじゃなくて、jadeの時のお話だったもよう。
現在のpugであれば、

my-tag
  yield(from="header")
  yield.

my-tag2
  yield(to="header")
    span HEADER
  span CONTENT

という風に「yieldのみの行」でなければ、キーワードではなくタグと認識されます。
yield.であれば、script.のときと同じノリなので、十分許容範囲に思えます。

#せっかく、pug-html-loaderを直して、pug-pluginも作ったのに。

愚痴:pugのcdnがない!

仕方がないので、npmしたpugをbrowserifyしてみたものの落ちる。
Consoleを見ると、以下のような情報が出ている。

Uncaught TypeError: Cannot read property 'split' of undefined

ソースは、こんな感じだから、nodeがないんだろうね.....

var current = process.versions.node.split('.');

で、この処理は、requireで以下のような呼び出しで呼ばれている。

pug->pug-filters->./lib/run-filter->resolve->./lib/core

pug-filtersが呼ばれないようにすればいいのかな?と思って、package.jsonで、以下のように自分のファイルに差し替えようとしても、うまくいかない。
#これは、変な気がするけど、いろいろやったものの、解決できず......

  "browser": {
    "pug-filters": "./pug-filters.js"
  },

あきらめて、node_modules/pug/package.jsonの方で、上記の内容を持っていくとうまくいく。
で、これでできたpug.jsを使ってやると、「yield.」とかの記述でもうまく通った。

2
2
0

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
2
2