Zurb foundation 响应式/JavaScript框架的氚函数设计 我使用MoWebWeb/氚来使用ZURB基金会框架来响应常规的桌面网站。
Zurb foundation 响应式/JavaScript框架的氚函数设计 我使用MoWebWeb/氚来使用ZURB基金会框架来响应常规的桌面网站。,zurb-foundation,moovweb,tritium,Zurb Foundation,Moovweb,Tritium,作为其中的一部分,我想创建帮助函数,使基础小部件变得像已经在MOVOWEB中一样。但是一些基础组件,比如复杂的布局,需要比单个函数调用更合理的配置。 例如,启用顶栏需要类似以下结构的内容: # Use the foundation topbar insert_top("nav", class: "top-bar") { # Create the title area insert("ul", class: "title-area") { inject("<li class
作为其中的一部分,我想创建帮助函数,使基础小部件变得像已经在MOVOWEB中一样。但是一些基础组件,比如复杂的布局,需要比单个函数调用更合理的配置。 例如,启用顶栏需要类似以下结构的内容:
# Use the foundation topbar
insert_top("nav", class: "top-bar") {
# Create the title area
insert("ul", class: "title-area") {
inject("<li class='name'><h1><a href='/'>Website Name</a></h1></li>")
inject("<li class='toggle-topbar menu-icon'><a href='#'><span>Menu</span></a></li>")
}
# Grab the header links and put them in the top bar
insert("section", class: "top-bar-section") {
insert("ul", class: "left") {
# Move the original header links here
move_here("//span[@class='pagetop']//a"){
wrap("li")
}
}
}
}
<代码>使用基础顶杆
插入顶部(“导航”,类别:“顶部栏”){
#创建标题区域
插入(“ul”,类别:“标题区”){
注入(“”)
注入(“”)
}
#抓取标题链接并将它们放在顶部栏中
插入(“部分”,类别:“顶杆部分”){
插入(“ul”,类别:“左”){
#将原始标题链接移到此处
将_移到此处(//span[@class='pagetop']//a){
包裹(“li”)
}
}
}
}
将其抽象为可重用的氚函数的正确方法是什么?这些氚函数既可以最小化样板文件,又可以提供灵活性?在我的用例中,我通过将布局分解为相互嵌套的相关函数来处理这个问题。因此,上面的原始代码变成:
# enable the foundation top bar
zurb_topbar() {
zurb_topbar_title("Website Name", "Menu", "menu-icon")
zurb_topbar_left() {
move_here("//span[@class='pagetop']//a"){
wrap("li")
}
}
}
其中,功能定义为:
@func XMLNode.zurb_topbar() {
insert_top("nav", class: "top-bar") {
yield()
}
}
@func XMLNode.zurb_topbar_title(Text %name, Text %menu_btn_name, Text %menu_icon) {
insert("ul", class: "title-area") {
inject("<li class='name'><h1><a href='/'>" +%name +"</a></h1></li>")
inject("<li class='toggle-topbar "+%menu_icon+"'><a href='#'><span>"+%menu_btn_name+"</span></a></li>")
}
}
@func XMLNode.zurb_topbar_left() {
insert("section", class: "top-bar-section") {
insert("ul", class: "left") {
yield()
}
}
}
@func XMLNode.zurb_topbar(){
插入顶部(“导航”,类别:“顶部栏”){
收益率()
}
}
@func XMLNode.zurb_topbar_标题(文本%name,文本%menu_btn_名称,文本%menu_图标){
插入(“ul”,类别:“标题区”){
注入(“”)
注入(“”)
}
}
@func XMLNode.zurb_topbar_left(){
插入(“部分”,类别:“顶杆部分”){
插入(“ul”,类别:“左”){
收益率()
}
}
}
您可以想象一个zurb\u topbar\u right
函数,它可以选择性地用于定义topbar的右侧部分
注意:对于zurb\u topbar\u title
,
的href和结构是硬编码的,因为除了root之外,您通常不太可能将href指向任何地方。相反,您可能需要自定义的部分是顶部栏的标题、菜单按钮的标题以及菜单栏图标的存在
而对于zurb\u topbar\u left
,
的内容可能会由程序员来填充,因此产生了收益
权衡似乎是,自动强制以正确的方式使用正确的功能组合变得更加棘手,即
- 您必须同时使用
和zurb\u topbar
zurb\u topbar\u title
- 但只有一个
或zurb\u topbar\u left
zurb\u topbar\u right
- zurb_topbar必须包括
zurb_topbar_left
- 等等等等