前后端解耦的一点尝试
发布于 2年前 作者 supersheep 1821 次浏览

广告贴。谈谈自己在前后端开发解耦上的一些想法和尝试。欢迎讨论欢迎拍砖。 http://spud.in/2013/02/10/flow-solution-of-front-back-end-development/

22 回复

同时页面中的交互也比较繁多复杂,常常会有5到10个ajax接口,有已有的也有开发中的。由于后端的应用是分开的,所以在商户应用的开发环境中,可能就会没有用户登录这种账户相关的功能。

我特关心这个事情楼主… HTTP 是无状态的, 只能靠 Cookie, 但 Cookie 操作不便, 特别 API… 那怎么解决登录和认证的问题?

怎么认证都是http请求里包含的东西,express和request已经把操作包装得足够简单了我认为。

其实无非就是登陆之后服务端返回的请求中包含setCookie头,对其做合适的修改,就能应用于代理服务中。

一般来讲,大多数做得比较简单的网站,用一个cookie就可以伪造用户登录,那么在测试环境中登录后拿过来放到模拟的请求中即可。比如我在cnodejs这里,用chrome的inspector查看document.cookie,把结果记下来,换到safari再贴过去,就可以伪造登录了。

当然这是很容易破的,复杂一点,cookie可能是由一些用户信息,比如用户id,ip,比如ua等一起加密算出来的。这样就会比较难模拟了。

不过我也觉得自己的这个方案,不是很适合post,put等一类的请求,纯get取数据的就比较合适,且一般也无需用到身份认证。

我也来借此宝地 说下我的尝试吧~~

我们项目组后端使用的是JAVA,Freemarker模板引擎,开发流程是由前端做好静态页面 ,交由后端去改造成ftl模板文件,这过程中需要后端了解HTML,并且涉及到一些AJAX效果,还需要它们来改JS。

这样做的一些问题就不多说了。后来,我试着做了些尝试,并用nodejs和JAVA写了一个小工具:FED, 基本都是工作之余写的,不过已经开始尝试用它了。

FED最初主要是想用它来完成Freemarker模板的调试,这样可以由前端直接写FTL模板,后端只负责提供数据和接口即可,不再需要修改前端的HTML及JS文件。

后来慢慢添加了一些其它功能,比如反向代理(主要为方便前端开发人员调试页面),输出与后端的接口文档(基于代码注释)等。

现在已经在慢慢应用于实践,FED还在不断完善中,欢迎大家拍砖,一起探讨。

个人比较倾向于前后台完全分开,后台给rest api适用于各种native或者web平台,前台ajax 接受json数据,oauth,access token认证。前台当application来做。

让后端把 rest 做出来,前端就好测试了

我比较倾向于angularjs那种方案,写前台就专写前台,后台只提供api接口(可以只输出json)。 这样的话, 有手机客户端可以同时使用。

@hhuai @kfll @alaaf 其实我也是更倾向于这样的做法。页面模板的部分也由前端来负责,可以省去很多不必要的沟通环节。只是现在大多数公司的组织上来讲,还是把这部分放在了后端。主要需要seo的页面也不可能纯粹由前端来渲染,而且模板语言多少需要一点后端开发经验,自己的方案也只是先行环境下的一种权宜之计。

嗯,,深有同感。

嗯,,深有同感。

公司先前在做一个项目的时候,之前是没有完全前后端分开,做到1/3的时候,前后端完全分开了。然后前端这边一下子压力山大,擦。之前没搞过,我是新手。突然一大堆数据要我前端来渲染,真是坑苦了我。但是还是缓过来了。就是在手机端会有一些小问题。就是发现如果用前端来渲染模板的话,有些手机会渲染不出来页面。得刷新一下,后来用异步加载JS的方式解决了。

我们公司现在就是前后端分离来搞的,前后端遵循restful规范。后端提供的全部都是API接口,由前端AJAX来调用。这种开发方式很适合公司内部系统发开。开发速度快,工作内容可以量化。

首先,一个问题,为什么是后端去写freemarker呢?让前端写会更好。

叫后台更专注数据处理岂不是更好,叫专业的人去做专业的事情。后台完全没必要去了解html和js,找你这样开发,那后台需要不需要了解CSS?要是需要那就是一坨前端的东西都要了解,后台岂不是要疯掉。

@yansong 我也是希望是由前端写,而且我们也正在尝试这样做。。。这也是我做FED的主要目的。

@ksado @yansong 听语气怎么好像你们误会我观点了。。

@ijse 我觉的你的想法是好的,可是你想下,要是后台都只提供数据和接口了,那么对于前端来说,模板就那么重要了吗?我想应该是控件更重要一些。比如用ExtJS来开发的项目,基本没界面的。使用模板也只是部分功能需求上使用。

@ksado 有些时候还是离不开模板的,一个项目使用freemarker来动态生成静态页面,这样对SEO友好。 在这种情况下,使用FED可以让前端来写模板并且可以调试 .

@ijse 嗯,我了解,我们俩说的应该是两种应用,我说的是公司的后台系统,你应该说的是网站。

@ksado 嗯,是的。如果只是AJAX通信,不需要Freemarker模板,事情就简单了。

@ijse 加油支持你的FED

回到顶部