推荐阅读
"前端是个娱乐圈, 成天发明各种概念。"
"现在搞的服务端渲染, 那不就是炒 php 的冷饭?"
"前端千辛万苦爬到山顶, 却发现 phper 早已等候多时。"
本篇代码均为伪代码, 且不严谨不完善, 仅为示例
纯静态 html
XXX 博客欢迎你
通用网关接口 CGI
print("""
XXX 商城欢迎你
<form onsubmit="/buy">
<input name="count" />
<button onclick="buy">买买买</button>
</form>
""")
js & php
欢迎 <?php echo $_POST["fname"]; ?>! <br>
<script>
function plus(a, b) {
alert(`和为 ${a + b}`)
}
<script>
<input name="a" />
<input name="b" />
<button onclick="plus">相加</button>
在此之前, 前端大多不能独立部署, 代码组织也受限于后端, "戴着镣铐跳舞"。
ajax
js 能从服务端动态获取数据; 标志着前端有能力从代码层面脱离后端独立部署, 独立完成需求;
<script>
function buy(count) {
fetch(`/buy?count=${count}`)
}
</script>
<input name="count" />
<button onclick="buy">买买买</button>
MVVM: react / vue / angular 等
const unitPrice = 10
const count = 0
// 之前
function onClick(newCount) {
count = newCount
const total = unitPrice * count
countElement.innerText = `个数: ${count}`
totalPriceElement.innerText = `总价: ${total}`
}
// 之后
const total = unitPrice * count
function onClick(newCount) {
count = newCount
}
return (
<div>
<div>个数: {count}</div>
<div>总价: {total}</div>
</div>
)
(4.1) 前端路由 (单页面)
前端越来越简单, 能做的事情越来越多, 干脆一把梭, "路由也交给前端处理吧"; 前端统一组织代码, 切换页面本质上是组件替换, 能保留子组件状态, 能实现页面转场动画, 跳转还很快, 简直"一本万利"。
if (pathname === '/a') {
return <PageA />
}
if (pathname === '/b') {
return <PageB />
}
服务端渲染 ssr
// server
const config = await fetch('/config')
if (config.aaa) {
return <div>aaa</div>
}
if (config.bbb) {
return <div>bbb</div>
}
rsc (react server component)
即使如 ssr, 也需要生成一整个 html, 然后发给客户端, 如果我们能流式传输, 服务端一边处理, 一边响应客户端呢? 那速度不得起飞?
// 真实代码远不是这样, 这写法甚至是错误的, 只为简述, 理解概念
const aaa = await fetch('/api/aaa')
const bbb = await fetch('/api/bbb')
const ccc = await fetch('/api/ccc')
return (
<div>
<div>{aaa}</div>
<div>{bbb}</div>
<div>{ccc}</div>
</div>
)
如非特别声明,本站作品均为原创,遵循【自由转载-保持署名-非商用-非衍生 创意共享 3.0 许可证】。
对于转载作品,如需二次转载,请遵循原作许可。