مقالات

Astro 7.2 | Astro


Astro 7.2 اینجاست! ویژگی هدر یک ساخت استاتیک افزایشی آزمایشی است که به Astro اجازه می‌دهد تا از بازسازی صفحات از پیش رندر شده‌ای که کد و داده‌های آنها از آخرین ساخت تغییر نکرده‌اند، صرفنظر کند. این نسخه همچنین راهی برای انصراف از پشتیبانی جلسه، حالت پس‌زمینه را اضافه می‌کند astro previewو یک راه کوچکتر برای اشاره به یک ثبت کننده کاربر.

بررسی کنید چه چیزی در این نسخه جدید است:

برای ارتقاء یک پروژه موجود، از خودکار استفاده کنید @astrojs/upgrade ابزار CLI. از طرف دیگر، می توانید با اجرای دستور ارتقاء برای مدیر بسته خود، به صورت دستی ارتقا دهید:

pnpm upgrade astro --latest

yarn upgrade astro --latest

تجربی: ساخت های استاتیک افزایشی

Astro اغلب برای ایجاد سایت های ثابت بزرگ استفاده می شود: اسناد، وبلاگ ها و سایت های بازاریابی که می توانند در هزاران صفحه اجرا شوند. در این سایت ها چندین مسیر پویا وجود دارد مانند [...slug].astro، معمولاً اکثر صفحات را نشان می دهد که هر کدام یک رکورد از مجموعه ای از محتوا را به تصویر می کشند. با رشد محتوا، بیلد نیز افزایش می یابد، حتی زمانی که یک بیلد تنها چند صفحه را تغییر می دهد.

Astro 7 اکنون با Rolldown و خط لوله Markdown مبتنی بر Rust، مرحله بسته بندی را بسیار سریعتر کرده است. آنچه باقی می ماند مرحله تولید است، جایی که Astro هر مسیر از پیش رندر شده را در HTML ارائه می کند. تا به حال، Astro هر صفحه استاتیک را در هر بیلد دوباره رندر می کرد، حتی زمانی که چیزی در آن صفحه تغییر نکرده بود. استاتیک افزایشی اهداف را در این مرحله می سازد.

آن را با experimental.incrementalBuild پرچم:

import { defineConfig } from 'astro/config';

