客户端或服务器端框架?

Client-side or server-side framework?

我的项目将是一种 craiglist,用户可以在其中 post 公告(日常生活用品、汽车、公寓等)的网站。因此,身份验证、个人资料页面、内容创建、显示待售对象等

我开发了很大一部分后端:我在 java 中开发了 RESTful API 三层架构。它使数据库成为 link,为我提供不同的 url 并向我发送相关的 JSON.

URL 示例:

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

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

我有在整个网站上执行的所有操作的 URL(公告创建、最后的数据更新......一切,我已经仔细声明了它们 POST、GET、UPDATE、DELETE 等) .还有 oAuth 保护 API 免受令牌不允许的查询。

"server"方面就这些了,我觉得没问题。

但如果所有操作都由 web 服务管理,我看不出有什么兴趣可以给我带来像 Symfony/cakePHP、Zend 等大型服务器端框架,以便在我的服务器上发出 HTTP 请求不同的入口点,检索 JSON 并填充 HTML.

所以我看了客户端框架,比如Angular、Ember等等。起初,它似乎非常适合我的情况:http 请求的可能性,管理成功或错误时的操作,直接利用结果 JSON 来填充视图等

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

我不知道我选择客户端框架是否做对了,我担心他们 'brident'(不确定那个词,抱歉)我。此外,它在浏览器中完全实例化,因此用户可以完全更改我提供的所有代码和数据。我觉得这很奇怪。

我想绝对确定我使用的技术,以防我让 public 可以使用此应用程序。我想正确地做事,以避免可维护性或安全问题。

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

我会说 - 取决于你将来是想成为更多的前端人员还是后端人员。如果你想成为全栈开发人员,那么它不适用。

在我看来,Symfony/Zend 或其他大型服务器端框架都没有像 Ember/Angular/React.

这样的动态前端 JavaScript 框架那么令人兴奋。

此外,如果您已经 RESTful API 并且在后端部分实施了 OAuth 身份验证,我会选择 Ember。为什么? Ember 数据是与后端对话的好工具 API。它很成熟,可以在需要时延迟加载记录,而且非常可定制。

it's fully instantiated in the browser,so the user can change absolutely all code and data I provide...

Ember 内置了安全性,例如清理以其模板语言呈现的数据 - HTMLBars。此外,还有在 Ember.

中实施的 CORS 和内容安全策略 (CSP) 标准

I want to be absolutely sure of the technology that I use in case I make this application available to the public for example. I want to do things properly, in order to avoid maintainability or security problems .

在 Ember 中,您可以创建成熟、安全、生产就绪的应用程序,但您需要在某种程度上适应您的 Ember 技能才能构建如此雄心勃勃的 Web 应用程序,但它是构建每个应用程序。

With the things that i already have(webservice / api), is it a good idea to use a client framework like Angular?

是的,使用 MEAN 堆栈或使用 Ember + RESTful API.

是非常流行的解决方案

Why should I choose Ember instead of Angular (which have a larger community/tutorials/answered questions) ?

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

在 Ember 中,您有 Ember CLI 工具,它是根据约定优于配置原则构建的。您还有 Ember 使用 JSON API standard 的数据 - 如果您现在没有 JSON API 兼容的服务器端,您可以编写自定义适配器来规范服务器响应或更改后端如何回复。在 Ember 中,您没有那么头疼,也没有不同的最佳解决方案来做一件基本的事情,具体取决于您问的人。

What means "Single page application" ?

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

Does those frameworks allow me to create real routes ? ( www.myapp/profil/userid etc )

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

Client = speed, Server = stability

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

客户端取决于浏览器的行为 后退只与机器有关,与环境无关

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