糯麦 NurMai

糯麦科技

/

新闻资讯

/

技术讨论

/

Astro:一种独具特色的前端框架

Astro:一种独具特色的前端框架

原创 新闻资讯

于 2023-09-26 09:05:13 发布

2419 浏览

进入前端领域如同沉浸在深深的海洋中,不持续学习真的会被时代淘汰!最近,Astro 发布了 3.0 版本,我怀着好奇的心态进行了了解,确实是一款出色的框架。Astro 在 GitHub 上已经获得了 35,000 以上的星,显然是备受瞩目的框架之一。它所倡导的“Astro 群岛”Web 架构模式也十分引人入胜。


Astro 是什么?

Astro 是一款集多功能于一体的 Web 框架,旨在构建快速且以内容为中心的网站。"以内容为中心"的定义是指那些内容丰富的网站,例如大多数营销网站、出版网站、文档网站、博客、个人作品集以及某些电子商务网站。在构建此类网站时,Astro 拥有一些独特的优势。


Astro 采用的是服务端渲染,与 Next.JS、SvelteKit、Nuxt、Remix 等服务端渲染框架相似。然而,与其他框架构建的单页应用程序(SPA)不同,Astro 构建的是多页应用程序(MPA),这也是 Astro 具备快速性的原因之一。此外,Astro 容易学习上手,不需要太多对新技术的压力。它原生支持 React、Preact、Svelte、Vue、Solid、Lit 等热门框架组件,并且其文档非常详细,通过逐步实例指导用户如何应用。


1.jpg


创建 Astro 项目

在使用 Astro 之前,请确保您的环境中安装了 Node.js 的版本不低于 18.14.1。


安装

# 使用 npm
npm create astro@latest
# 使用 pnpm
pnpm create astro@latest
# 使用 yarn
yarn create astro
# 使用 bun
bun create astro


启动服务

npm run dev
pnpm run dev
yarn run dev
bun run dev

下面是选用博客模板的效果:


2.jpg


Astro 语法

Astro 以.astro后缀命名,语法与 JSX 语法相似。

---
const pageTitle = "关于我";
const skills = ["HTML", "CSS", "JavaScript", "React", "Astro", "Writing Docs"]; // 列表
const show = false; // 条件
---

<html lang="zh-cn">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width" />
    <meta name="generator" content="{Astro.generator}" />
    <title>Astro</title>
  </head>
  <body>
    <h1>{ pageTitle }</h1>
    <ul>
      {skills.map((skill) => <li>{skill}</li>)}
    </ul>
    {show && <div>Astro 学习</div>}
  </body>
</html>

熟悉 JSX 语法的应该很快就上手了,不过也会有一点差异。

1. Astro 中 HTML 属性使用标准的短横线命名,而 JSX 中是驼峰式命名;

<!-- JSX -->
<div className="box" dataValue="3" />
<!-- Astro -->
<div class="box" data-value="3" />

2. 组件不要求在单个标签<div>或<>内;

3. Astro 中可以使用标准的 HTML 注释或 JavaScript 风格的注释。

CSS 样式可以直接嵌套在 HTML 模板内。

<html lang="zh-cn">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>{pageTitle}</title>
    <!-- CSS -->
    <style>
      h1 {
        color: purple;
        font-size: 4rem;
      }
    </style>
  </head>
</html>


Vue 集成

Astro 支持多种不同前端框架的集成,以 Vue 为例。


安装 @astrojs/vue

# 使用 NPM
npx astro add vue
# 使用 Yarn
yarn astro add vue
# 使用 PNPM
pnpm astro add vue
# 使用 bun
bun astro add vue

下面是我安装过程的截图,它会自动帮你添加配置和依赖。


3.jpg


我写了一个简单的 Vue 组件,然后导入到 Astro 的页面内。

<script setup>
  const content = 'Hello World!'
</script>

<template>
  <div>{{ content }}</div>
</template>

如图,正常显示 Vue 组件内容。


4.jpg


Astro 群岛

Astro 支持集成不同的 UI 框架,比如 React、Svelte 和 Vue。这一特性源自 Astro 架构模式的创新,被称为“Astro 群岛”或“组件群岛”。这种“群岛架构”最早是由 Etsy 前端架构工程师 Katie Sylor-Miller 在 2019 年的一次会议上提出的。


5.jpg


“Astro 群岛”指的是将交互性的 UI 组件嵌入到静态 HTML 中的技术。一个页面上可以有多个岛屿,每个岛屿都是独立呈现的。你可以将这些岛屿想象成在一个由静态(不可交互)HTML 页面中的动态岛屿。这个概念有些类似于我们常说的“微前端”。

web前端

网站开发

小程序开发

阅读排行

  • 1. 几行代码就能实现Html大转盘抽奖

    大转盘抽奖是网络互动营销的一种常见形式,其通过简单易懂的界面设计,让用户在游戏中体验到乐趣,同时也能增加商家与用户之间的互动。本文将详细介绍如何使用HTML,CSS和JavaScript来实现大转盘抽奖的功能。

    查看详情
  • 2. 温州小程序开发市场调研

    随着互联网技术的不断发展,传统市场正面临着数字化转型的挑战和机遇。温州作为中国的重要商业城市之一,其传统市场具有独特的特点和运营模式。本文将从温州传统市场的特点出发,探讨如何开发出适合温州市场的小程序系统。

    查看详情
  • 3. 微信支付商户申请接入流程

    微信支付,是微信向有出售物品/提供服务需求的商家提供推广销售、支付收款、经营分析的整套解决方案,包括多种支付方式,如JSAPI支付、小程序支付、APP支付H5支付等支付方式接入。

    查看详情
  • 4. 微信小程序中父子组件相互调用详解

    在微信小程序中,组件化开发是一种重要的开发模式,它能够将复杂的界面拆分成多个独立的组件,使代码更容易维护和扩展。在组件化的开发中,父子组件之间的相互调用和传参是常见的需求。

    查看详情
  • 5. 浙江省同区域公司地址变更详细流程

    提前准备好所有需要的资料,包含:房屋租赁合同、房产证、营业执照正副本、代理人身份证正反面、承诺书(由于我们公司其中一区域已有注册另外一公司,所以必须需要承诺书)

    查看详情