路由器我是指将URL映射到名称的组件 - 又称A.K.A. 路由 - 因此您可以安全地更改URL不必爬行您的代码库即可更新前往已过时位置的所有链接。 为什么我们需要这样的东西?
>我目前正在为Sassdoc V2的文档努力工作(尚未发布,截至撰写本文时尚未发布)。我们有很多内容。超过20页,分别在包含许多代码示例和交叉参考的4个不同部分分开。这就是为什么我们需要路由组件的原因。然后,我们将用名称而不是通过其路径来指代URL,从而使我们更改路径,同时保持名称完全有效。
>那么,我们需要做什么才能完成这项工作?如果您正在运行Jekyll,但不限于安全模式(不幸的是,使用GitHub页面进行托管),则可以肯定地找到/构建一个Ruby插件来执行此操作。这将是最好的解决方案,因为这通常是服务器端语言处理的内容。
>现在,如果您在GitHub页面上托管您的网站,这比Jekyll更常见,您不能使用插件,也无法使用自定义Ruby代码扩展Jekyll的Core,因此您最终会用可用的内容来入侵一个解决方案:液体和降价。>主要想法是将一个包含我们所有映射到实际URL的路由的文件。值得庆幸的是,Jekyll允许我们通过存储在_DATA文件夹中的YAML/JSON/CSV文件来定义自定义全局变量,后来通过site.data。data。
>
>要在上面添加一点句法糖,我们将创建允许友好语法的Markdown链接引用 - 但让我们不要太快。>
创建路由器名称)。可以在任何jekyll项目的_data文件夹中创建yaml/json/csv文件,所以让我们一起使用名为doutes.yml的yaml文件:
home: "/" about: "/about-us/" faq: "/frequently-asked-questions/" repository: "https://github.com/user/repository">
如您所见,我们不再是指URL,而是参考路线。这不是魔术,它只告诉jekyll访问在给定路径上存储的全局变量(例如site.data.routes.faq)。
现在,如果存储库不再在Github上托管,或者“关于我们”页面的URL现在 /关于 /,请不要担心!通过更新路由器,我们可以使其正常工作,而无需回到我们的页面以更新我们的链接。
--- layout: default title: "About us" --- <span><!-- Content about us --> </span> Go to our [GitHub repository]({{ site.data.routes.repository }}). Or read the section dedicated to [Frequently Asked Questions]({{ site.data.routes.faq }}).添加句法糖
在这一点上,我们有一个功能性路由器,允许我们更改任何URL,而无需爬网即可修复损坏的链接。因此,您可以说这已经很酷了。但是,必须键入site.data.routes.faq并不是很方便。我们肯定可以使它更加优雅!
> 是的,是的。首先,我想到建立一个小路由()函数,该功能接受一个密钥名称并返回存储在site.data.routes.然后,我想到了以前从未使用过的降价功能:链接引用。这就是在Markdown中表示链接的方式:
home: "/" about: "/about-us/" faq: "/frequently-asked-questions/" repository: "https://github.com/user/repository">您还可以将链接设置为前往参考的链接 - 顺便说一句,该链接完全看不见,在页面中的任何地方定义了,就像:
:
--- layout: default title: "About us" --- <span><!-- Content about us --> </span> Go to our [GitHub repository]({{ site.data.routes.repository }}). Or read the section dedicated to [Frequently Asked Questions]({{ site.data.routes.faq }}).
注意:使用参考而不是URL时,括号被括号替换为括号。
>这可以使您可以将所有链接定义在同一位置(例如在底部),而不是整个文档。我必须说我没有太多使用此功能,但是在这种情况下,它很方便。>
>这个想法是从我们的路由器中自动化链接引用,以便我们可以将路由用作任何文件中的参考。事实证明,在液体中进行此操作非常容易:
[I am a link](http://link.url/)>通过将其添加到页面中的任何位置,这将指示Jekyll作为液体代码处理,然后将其作为Markdown参考进行处理。因此,例如,回到我们以前的示例,我们可以做:
>
[I am a link][id_reference] [id_reference]: http://link.url现在我们在说话,对吗?唯一的问题是必须在任何页面中包括此循环。首先,我想到将其添加到布局中,因此它会使用相关布局自动添加到任何页面。问题在于,布局在jekyll中没有作为降级处理,因此参考文献实际上在DOM的底部可见。更糟糕的是,它们在我们的页面中不可用,因为它们没有被作为Markdown处理……太糟糕了。
> 但是,我们仍然可以做一些使它变得更好的事情。我们可以将此循环放在液体部分中,并将部分包含在每个页面中,而不是复制循环。说我们在_的文件夹中创建一个路由。
>然后在我们的页面中:
# _includes/route.html {% for route in site.data.routes %} [{{ route[0] }}]: {{ route[1] }} {% endfor %}
>
注意:您可以在页面中的任何位置都包含部分。您可以将其完全放在文件的最后一行中。--- layout: default title: "About us" --- <span><!-- Content about us --> </span> Go to our [GitHub repository][repository]. Or read the section dedicated to [Frequently Asked Questions][faq]. {% for route in site.data.routes %} [{{ route[0] }}]: {{ route[1] }} {% endfor %}最终想法
就是这样,我们已经在Jekyll Safe-Mode中砍了一些路由组件。现在这有什么缺点?有一些次要的:
>您不能在链接中添加锚点;如果需要
>您必须在所有页面中包括HTML部分,这可能很乏味(即使您认为这是YAML前部问题的扩展,您还是必须写的)。>在我的网站上使用jekyll有什么好处? ,博客意识,静态网站生成器,非常适合个人,项目或组织网站。它非常灵活,并支持自定义的URL结构,主题,插件等。另外,由于它会生成静态站点,因此与传统的CMS平台相比,它非常快速,安全。
>使用Jekyll构建的网站的一些示例? ,从个人博客到大型组织网站。一些示例包括官方的Jekyll网站,GitHub页面等等。您可以在官方的Jekyll网站上找到Jekyll网站的展示。
>
>如何优化SEO的Jekyll网站? > Jekyll提供了几个功能,可以帮助您优化SEO网站。这包括自定义URL结构,对元标签的支持以及生成XML站点地图的能力。此外,由于Jekyll会生成静态站点,因此它可以非常快,可以改善您网站的搜索引擎排名。以上是在jekyll中黑客路由组件的详细内容。更多信息请关注PHP中文网其他相关文章!