客户端或服务器端框架?

时间:2015-11-04 20:02:48

标签: javascript angularjs web-services ember.js frameworks

我的项目将是一种craiglist,一个用户可以发布声明的网站(有生命的物品,汽车,公寓等)。因此,身份验证,个人资料页面,内容创建,显示待售对象等。

我开发了很大一部分后端:我在java中开发了一个三层架构的RESTful API。它与db建立链接,为我提供不同的URL并向我发送相关的JSON。

网址示例:

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

{"user": {"username": "jdoe1234", "email", "jdoe1234@gmail.com"}}

我有在整个网站上执行的所有操作的网址(宣传创建,最后数据更新......所有内容,我已经仔细宣布他们POST,GET,UPDATE,DELETE等)。还有oAuth可以保护API免受令牌不允许的查询。

"服务器"方面,我认为没有问题。

但如果所有操作都是由webservice管理的,那么我没有看到可能会给我带来像Symfony / cakePHP,Zend等大服务器端框架的兴趣来在我的不同入口点上发出HTTP请求,检索JSON并填充HTML。

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

我甚至无法在angularjs和Ember之间做出选择,两者都非常相似,但是随着Angular v2的发布,我担心v1的可维护性(如果我选择Angular,它将是v1,因为大多数教程和问题都与Angular 1.X相关。

我不知道我是否通过选择客户端框架来做正确的事情,我担心他们是否会“做事”。 (不确定那个词,对不起)我。此外,它在浏览器中完全实例化,因此用户可以完全更改我提供的所有代码和数据。这对我来说似乎很奇怪。

我希望绝对确定我使用的技术,以便我将这个应用程序提供给公众。我想做正确的事情,以避免可维护性或安全问题。

总结:对于我已经拥有的东西(webservice / api),使用像Angular这样的客户端框架是一个好主意还是应该继续使用像Symfony / Zend等大型服务器端框架?知道我将自己定位在大规模使用这个平台的环境中(craiglist可比流量)。

2 个答案:

答案 0 :(得分:2)

我说 - 取决于你是否希望将来成为更多的前端人或后端人。如果你想成为全栈开发者,那么它就不适用了。

在我看来,Symfony / Zend或其他大型服务器端框架都不像Ember / Angular / React这样的动态前端JavaScript框架如此令人兴奋。

此外,如果您已经在后端部分实施了RESTful API和OAuth身份验证,我将选择Ember。为什么? Ember Data是与后端API通信的绝佳工具。它已经成熟,它会在需要时懒散地加载记录,并且可以自定义。

  

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

Ember已经内置了安全性,例如清理数据,这些数据以其模板语言呈现 - HTMLBars。此外,还有在Ember中实施的CORS和内容安全策略(CSP)标准。

  

我希望绝对确定我使用的技术   例如,向公众提供此应用程序。我想要   做得好,以避免可维护性或安全性   问题。

在Ember中,您可以创建成熟,安全,可立即投入生产的应用程序,但您需要在某种程度上熟悉您的Ember技能,以构建如此雄心勃勃的Web应用程序,但它是构建每个应用程序的一部分。

  

有了我已经拥有的东西(webservice / api),这是一件好事   想使用像Angular这样的客户端框架吗?

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

  

为什么我要选择Ember而不是Angular(哪个更大   社区/辅导/回答问题)?

Angular有更大的社区/教程/回答问题,但是当我开始与Angular一起开展一些项目以了解其可能优于Ember的优势时,我很惊讶它在社区中做了一件事没有达成共识。所以,而不是快速搜索如何声明和使用指令(我认为这是困扰我的事情)我必须做另一种研究,哪种方式是最好的。此外,有很多方法可以设置项目(在哪里放置自定义指令,不同的Angular对象),你必须做另一个选择的研究。我最终使用repo healthy-gulp-angular作为我的模板,但你可以看到它已经更新了8个月,但我认为在这8个月里Angular有很多变化,我不是确定这个回购是否是最好的选择。

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

  

什么意思"单页应用" ?

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

  

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

是的,当然。您甚至不需要在您的网址中使用#。使用简单的重写规则和profile路由和指定路径profile/:userid的少量逻辑,当用户打开网址www.myapp/profile/userid时,他将自动转到profile路由,{ {1}}将被解释为路由参数,因此您可以使用此userid并在userid挂钩中查找商店中的用户记录。

答案 1 :(得分:0)

  

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

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

客户端依赖于浏览器的行为 Back仅与机器有关,但与环境无关

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