关于前后端分离的理解。

2016-05-25 10:25:12 +08:00
 hujianxin

大家好,我是一个刚入门的后端程序员(算是吧)。使用 django 开发了两个简单的网站,最近实验室有一个小任务,我想借着这个机会了解一下前后端分离的技术,要不然就真的太落伍了。

关于前后端分离,我一直没有一个清楚的概念,自己心里有一些想法,但是非常不自信。

所以,我在下面说一下自己的理解,希望有经验的大哥帮忙指教一下。

第一类,通过 nodejs 作为一个中转站, nodejs 虽然运行在服务器上,但是它处理的是前端显示的业务,例如路由,所以它是前端的一部分,后端使用其他的语言来处理数据问题,然后与 nodejs 通信。 第二类,通过前端框架来实现显示逻辑,例如路由,读取 api 等,这些任务都是浏览器来完成的。然后后端用其他任何语言来提供前端所需要的 api 。

上面是我自己的理解,望指正。

14068 次点击
所在节点    程序员
64 条回复
BOYPT
2016-05-25 16:02:42 +08:00
好吧你们赢
我原来默认 前端=web 前端,你们说的前端是更哲学的前端,我也没反驳过谁,只是在说不同的东西。
visonme
2016-05-25 16:12:37 +08:00
我理解的是
前端是站在用户的角度去思考问题的
后端是站在业务的角度去思考问题的

至于中间怎么去实现,怎么划分层次那就是架构和开发的事情了

node 可以作为中转,但是说前端不合适
类似 web ,我们说前端,到底什么是前端,其实就是依据用户需求架构的一个 view ,是静态的,用于系统和用户的交互以及提供输入输出接口
dphdjy
2016-05-25 16:28:33 +08:00
各种业务“前端”定义都不一样,加上互联网很多微小初创,前端更趋向于全栈,在规范化的公司里面,前端还是各种 team 的交叉,所以别讨论前端定义了~
看需求能上就行 XD

在此列举一些不完整的交叉范围
1. 设计师(UID/UED 等
2. 程序员(转化设计原案到 Web 语言,并且解决不同环境的兼容性和性能优化
3. 产品经理(服务的整体设计,风格等

楼上的 Android/iOS 等移动平台的前端,也是上述组成,但是一般程序员也同时负责应用其他部分开发和调优,网络服务的客户端,后端应该是服务器,应用整体都属于前端,本地应用来说可能界定就按照模块开发时候的视图层来确定

(一家之言
lyoe
2016-05-25 18:59:20 +08:00
你说的这种叫 Backends For Frontends ,是前后端分离的一种模式。
hujianxin
2016-05-25 19:21:23 +08:00
@lyoe 那总共有集中模式呢
ooTwToo
2016-05-25 19:46:16 +08:00
@BOYPT 请不要把前端说成前台。变味了
ooTwToo
2016-05-25 19:47:48 +08:00
@chairuosen 借问下,真正前后端分离,前端请求 API 岂不跨域了?
chairuosen
2016-05-25 19:50:16 +08:00
@ooTwToo 恩,可以跨域啊
mactaew
2016-05-25 20:00:29 +08:00
同小白,路由已经是后端了吧。

简单来说就可以这样,后端(框架也好,白手也好)完成业务逻辑之后,全部写成 RESTful 的 API 。然后前端就用 HTML + CSS + JavaScript 来做,前两者用来做视觉,后者用来做互动效果以及调用 API 与后端通信。

自己用过 CI + RESTful 库做后端,然后 Bootstrap 写样式,然后 jQuery 负责互动以及 Ajax 后端通信。供参考
hujianxin
2016-05-25 20:02:08 +08:00
@mactaew cl 是指 common lisp 吗?
mactaew
2016-05-25 20:04:07 +08:00
@hujianxin Sorry ,没说清楚。 CodeIgniter 。一个 PHP 的 MVC 开发框架,逻辑清晰,个人认为比 ThinkPHP 好上手。如果你是 PHPer ,可以试试。
strayberry
2016-05-25 20:46:29 +08:00
可以多理解下 MVC ?
jin5354
2016-05-25 22:09:34 +08:00
“前后端分离”主要指“浏览器端开发与服务器端开发分离”,意义在于让前端工程师能够最大限度的不依赖后端工程师进行开发,要求前后端解耦彻底,仅依靠 API 使用 JSON 传递数据。

理想情况下:
后端工作仅包括:提供 API ,输出数据(没有更多的职责了)
前端工作包括:渲染与展现数据(数据与 HTML 模板拼接等等其他一切都应该前端来做)

一个关键点: HTML 应由前端渲染而成。使用后端渲染 HTML ,如 Express 框架中默认使用的 ejs 或者 jade 模板,这种都是典型违背了前后端分离思想的行为。

路由与“前后端分离”没啥关系,单页应用自然会把路由放在前端。
jin5354
2016-05-25 22:10:38 +08:00
@ooTwToo 只要 API 与页面都在同一个域名之下,就不会跨域啊。
imswing
2016-05-25 22:17:58 +08:00
我的理解就是前端负责逻辑业务展现,和用户打交道,后端就是数据的处理,他们用 API 去连接。
lyoe
2016-05-25 23:52:46 +08:00
可以看下玉伯写的<Web 研发模式演变> https://github.com/lifesinger/blog/issues/184
lyoe
2016-05-25 23:54:41 +08:00
原来你 append 里已经提到这篇文章了,那还可以看这篇 http://gold.xitu.io/entry/564b2c1460b25b7928bfbe9a/view
calidion
2016-05-25 23:58:46 +08:00
并不存在前后端的分离
calidion
2016-05-25 23:59:32 +08:00
calidion
2016-05-26 00:10:01 +08:00
前后端分离之说害人非浅。跟早期的 DIV+CSS 之说祸害类同。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/281092

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX