本文来自公众号:开发者码神 。 欢迎关注第一时间阅读精华文章。
Astro 是最适合构建像博客、营销网站、电子商务网站这样的以内容驱动的网站的 Web 框架。Astro 以开创了一种新的前端架构而闻名,与其他框架相比它减少了 JavaScript 的开销和复杂性。如果你需要一个加载速度快、具有良好 SEO 的网站,那么 Astro 就是你的选择。
如果你想要你的网站有好的排名,除了优质的内容,其次就是好的网站结构。
本文就是将市面上的好看的html静态模板转换为Astro格式。
在阅读本文之前,建议先通篇阅读Astro基础教程。
https://docs.astro.build/zh-cn/getting-started/
1、安装
npm create astro@latest
2、迁移全局样式
在src/styles/创建一个新文件(你需要先创建一个styles文件夹)。
把下面代码复制到你新创建的文件src/styles中:
3、迁移图片和js资源
1、在src下面创建图片文件夹、创建js文件夹
---
import '../styles/style.css';
import '../styles/colors/default.css';
import '../styles/responsive.css';
import '../styles/fontawesome-free-5.14.0-web/css/all.min.css';
import '../styles/icofont/css/icofont.css';
import '../styles/googleapos.css';
---
<img alt='img' src='src/images/demo/silverspies_avatar-60x60.png' class='avatar' height='60' width='60' loading='lazy'/></a>
<Footer />
<!-- end #footer -->
<!-- Footer Theme output -->
<script>
import "../js/custom.js";
import "../js/jquery.sticky-kit.js";
import "../js/masonry.min.js";
import "../js/jquery-3.6.0.min.js";
</script>
</body>
</html>
4、创建组件
分析一下网页,有哪些组件是复用的。
导航拦组件
- 创建一个新文件:
src/components/Navigation.astro
- 导入并使用
Footer组件
- 创建组件
- 导入组件
社交媒体组件
- 创建Social.astro
- 导入
Header组件
- 创建header组件
- 引入
5、创建布局
你现在仍然在每个页面上重复渲染一些 Astro 组件。是时候再次重构,创建一个共享的页面布局
基础而布局-BaseLayout
- 创建一个新文件:
src/layouts/BaseLayout.astro
(你需要首先创建一个layouts
文件夹)
将静态文件中的index中的通用部分放到这里,比如head,header、footer、js、css,并预留这样可以加载index网页的内容进入布局。
文章布局-MarkdownPostLayout
- 因为文章也是包含header和footer的,所有可以把之前的基础布局引入。
这里有个注意点,就是本地静态文件的路径要写绝对路径,不能写相对,如下
- 在看看文章页
因为我没打算用markdown写文章,所有就这里只放文章的内容,这里引入了我们刚刚创建的MarkdownPostLayout布局,这时候访问http://localhost:4321/posts/post-1,就能展示文章内容了。
6、动态展示文章列表
1、引入文章集合变量。
const allPosts = await Astro.glob('../pages/posts/*.md');
做循环
<img width="250" height="300" src={post.frontmatter.image.url} class="attachment-qefood-wp-thumbnail-blog-grid" alt="img" loading="lazy" /><a href="blog-post.html"></a>
2、这里可以把文章模块抽离成单独的文件,创建…/components/BlogPost.astro’,把内容传到组件渲染,这样其他地方引用也会很方便,比如下面的标签页搜索
7、生成标签页面
- 创建[tag].astro文件,src/pages/tags/[tag].astro
因为创建好了基础组件布局(BaseLayout),所有页面很好写,只要补充标签也主题内容就行,这里又能引用上面创建好的BlogPost组件,直接复用,一个标签页就出来了。
访问:http://localhost:4321/tags/番茄
标签搜索页会把番茄传入,并和所有文章的tags标签进行筛选,选出最终页
8、生成标签索引页
在tags下创建index.html,然后遍历所有文章去除tags标签即可
然后在首页挂上次标签主页即可
然后修改文章详情页中关于标签的部分(MarkdownPostLayout),添加链接
9、增加订阅源
Astro 提供了一个可自定义包,用于快速为你的网站添加一个 RSS 订阅源。
这个官方包会生成一个非 HTML 文档,其中包含有关你的所有博客文章的信息,可以被 Feedly、The Old Reader 等 订阅源阅读器(Feed Reader) 读取。每次重新构建你的网站时,该文档都会更新。
个人用户可以通过在订阅源阅读器中订阅你的订阅源,在你的网站上发布新博客文章时会收到通知,这使它成为一个受欢迎的博客功能。
- 安装
npm install @astrojs/rss
- 在
src/pages/
目录下创建一个名为rss.xml.js
的新文件。
- 在 Astro 的配置文件中设置
site
属性为你的网站自己的唯一 Netlify URL。
- 这个
rss.xml
文档只有在构建你的网站时才会创建,因此在开发过程中无法在浏览器中查看该页面。退出开发服务器,并运行以下命令,首先在本地编译你的网站,然后查看编译的预览:
npm run build
npm run preview