# 前后端分离
强大的分裂感。现在使用 React 开发业务,但是这里边 Component 我来写,你来负责 CSS。
# 前后端未分离时开发方式
- controller
- user
- views
- user
app.get('/users/:userId', ctx => {
ctx.render('views/user.html', {
userId: ctx.userId
})
})
<% include header.html %>
<body>
<div class="user">
<%- userId %>
</div>
</body>
# 前后端未分离时的部署方案
# 前后端分离
app.get('/api/users/:userId', ctx => {
ctx.json({
id: userId
})
})
<body>
<div class="user"></userId>
</body>
<script>
const userId = getUserIdByURL(location.href)
fetch(`/api/users/${userId}`)
.then(res => res.json())
.then(user => {
document.getElementById('user').innerText = user.id
})
</script>
由于 set-cookie 的需要,/etc/host
local.shanyue.tech 127.0.0.1
# 前后端分离后部署方案
静态资源服务器
$ serve .
$ http-server .
在线上使用性能更加强大的 nginx
。
server {
listen 80;
server_name shanyue.tech;
location / {
# 使用 nginx 托管静态资源
try_files $uri $uri/ /index.html;
}
}
# Node 中间层: 进一步前后端分离
BFF
,Backend for Frontend
,狭义上来讲为前端工程师使用 Node Server 所写的介于前端与后端的部分。
Client -> Server
Client -> BFF -> Server
- 鉴权
- 缓存
- 限流
- 代理
- 日志