1

.jade ファイル内で 2 回繰り返されるインライン スクリプトとコード ブロックがあり、次のことを行います。

  • 再利用してください。(つまり、DRYして、ブロック/機能が1つだけあることを意味します)
  • ここで提案されているようにhtmlをエスケープします。現在、私は使用しています!= linkExist('foo')

私の考えは を使用するmixinことでしたが、方法がわかりません。私のコードはそのまま動作しますが、より適切に記述する方法を知りたいです。コードレビューについて考えました(私のコードは実際に機能し、それを改善したいだけなので)が、ジェイドにはまだタグさえないので、SOの方が良いと思います.

h1 Teachers
for result in object.teachers
    - var linkExist = function(i){
    -   if (result[i] != 'undefined'){
    -       var html = ', follow on ' + i + ': <a href="' + result[i] + '" target="_blank">' + result[i].split("http://")[1] + '</a>';
    -       return html;
    -   };
    - }

    section
        h3 #{result.Name} 
        p.inline #{result.Nick}

        img(src=result.img)

        p.small Location: #{result.Location}

        p.small 
            | Web: 
            for webResult in result.Web
                a(href=webResult,target='_blank') #{webResult.split('http://')[1]}

            != linkExist('Twitter')
            != linkExist('GitHub')

//now it repeats the code but for students
h1 Students
for result in object.students
    - var linkExist = function(i){
//etc.......
4

1 に答える 1

3

ミックスインを使用できるはずです。あなたも合格resultするなら、それはかなり一般的でなければなりません:

mixin linkExist(result, type)
  if result[type] !== undefined
    | , follow on #{type}: <a href="#{result[type]}">...</a>

//- use like this
for result in object.teachers
  ...
  mixin linkExist(result, 'Twitter')
  mixin linkExist(result, 'GitHub')

for result in object.students
  ...
  mixin linkExist(result, 'Twitter')
  mixin linkExist(result, 'GitHub')
于 2013-11-12T11:33:09.647 に答える