本文档描述了前端开发者面试问题网站中使用的模板和组件架构。它涵盖了模板、组件和样式之间的结构、组织和关系,旨在创建一个统一且易于维护的网站。有关使用 Eleventy 进行静态网站生成的更多信息,请参阅Eleventy 静态网站生成。
本网站采用了基于 Nunjucks 模板(.njk 文件)和有组织 CSS 的组件化架构。这种模块化设计实现了关注点分离,并允许在整个网站中重用组件。
来源:src/_includes/layouts/default.njk src/_includes/components/navigation.njk src/_includes/components/footer.njk
默认布局模板是网站所有页面的基础。它定义了 HTML 结构,包含必要的元标签,并集成了组件和样式。
来源:src/_includes/layouts/default.njk
默认布局模板(src/_includes/layouts/default.njk)实现了多项重要功能:
pageTop 和 main)本网站使用可重用组件来保持一致性并简化维护。这些组件以 Nunjucks 模板的形式实现,位于 src/_includes/components/ 目录中。
导航组件(src/_includes/components/navigation.njk)创建了网站的主导航菜单,其中包括:
该组件使用 JavaScript 处理移动设备上的下拉行为,在较小的屏幕上,菜单会折叠成一个切换按钮。
页脚组件(src/_includes/components/footer.njk)提供了:
helpers.currentYear() 函数动态显示年份范围CSS 以模块化的方式组织,针对网站的不同方面有特定的文件。
来源:src/_includes/layouts/default.njk43-51 src/_includes/assets/css/variables.css src/_includes/assets/css/content.css src/_includes/assets/css/header.css src/_includes/assets/css/navigation.css
src/_includes/assets/css/variables.css文件(src/_includes/assets/css/variables.css)通过 CSS 自定义属性(变量)建立了一个集中式主题系统,用于:
变量定义的示例
每个组件都有专门的 CSS 文件,以保持关注点分离:
该模板系统包含了对多种语言的强大支持,包括从右到左(RTL)的语言,如阿拉伯语、希伯来语和波斯语。
来源:src/_includes/layouts/default.njk54 src/_includes/assets/css/variables.css18-20 src/_includes/assets/css/content.css61-64 src/_includes/assets/css/header.css34-36
RTL 支持包括:
rtl: truertl 类添加到 body 元素CSS 中 RTL 调整的示例
模板和组件在构建时由 Eleventy 处理,将模板逻辑与数据合并以生成静态 HTML 页面。
来源:src/_includes/layouts/default.njk43-52 src/_includes/layouts/default.njk65-66 src/_data/helpers.js
模板渲染过程包括:
helpers.js 文件(src/_data/helpers.js)提供了可在模板中使用的实用函数,例如用于页脚显示当前年份的 currentYear()。
模板和组件系统支持超过 30 种翻译,每种翻译都保持一致的结构,同时适应特定语言的要求。
| 语言 | RTL 支持 | 文件路径 | 特殊注意事项 |
|---|---|---|---|
| 阿拉伯语 | 是 | translations/arabic/README.md | 自定义字体族 |
| 希伯来语 | 是 | translations/hebrew/README.md | 自定义字体族 |
| 波斯语 | 是 | translations/farsi/README.md | 自定义字体族 |
| 其他 | 否 | translations/[lang]/README.md | 标准渲染 |
来源:src/translations/arabic/README.md1-7 src/translations/hebrew/README.md1-7 src/translations/farsi/README.md1-7
每个翻译文件都包含指定以下内容的前置数据:
此元数据确保在页面渲染时应用正确的布局、方向和语言属性。
前端开发者面试问题项目中的模板和组件系统为创建多语言、可访问且易于维护的网站奠定了坚实基础。采用独立组件和 CSS 文件的模块化结构,实现了关注点的清晰分离,并简化了更新。对国际化的支持,特别是对 RTL 语言的支持,体现了对全球可访问性的承诺。