export default defineConfig({

مسیر با بازگشت یک cacheKey برای هر بار از getStaticPaths(). را cacheKey هر زمان که داده های مورد استفاده برای رندر این مسیر تغییر کند باید تغییر کند. برای مجموعه های محتوا، entry.digest مناسب است زیرا هر زمان که محتوای رکورد تغییر کند تغییر می کند:

import { getCollection } from 'astro:content';

export async function getStaticPaths() {

const posts = await getCollection('blog');

return posts.map((post) => ({

params: { slug: post.id },

const { post } = Astro.props;

را cacheKey داده های شما را پوشش می دهد. Astro سمت کد را برای شما مدیریت می‌کند: در زمان کامپایل، نمودار کامل ماژول هر مسیر، از جمله الگو، طرح‌بندی‌ها، مؤلفه‌ها، دارایی‌های وارد شده و کد بسته‌ای را که دانلود می‌کنند، هش می‌کند. اگر هر یک از اینها تغییر کند، هش تغییر می کند و هر مسیر در مسیر دوباره ارائه می شود. یک صفحه فقط زمانی مورد استفاده مجدد قرار می گیرد که هم این ماژول و هم هش آن cacheKey با ساخت قبلی مطابقت دارد.

مسیرهای بدون الف cacheKey همیشه پیش‌نمایش می‌شوند، بنابراین انتخاب مسیر یک تصمیم صریح است و پروژه‌های موجود دقیقاً همانطور که امروز هستند ساخته می‌شوند تا زمانی که شما روش دیگری را انتخاب کنید. کش زنده است cacheDir (به طور پیش فرض node_modules/.astro/) به لایه محتوا و حافظه پنهان تصویر به طوری که سیستم های CI که قبلاً از این دایرکتوری پشتیبانی می کنند می توانند مجدداً از آن در پیاده سازی ها استفاده کنند.

این یک ویژگی اولیه و آزمایشی است و می‌خواهیم عملکرد آن را در سایت‌های واقعی بشنویم. برای خواندن طرح کامل یا ارائه بازخورد، به RFC افزایشی استاتیک مراجعه کنید.

امتناع از پشتیبانی جلسه

هنگامی که یک درایور جلسه پیکربندی می شود، Astro زمان اجرا جلسه را در خروجی SSR شما جمع می کند. این همان چیزی است که شما می خواهید اگر استفاده کنید Astro.session، اما پروژه هایی که هرگز جلسات را لمس نمی کنند، همچنان برای تجزیه و تحلیل کد در هر شروع سرد هزینه پرداخت می کنند.

Astro 7.2 یک را اضافه می کند session: false گزینه انصراف کامل:

import { defineConfig } from 'astro/config';

export default defineConfig({

با session: false، آداپتورهای Cloudflare، Netlify و Node به طور پیش فرض از اتصال درایور جلسه خود صرف نظر می کنند و زمان اجرای جلسه از بسته حذف می شود. Astro.session است undefined، که یک حالت است، نوع آن قبلا حل شده است، بنابراین وجود دارد if (Astro.session) بررسی ها بدون خطای جدیدی برای پردازش به کار خود ادامه می دهند. برای جزئیات بیشتر به غیرفعال کردن جلسات در اسناد مراجعه کنید.

برای بهره بردن نیازی به تنظیم پرچم ندارید. Astro اکنون زمان اجرای جلسه را از هر پروژه ای که در آن هیچ درایوری مرتبط نیست، صرف نظر از اینکه باشد، تکان می دهد session: false، نه session اصلاً پیکربندی یا a session سایت بدون راننده پروژه هایی که یک درایور را پیکربندی می کنند هیچ تغییری نمی بینند.

حالت پس زمینه برای تجسم ستاره

Astro 7 حالت پس زمینه را برای astro dev بنابراین شما (یا یک عامل کدنویسی هوش مصنوعی) می توانید سرور توسعه را راه اندازی کنید، آن را در حال اجرا نگه دارید و با دستورات بعدی آن را مدیریت کنید. Astro 7.2 همان را به ارمغان می آورد astro preview:

astro preview --background

سرور پیش نمایش در پس زمینه اجرا می شود و در فایل گزارش خود می نویسد. سپس می توانید آن را بررسی کنید یا با دستورات فرعی مناسب آن را خاموش کنید:

astro dev و astro preview ماشین پس‌زمینه یکسانی را به اشتراک می‌گذارند، بنابراین این دو به طور مداوم رفتار می‌کنند، از جمله حالت پس‌زمینه خودکار زمانی که یک مامور در حال رانندگی است.

نقاط ورودی لاگر نسبی

Astro 7.1 به شما این امکان را می دهد که با ارسال URL به یک لاگر سفارشی پیکربندی کنید logger.entrypoint. Astro 7.2 پشتیبانی از یک رشته نسبی ساده را اضافه می کند، که با روشی که سایر گزینه های سبک نقطه ورودی کار می کنند مطابقت دارد:

import { defineConfig } from 'astro/config';

export default defineConfig({

entrypoint: './src/custom-logger.js',

قالب URL هنوز کار می کند. این یک راحتی کوچک است، بنابراین شما مجبور نیستید دست دراز کنید new URL(..., import.meta.url) زمانی که یک مسیر نسبی تمام چیزی است که شما نیاز دارید.

سایر پیشرفت ها

برای لیست کامل رفع اشکال و بهبودهای جزئی، تغییرات کامل را ببینید.

تیم اصلی Astro عبارتند از:

الکساندر نیبور، آرماند فیلیپو، کریس سویتین بانک،
امانوئل استوپا،
اریکا، فلوریان لوفور، فرد شات،
سلام،
لویی فراز، مت کین، متیو فیلیپس،
روبن ردیف،
سارا رینزبرگر، و ایان توماس.

تشکر ویژه از همه کسانی که با کد، اسناد، بررسی‌ها و آزمایش‌ها به Astro 7.2 کمک کردند، از جمله:

آدام چالمیان، آلیسون نونس، آنوج راجا، آرالوما، بری، بیورن لو، ددالوس، دانیلو استرلا، دیوید پاین، داوید گاول، دیپانشو88، الدار داداشوف، امرسون لوپس، فلمون فکادو، گری ریچی، هاکوران، هاشم خان، ژووونج، ای-ام، ای-آم Lazizbek Ergashev، Louis Escher، Melih Arık، Mochammad Farros Fatchur Roji، Nick Snyder، Ocavue، Oliver Speir، Ondřej Úlehla، Paul valladares، Paulrudy، QVinto، Roman، Sebastian Beltran، Tarik، thelazyxa

امیدواریم از Astro 7.2 خوشتان بیاید. اگر به مشکلی برخوردید یا می‌خواهید بازخورد خود را به اشتراک بگذارید، لطفاً در Discord به ما بپیوندید، در GitHub پست کنید، یا با Bluesky تماس بگیرید. توییترو ماستودون




Source link

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

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

همچنین ببینید
بستن
دکمه بازگشت به بالا