Javascript Jade/Pug mixin延伸段
我开始在工作中使用Jade,我遇到了一个在Google上找不到答案的问题 我想写这样一个混合体:Javascript Jade/Pug mixin延伸段,javascript,node.js,pug,Javascript,Node.js,Pug,我开始在工作中使用Jade,我遇到了一个在Google上找不到答案的问题 我想写这样一个混合体: mixin menu(...MenuList) ul.main-menu each item in MenuList li: a(href='##{item.toLowerCase()}.html')= item 此mixin适用于单名链接,如+菜单('Contacts','FAQ'),但不适用于多字链接,如+菜单('Contact Us','Our Price')
mixin menu(...MenuList)
ul.main-menu
each item in MenuList
li: a(href='##{item.toLowerCase()}.html')= item
此mixin适用于单名链接,如+菜单('Contacts','FAQ')
,但不适用于多字链接,如+菜单('Contact Us','Our Price')
我试着写一些东西,比如:
li: a(href='##{item.toLowerCase().replace(' ', '_')}.html')= item
或:
但对我来说什么都不管用。也许是缺乏JS技能,但如果有人能帮助我,我会很高兴。问题在于你在href中的传递方式。这是一个有效的
预期的名称是什么<代码>我们的价格.html?是的,Ryan!我想要插入的不是间隙,而是您第一次尝试(
item.toLowerCase().replace('''.''.'
)的问题,即它只替换了一个空格,还是出现了其他问题?如果我只使用.toLowerCase(),它工作正常:呈现'our product.html',但它有间隙,当我添加.replace时,它呈现'item.toLowerCase().replace('.'.'“。它以字符串形式呈现函数。哦,那是引号。使用双引号避免与周围环境冲突,并.replace(//g,'.''.'
替换所有实例,而不仅仅是第一个实例。感谢您的回复!但它以前是有效的。问题是如何处理词与词之间的差异,因为我得到的是我们的price.html而不是我们的_price.htmlthat@DmitriyKavraiskyi我也更新了答案和密码。希望这能帮上忙谢谢!这就是我一直在寻找的!另外,我对它做了一些修改,因为不需要在间隙中:-var replace=item.split(“”).join(“”);li:a&attributes({href:'#'+replace.toLowerCase()+'.html'})=item@DmitriyKavraiskyi干杯
li: a(href='##{item.toLowerCase(function(x){ return x.replace(' ', '_')})}.html')= item
mixin menu(...MenuList)
- var patt = /\s+/i; // This checks for whitespace.
ul.main-menu
each item in MenuList
if patt.test(item)
- var newitem = item.split(' ').join('_');
li: a&attributes({ href: '#' + newitem.toLowerCase() + '.html' })= item
else
li: a&attributes({ href: '#' + item.toLowerCase() + '.html' })= item
+menu('my-list', 'Contact Us', 'Hello', 'Our Price', 'My Price')
// result
- my-list
- Contact Us
- Hello
- Our Price
- My Price