客户端或服务器端框架?

问题描述:

我的项目将是一种craiglist,用户可以发布声明的网站(evereday-life物体,汽车,平板等)。因此,身份验证,个人资料页,内容创作,展示出售对象等客户端或服务器端框架?

我已经开发了后端的很大一部分:我在用Java开发的三层体系结构一个RESTful API。它使得与数据库的链接,为我提供不同的URL并向我发送相关的JSON。

网址,例如:

http://api.mywebsite.fr/user?userid=1向我回:

{"user": {"username": "jdoe1234", "email", "[email protected]"}} 

我有整个网站上执行的所有操作的URL(anouncement创作,最后的数据更新......一切,我已经仔细地声明它们是POST,GET,UPDATE,DELETE等)。还有oAuth可以保护API不受令牌所允许的查询的影响。

这是所有“服务器”方面,我认为有没有异议。但是,如果所有的操作都是由web服务管理的,我不会看到像Symfony/cakePHP,Zend等这样的大型服务器端框架在我的不同入口点上发出HTTP请求的兴趣,检索JSON并填充HTML。

所以我看着客户端框架,如Angular,Ember等。起初,它似乎非常适合我的情况:http请求的可能性,管理成功或错误的情况下做什么,直接利用生成的JSON填充视图等。

我甚至没有设法制作我在angularjs和Ember之间进行了选择,两者都非常相似,但是随着Angular v2的发布,我担心v1的可维护性(如果我选择Angular,它将会是v1,因为大多数教程和问题都与Angular 1.X )。

我不知道如果我通过选择客户端框架做正确的事,恐怕他们“brident”(不知道这个词的,对不起)我。另外,它在浏览器中完全实例化,所以用户可以绝对更改我提供的所有代码和数据。这对我来说似乎很奇怪。

我想是绝对肯定,我的情况下,使用我做这个应用程序提供给公众例如技术。我想正确地做事情,以避免可维护性或安全问题。 (webservice/api),使用像Angular这样的客户端框架还是应该留在Symfony/Zend等大型服务器端框架中是一个不错的主意?知道我将自己置于这个平台将被大量使用的环境中(craiglist可比较的流量)。

+0

为什么修复没有损坏的东西,或者引入你认为不需要的外部依赖关系? – dandavis

+0

其实我只在后端有API,所以我的问题在于知道什么是最适合我利用API的。我暂时不使用任何服务器或客户端框架:) – Nuzzob

我会说 - 取决于你是否想成为未来更多的前端家伙或后端家伙。如果你想成为全栈开发者,那么它不适用。

在我看来,两者的Symfony/Zend公司或其他大的服务器端框架并不如此令人兴奋的动态前端JavaScript框架像灰烬/角/反应。

另外,如果你已经REST的API和OAuth认证的后端部分实现我与Ember去。为什么? Ember Data是与后端API交谈的绝佳工具。它很成熟,它在需要的时候会懒散地加载记录,并且它是非常可定制的。

它在浏览器中完全实例化,使用户可以更改 绝对的所有代码和数据我提供...

灰烬已建成安全像消毒这是在它呈现的数据的模板语言 - HTMLBars。此外,还有在Ember中实施的CORS和内容安全策略(CSP)标准。

我想绝对肯定我使用的技术,例如我使用这种技术的情况下,我使用这个应用程序可以让我公开该应用程序。我想 做得不好,为了避免可维护性或安全 的问题。

在灰烬你可以创建成熟的,安全的,生产就绪的应用程序,但你需要熟悉你的灰烬技能在一定程度上建立这样雄心勃勃的Web应用程序,但它的建筑的每个应用程序的一部分。

有了我已经有的东西(webservice/api),是不是很好用 想法使用像Angular这样的客户端框架?

是的,这是使用MEAN堆栈或使用Ember + RESTful API的非常流行的解决方案。

为什么要选择Ember而不是Angular(其中有更大的 社区/教程/回答问题)?

角有较大的社区/教程/回答问题,但是当我开始用角超过灰烬,了解它可能带来的好处的一些方面的项目,我很惊讶,怎么有它的社区做一件事情没有达成共识。因此,我不必快速搜索如何声明和使用指令(我认为这是让我困惑的事情),我不得不以另一种方式做最好的研究。此外,还有很多方法来设置项目(在哪里放置自定义指令,不同的Angular对象),并且您必须做另一项研究来选择哪一个。我最终使用repo healthy-gulp-angular作为我的模板,但是您可以看到它在8个月内未更新,但我认为在这8个月中Angular有很多更改,我不确定此回购是否是最佳选择。

在Ember中,您拥有使用Convention over Configuration原则构建的Ember CLI工具。您还有Ember Data,它利用JSON API standard - 如果您现在没有兼容JSON API的服务器端,则可以编写自定义适配器来标准化服务器响应或更改后端回复的方式。在Ember中,你根本不会遇到所有头痛和不同的最佳解决方案,只能根据你的要求做一件基本的事情。

什么意思是“单页应用程序”?

单页面应用程序基本上是一个页面,当您浏览时不必重新加载所有资产和HTML。它比PHP更具优势 - 当用户移动到另一个位置时,他只下载该路线的新数据。 More info here.

这些框架是否允许我创建真实路线? ( www。myapp/profil/userid等)

是的,当然。您甚至不需要在您的网址中使用#。对于profile路由和指定路径profile/:userid,当用户将打开URL www.myapp/profile/userid时,他将自动被带到profile的路由,并且userid将被解释为路由参数,因此您可以将这个userid并找到用户从model挂钩店中记录。

+0

谢谢您的回答!我过去曾经使用过Zend作为另一个项目,但正如我在这里所说的那样,我并不真正看到它是如何100%高效的,因为我已经有了一个精心构建的API。 我在你的个人资料中看到你是“亲”,所以我问自己,如果你的意见是客观的(没有冒犯性)。为什么我应该选择Ember而不是Angular(它有更大的社区/教程/回答问题)?什么意思是“单页应用程序”?这些框架是否允许我创建真正的路线? (www.myapp/profil/userid等)。 再次感谢您的时间! – Nuzzob

+0

答复已更新。我不是100%客观的,因为:a)我花更多时间在Ember上,我只知道Angular的基础知识; b)这个问题是基于意见的:P –

+0

伟大的更新,这将是非常有用的做出我的选择,再次感谢你;) – Nuzzob

客户端=速度,服务器=稳定

js框架更新每周一次 非JS后端每年一次

客户端依赖于行为取决于浏览器 返回是只在机器上但不在环境上

我选择了FE因为我厌倦了通过将变量值写入数据库来调试代码,以便真正看到控制器中发生了什么-_-