公众号旧文

为什么有了 HTML/CSS/JS,还需要 Astro?

作者:胖子阅读 —

浏览器最终不就是看 HTML、CSS 和 JavaScript 吗?

那我直接用记事本写 HTML 不就行了?

为什么还需要 Astro、Vue、React 这些框架?

这个问题触及了前端开发工具存在的根本原因。

答案是:

HTML、CSS、JavaScript 是做网页的原材料,

而 Astro 是帮助你更高效生产网页的工具。

就像米、菜、水可以直接做饭,但是为什么还需要电饭锅?

一、先理解网页的本质

不管现在前端技术发展到什么程度,浏览器最终认识的东西永远只有:

HTML
CSS
JavaScript

浏览器不会认识:

Astro
Vue
React
Angular

比如你访问:

https://example.com

服务器返回:

<html>
<head>
<title>
我的网站
</title>
</head>
<body>
<h1>
Hello World
</h1>
</body>
</html>

浏览器看到 HTML,解析。

看到 CSS,渲染样式。

看到 JavaScript,执行逻辑。

最后显示页面。

所以:

网页最终产品
        ↓
HTML + CSS + JS

这是永远不变的。

二、既然这样,为什么不用记事本写?

事实上,完全可以。

比如一个简单个人主页:

index.html
style.css
script.js

HTML:

<h1>
我的博客
</h1>
<p>
欢迎来到我的网站
</p>

CSS:

h1
 {
    color:
red
;
}

JavaScript:

alert
(
"hello"
);

然后:

nginx
   |
   ↓
index.html
   |
   ↓
浏览器

网站就运行了。

甚至完全不需要:

  • Node
  • npm
  • Astro
  • Vue
  • React

那么问题来了:

为什么还需要 Astro?

三、问题不是网页做不出来,而是维护成本

假设你的网站只有一个页面:

index.html

手写非常舒服。

但是网站慢慢发展:

首页
博客
文章列表
关于我
服务器状态
友情链接
联系我们

变成:

index.html
blog.html
about.html
server.html
contact.html

问题来了。

每个页面都有:

导航栏:

<header>
首页
博客
关于
</header>

底部:

<footer>
版权所有
</footer>

如果一天你想修改导航:

增加:

服务器监控

怎么办?

你需要打开:

index.html
blog.html
about.html
server.html
contact.html

全部修改。

这就像你每天烧柴做饭。

今天加一点盐,你要重新砍柴,重新点火,重新烧一遍。

四、Astro 就像电饭锅

对应关系:

现实 前端
米、菜、水 HTML、CSS、JS代码
自己砍柴、生火做饭 手写 HTML 页面
电饭锅 Astro
煮好的米饭 生成后的 HTML 文件
端饭给客人 Nginx 返回网页

注意:

电饭锅不是饭。

Astro 也不是网页。

电饭锅做的是:

把:

米
水
调料

经过加工变成:

米饭

Astro 做的是:

把:

组件
数据
模板
代码

经过构建,变成:

HTML
CSS
JS

五、Astro 最大价值:组件化

比如你的网站有一个导航,

以前:

每个 HTML:

<nav>
首页
博客
关于
</nav>

复制十次。

Astro,创建:

components/Header.astro

里面:

<nav>
首页
博客
关于
</nav>

页面:

只写:

<Header />

以后修改,只改:

Header.astro

所有页面一起变化。

这就是不再重复劳动。

六、Astro 帮你批量生产网页

比如博客。

手写,你需要:

article1.html
article2.html
article3.html

几十篇文章。

Astro:

你写:

posts/
hello.md
linux.md
docker.md

然后自动生成:

blog/hello.html
blog/linux.html
blog/docker.html

手写代码就像一个一个包饺子。

而 Astro 则是生产流水线。

七、为什么 Astro 生成后还需要 Nginx?

这里容易混淆。

Astro 负责生产网页

Nginx 负责发送网页

线上运行的时候,甚至没有 Astro。

因为饭已经做好了,厨房可以关门。

九、什么时候需要 Astro?

不是所有网站都需要。

例如:

一个页面:

个人介绍
联系方式
二维码

直接:

index.html
style.css

足够。

总结

HTML/CSS/JS 是做饭的原材料,Astro 是电饭锅,没有电饭锅也能做饭,但当你每天要做很多饭、不同口味的饭时,电饭锅会让整个过程简单、稳定、可维护。

最终端给用户吃的,永远还是:

HTML
CSS
JavaScript

Astro 只是让开发者不用每天手工烧火。