برنامه نویسی

راه‌انداز وبلاگ Astro v5 – انجمن DEV

من اخیرا وبلاگ یکی از دوستانم را به Astro v5 منتقل کردم. انگیزه انتخاب Astro پشتیبانی درجه یک آن از محتوای markdown بود.

Astro فقط با حداقل مقدار دیگ بخار، موارد اولیه علامت گذاری را تأیید می کند، صفحات ایستا را برای هر پست ایجاد می کند و تمام تصاویر پست های شما را بهینه می کند.

https://astro-v5-blog-starter.pages.dev/blog/first-post

مارک داون

---
date: '2024-12-01'
title: 'My First Blog Post'
image:
  src: '../images/birch-trees.webp'
---

## Markdown is

- a lightweight markup language
- for decorating plain text
- with things like headings, lists, links, and blockquotes
- making minimal assumptions about formatting.

#### Here is an inline image:

![sunset](../images/sunset-cambridge.jpg)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

HTML

مخزن استارت

در اینجا نتیجه استخراج این ویژگی های کلیدی در یک شروع وبلاگ جدید است. مخزن شامل طراحی زیادی نیست – فقط پیکربندی و حداقل مقدار کد.

https://github.com/jldec/astro-v5-blog-starter

پروژه شامل:

ساختار فایل

├── README.md
├── astro.config.mjs
├── package.json
├── public
│   ├── _headers
│   ├── _redirects
│   └── favicon.svg
├── src
│   ├── assets
│   │   └── astro.svg
│   ├── components
│   │   └── Welcome.astro
│   ├── content
│   │   ├── blog
│   │   │   ├── 2nd-post.md
│   │   │   └── first-post.md
│   │   └── images
│   │       ├── birch-trees.webp
│   │       └── sunset-cambridge.jpg
│   ├── content.config.ts
│   ├── layouts
│   │   └── Layout.astro
│   ├── pages
│   │   ├── blog
│   │   │   └── [id].astro
│   │   └── index.astro
│   └── styles
│       └── global.css
├── tailwind.config.mjs
├── tsconfig.json
└── wrangler.toml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وبلاگ مبتنی بر Markdown

پست‌های وبلاگ Markdown در src/content/blog زنده هستند.

طرح واره برای blog مجموعه در content.config.ts تعریف شده است. این فایل همچنین شامل توابع کاربردی برای مرتب سازی و فیلتر کردن پست ها می باشد. به عنوان مثال اگر draft پرچم تنظیم شده است، یک پست فقط در طول توسعه برنامه گنجانده می شود، اما با ساخت تولید منتشر نمی شود.

صفحه اصلی در src/pages/index.astro تعریف شده است که پست ها را به ترتیب تاریخ فهرست می کند.

پست ها توسط مسیر پویا src/pages/blog/ ارائه می شوند[id].astro. برای اینکه Astro صفحات استاتیک را از قبل رندر کند، مسیرهای پویا a را صادر می کنند getStaticPaths تابعی که لیستی از پارامترها و props را برای هر مسیر رندر شده برمی گرداند.

src/pages/blog/[id].astro

---
import { Image } from 'astro:assets';
import { getCollection, render } from 'astro:content';
import { filterAllPosts } from '~/content.config';
import Layout from '~/layouts/Layout.astro';

export async function getStaticPaths() {
  const posts = await getCollection('blog', filterAllPosts);
  return posts.map((post) => ({
    params: { id: post.id },
    props: { post },
  }));
}

const { post } = Astro.props;
const { Content } = await render(post);
---

<Layout title={post.data.title}>
  <Image
    src={post.data.image.src}
    alt={post.data.image.alt || ''}
    class="w-full h-60 object-cover object-bottom"
  />
  <article class="prose mx-auto p-4">
    <h1>{post.data.title}h1>
    <a href="https://dev.to/"><< Backa>
    <Content />
  article>
Layout>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بهینه سازی تصویر

الف src مسیر و alt متن را می‌توان برای تصاویر به صورت نشانه‌گذاری frontmatter یا درون خطی در نشانه‌گذاری اعلام کرد.

اینها به داخل منتقل می شوند مؤلفه ای که هر تصویر را بررسی می کند و تولید می کند برچسب ها با width و height ویژگی ها، در نتیجه تغییرات طرح بندی در مرورگر را کاهش می دهد.

تصاویر به فرمت webp تبدیل شده و در آن ذخیره می شوند dist/_astro با نام های منحصر به فرد (قابل ذخیره سازی) در طول فرآیند ساخت.

انتشار در صفحات Cloudflare

صفحات Cloudflare از ساختار فایل برای تعیین اینکه آیا مسیرها با اسلش های انتهایی خاتمه می یابند یا خیر استفاده می کند. برای جلوگیری از اسلش های دنباله دار، ساخت را برای تولید پیکربندی کنید .html فایل ها به جای /index.html.

آداپتور @astrojs/cloudflare برای سایت های استاتیک مورد نیاز نیست.

نتیجه گیری

Astro v5 یک انتخاب عالی برای یک وبلاگ دارای نشانه گذاری است، تا زمانی که با انجام تعمیرات گاه به گاه برای به روز رسانی وابستگی ها خوب باشید.

در اینجا چند ایده برای بهبودهای آینده این استارت وجود دارد:

  • نقشه سایت
  • جزء منو برای دسکتاپ و موبایل
  • فونت های زیباتر
  • نمادهای پیوندهای اجتماعی

امیدوارم این استارتر برای شما مفید باشد. لطفاً اگر بازخورد یا پیشنهادی دارید با X تماس بگیرید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا