我目前正在考虑开发一个“静态”网站,只有几页。但是,通过设计,我可以看出会有重复的布局/模式。我正在考虑采用面向数据的方法,使我的 HTML 尽可能可重用。这是一个例子:
索引.html:
<div>
{% include organisms/topBanner.html
tp-title=site.data.home.topbanner.title
tp-select-blurb=site.data.home.topbanner.select.blurb
button-text=site.data.generic.buttons.getstarted
button-link=site.data.generic.links.gosomewhere
%}
</div>
然后是我的有机体/topBanner.html:
<div class="tb">
<h1>
{{ include.tp-title }}
</h1>
<div>
<h2>{{ include.tp-select-blurb }}</h2>
<div>
{% include atoms/button.html
%}
</div>
</div>
</div>
最后是我的atom/button.html:
<a class="button" href="{{ include.button-link }}">{{ include.button-text }}</a>
我在 _data 下有多个 JSON 文件,它们基本上包含文本。按钮的示例是_data/generic/buttons.json:
{
"getstarted": "GET STARTED",
"completesurvey": "COMPLETE THE SURVEY"
}
或links.json:
{
"gosomewhere": "/go-somwhere",
"surveypage": "/survey"
}
因此,这意味着您需要从有机体的顶层传递所有数据,以便其中的每个位都有其数据。这样,该按钮的示例就是 HTML 只定义一次,并且数据绑定到它。对于第二个按钮,topBanner
您可以执行以下操作:
索引.html:
<div>
{% include organisms/topBanner.html
tp-title=site.data.home.topbanner.title
tp-select-blurb=site.data.home.topbanner.select.blurb
b-getstarted-text=site.data.generic.buttons.getstarted
b-getstarted-link=site.data.generic.links.gosomewhere
b-survey-text=site.data.generic.buttons.completesurvey
b-survey-link=site.data.generic.links.surveypage
%}
</div>
在topBanner.html中,将数据重新绑定到专用按钮:
<div class="tb">
<h1>
{{ include.tp-title }}
</h1>
<div>
<h2>{{ include.tp-select-blurb }}</h2>
<div id="getstarted">
{% include atoms/button.html
button-text=include.b-getstarted-text
button-link=include.b-getstarted-link
%}
</div>
<div id="survey">
{% include atoms/button.html
button-text=include.b-survey-text
button-link=include.b-survey-link
%}
</div>
</div>
</div>
这种方法意味着一切都是数据驱动的,没有 HTML 的重复/“复制/粘贴”,这一切都通过包含工作,您可以应用原子设计模式 ( http://patternlab.io/ )。
想要将按钮的文本从“开始”更改为“让我们开始”吗?转到 data/generic/buttons.json 并在那里进行更改。整个网站现在都更改了文本。
缺点是所有数据都必须从顶层向下传输。可读性可能很差。
我第一次使用 Jekyll,想听听你的意见。像这样的静态网站开发人员有什么好的做法?拥有一个包含更通用button.html的buttonGetStarted.html并将数据从buttonGetStarted.html传递给button.html是否更容易?喜欢:
buttonGetStarted.html:
{% include atoms/button.html
button.text=site.data.generic.buttons.getstarted
button.text=site.data.generic.links.gosomewhere
%}
然后每次我在页面上需要它时都包含buttonGetStarted ?但是,如果我需要一个新的调查按钮,我需要创建另一个 html buttonSurvey.html等等......当然在代码上你会看到一个{% include buttonSurvey.html %}
易于阅读和理解的按钮是关于什么的。所以这:
{% include button.html button.text=site.data.generic.buttons.getstarted %}
所有按钮只有一个文件按钮,或
{% include buttonGetStarted.html %}
每次我需要一个新按钮时都创建一个新的 HTML 文件?
谢谢
F。