公众号旧文
为什么有了 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 只是让开发者不用每天手工烧火。