几行代码和一些 Alpine 指令可以快速完成这项工作。
我最近想在我的个人网站上嵌入我的媒体提要。 我也一直想尝试一下 Alpine.js,所以这似乎是一个完美的地方。
Alpine 很小,实际上它的网站详细介绍了它的功能,如下所示:
Alpine 是15 个属性、6 个属性和2 个方法的集合。
听起来简单易学。 让我们尝试制作一个带有模板部分的 HTML 页面,以了解我们希望如何布局提要中的每个帖子。
<!DOCTYPE html><html><head> <title>Fetch Posts with Alpine.js</title> <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script></head><body> <div x-data="postList()" x-init="init()"> <h1>Medium Posts</h1> <ul> <template x-for="post in posts"> <li> <a :href="post.link" target="_blank" x-text="post.title"></a> </li> </template> </ul> </div> <script src="js/posts.js"></script></body></html>
请注意,我们已经在使用我们的第一个 Alpine 属性 . 主要的 div 元素使用 x-data,它调用一个函数返回我们的主要数据结构。 我们稍后会看一下,但足以说明,我们的子元素将可以访问它。 x-init 属性也用于指定一个函数,在启动时调用的相同数据结构中。
在 temple 元素上,我们使用 x-for 属性来指定我们将如何循环 我们的职位。 a 元素包括用于将值绑定到 href 属性的分号速记。 它还包括 x-text 属性,用于设置元素的文本。
接下来,让我们制作我们的 JavaScript 文件。 我们将定义返回数据结构的postList函数。 它将包括我们迭代的posts属性,以及我们将在其中获取 Medium 提要的init函数。
function postList() { return { posts: [], async init() { const response = await fetch("https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/@devwanderer"); const data = await response.json(); this.posts = data.items.map(item => ({ title: item.title, link: item.link })); } };}
vvv>如果您查看获取 URL,您会发现一些有趣的事情。 Medium 为所有作者提供了一个 RSS 提要链接。 它看起来像这样:2当然,您将把
用户名替换为您自己的,就像我在示例代码中所做的那样。
另一件有趣的事情是,我没有直接获取该 URL 并获取 RSS XML 内容,而是将其作为参数传递给另一个名为 rss2json 的服务。 这是一个在线转换器服务,允许我们检索 JSON 而不是 XML。 这使得解析和处理更加容易。一旦我们的函数返回我们的对象,其中包含我们的帖子数组,Alpine 就会完成剩下的工作。 它遵循我们的 x-for 说明并为我们提要中的每个帖子填充我们的模板。 唯一留给您的是添加您自己的样式并将其与您网站的其余部分的外观和感觉相结合。结论在没有任何 Alpine 经验的情况下,我能够解决这个问题 用最少的代码快速解决问题。 我发现这个库很容易使用,可以完成这个基本任务,我期待很快在一些更大的挑战中尝试它。
版权声明:xxxxxxxxx;
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态