创建个人网站:Astro 初体验!(二)

Astro 是一个现代的静态网站生成器,它的目标是提供极快的加载速度、高性能和可维护性。如果你是一个前端开发者,正在寻找一个全新的构建网站的方式,那么你不容错过 Astro。在本文中,我们将探讨 Astro 的特点、使用方法,并演示如何开始使用 Astro 构建你的下一个项目。

什么是 Astro?

在开始之前,让我们先了解一下 Astro 是什么以及它为什么如此特殊。Astro 是一个静态网站生成器,但与传统的静态生成器不同,它允许你在需要的时候将部分页面转化为动态页面,同时保持整体性能。这意味着你可以拥有最佳的两个世界:静态站点的速度和动态站点的交互性。

开始使用 Astro

安装 Astro CLI

要开始使用 Astro,首先确保你已经安装了 Node.js 和 npm。

npm create astro@latest

这项命令完成后会自动进入项目创建向导:

选择项目模板

如上图所示,你可以选择三个模版之一,我这里选择Empty,生成的项目结构:

完善index.astro,这个页面将成为首页。

将完善后的index.astro文件中你认为 将会在关于页面,博客页面用到的相同的代码复制粘贴到一个在src文件夹下新建的layout布局文件中,并在你的 about.astro(关于页面), blog.astro(博客页面)中的frontmatter代码块导入并引用

在每个页面创建样式 或者 更好的选择:创建全局样式表(global.css)

你可以在每个页面的 .astro 文件中创建不同的样式,为各个页面添加好看的外表。同时,一个更好的选择是提取每个页面都应该显示的样式,并为这些样式创建一个 .css 文件 作为全局样式表,然后在每个页面的 .astro 文件中的代码块引入。同时,你也可以在各个页面中定义独有的样式以增加多样性。

增加MarkDown文件——开始写博客文章

在src文件夹中创建新的文件夹,并在其中编写 .md 文件,同样这里也有一个代码块(用--- ---包围)。要想了解具体的frontmatter代码块编写,可以访问官网网址:Markdown | Front Matter

这里给出几个选项:

title标题
pubDate发布日期
        description描述
author        作者
tags标签
layout布局文件地址

大家可以选择性地添加。

尝试运行

此时大致的框架已经编写完成,让我们来试试运行吧!

npm run dev

额,为什么会出现乱码呢?Astro 官网上说 Astro项目 默认使用 UTF-8字符集,而使用UTF-8字符集不应该会出现上述乱码,让我们按下 F12 ,打开开发人员工具,看看发生了什么事:

我们可以在页面的HTML源代码看到,这个HTML是自动生成的,而从这个源代码中,我们可以看出并没有生成:

<meta charset='utf-8'>

那这种情况应该如何解决呢?—— 创建MarkDown文件的LayOut文件(布局文件)。

为MarkDown文件创建布局文件

创建MarkdownPostLayout.astro文件,

---
const { pageTitle } = Astro.props;
---

<html lang="zh-cn">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <meta name="viewport" content="width=device-width" />
    <meta name="generator" content={Astro.generator} />
    <title>{pageTitle}</title>
  </head>
  <body>
    <h1>{pageTitle}</h1>
    <slot />
  </body>
</html>
这是一个常规的布局文件

并在你的 .md 文件的frontmatter代码块中引入这个布局文件:

layout: "../../layouts/MarkdownPostLayout.astro"

让我们再运行一遍:

npm run dev

可以看到我们的网页正常地显示了。

打开开发人员工具,我们可以看到生成的HTML源代码,与我们的布局文件如出一辙:

 博客文章的数据是布局文件的

<slot></slot>

 标签的位置插入的。

而布局文件中的代码块:

---
const { pageTitle } = Astro.props;
---

这里的 Astro.props 是 .md文件 代码块传来的数据,即我们在frontmatter中定义的数据,这里我们只使用里面的 title选项 作为我们的标题。

下面是我做的个人网站,如果对我做的网站感兴趣的话,可以到我的Github仓库中 Clone 下来:https://github.com/flaskbott/AstroLearning

可能不够好看,请大家多多包涵。

截图:

里面增加了霓虹元素。

结语

这次的Astro初体验感觉挺不错的,即使不使用官网丰富的模板(这些模板都很精美,很好看,大家可以访问官网看看),使用空模板来制作一个个人网站也是相当不错的。
Happy coding! 🚀
Astro 是一个令人兴奋的工具,可以帮助你构建快速、高性能的网站。它的灵活性和性能使其成为构建个人博客、企业网站或应用程序的理想选择。如果你想要了解更多关于 Astro 的信息,请查阅官方文档,并开始构建你的下一个项目吧! 
官方的Tutorial文档是个不错的学习文档,大家可以跟着做一下。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值