![](/img/trans.png)
[英]How do I include global JS variables in JSP, before I include external JS using cq:include?
[英]How do I include liquid/global variables defined using Jekyll in a Javascript file?
目前我正在使用 Jekyll 構建一個網站,其中包含 markdown 和 html 文件。 例如,如果我想使用在 html/md 的“_data”文件夾中定義的變量,我可以簡單地使用 {% for item in site.data.XX %}。 我的問題是,在 Javascript 中到達 Jekyll 變量(例如站點)時,正確的語法是什么?
我在我的 JS 文件中使用 frontmatter。 我應該在那里包含一些東西還是進行導入?
我試過了:
但我只是收到錯誤“未定義站點”或“未捕獲語法錯誤:無效或意外令牌”。
我剛剛發現了問題(你之前解決了大衛): Jekyll:liquid tag inside javascript
添加時似乎可以正確打印(沒有語法錯誤):
console.log({{ site.collections | jsonify }})
任何帶有front-matter的文件都會被jekyll處理...
例如: anyfile-with-front-matter.js
---
title: my js file
---
console.log({{page.title}});
console.log({{site.description}});
...,除非它被“忽略”。
默認:
要使包含的文件可用於處理,您可以添加包含文件夾以在_config.yml中包含數組。
include:
- node_modules
- _myfolder
這是我的猜測。
Jekyll 是一個靜態站點生成器,基本上只運行一次。 它唯一一次連續運行是當您調用以下任一命令時: jekyll jekyll serve
或jekyll build --watch
。
另一方面,JavaScript 腳本旨在針對給定頁面的每個請求運行。 除非有運行 Jekyll 的服務器,否則您的腳本將無法使用所謂的全局變量。
但是,話雖如此,您仍然可以使用 Jekyll 變量來生成static JS 腳本。 例如,考慮以下內容:
./_data/navigation.yml
- label: Home
url: "/"
- label: About Us
url: "/about/"
./_includes/script-template.html
<script>
{% for entry in site.data.navigation %}
console.log('{{ entry.label }}');
{% endfor %}
</script>
./test.html
---
---
<body>
{% include script-template.html %}
</body>
如果您要構建包含上述文件的站點,生成的 html 文件./_site/test.html
將如下所示:
<body>
<script>
console.log('Home');
console.log('About Us');
</script>
</body>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.