首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库-前端应用程序结构

数据库-前端应用程序结构
EN

Stack Overflow用户
提问于 2014-06-27 00:12:59
回答 1查看 370关注 0票数 0

对于SO社区来说,这个问题可能过于宽泛/概念化,但我还是试试看。

快速项目概述:

我有一个项目,它由一个前端应用程序组成,通过角$http请求从数据库请求数据。每个请求几乎都被映射成一个带有控制器的控制器,该控制器可以可视化该请求中指定的数据。

例如,我可以在特定的时间框架内指定关键字,包括:

get/A/kwords/?year=2013&month=9

并收到:

代码语言:javascript
复制
[
    {"kword": "a", "count": 100, },
    {"kword": "b", "count": 200, },
    ...
]

然后我将其插入到d3 directive中。

问题是:

在这个项目中,我不得不把额外的工作交给开发后端或前端的人。按照目前的应用程序,数据库发送大量JSON数据,然后前端必须应用转换函数,以便将数据格式化为不同d3 directives所需的格式。例如,一些JSON请求发送前端需要逻辑的多余数据,以标准化输入指令的数据。

这是逻辑,我不认为前端应该被迫处理。在我看来,前端应该只需要与JSON请求参数交互,而不是实际数据的格式。我认为后端能够根据URL参数以一致格式提供数据更有意义。

例如,不是后端以这样的格式提供数据:

/get/B/kwords/?year=2013&month=9&limit=6

代码语言:javascript
复制
[
    {
    "kword": "a",
    "data": [{"impressions": 100, "clicks": 150, "conversions": 200} ]
    },
    {
    "kword": "b",
    "data":[{"impressions": 50, "clicks": 60, "conversions": 70} ]
    },
    ...
]

并且强迫前端拆分这个数组对象数组对象,我应该能够在请求中指定一个data=impressions参数:

/get/B/kwords/?year=2013&month=9&limit=6&data=impressions

代码语言:javascript
复制
[
    {
    "kword": "a",
    "data": 100,
    },
    {
    "kword": "b",
    "data": 50,
    },
    ...
]

这是合理的要求吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-27 02:55:42

我在类似的情况下,我最初使用的是后端处理过滤的路由,前端处理的只是将数据绑定到d3。

问题是这是非常缓慢的。每个$http请求花费1-3秒,所以过滤体验不是很好,因为您必须单击一个过滤器并等待看到响应。

实际上,将尽可能多的数据发送到前端并在那里进行过滤要容易得多。因此,虽然初始页面加载需要更长的时间,但是过滤是即时的。最后,我重写了后端和前端,完成了前端的工作。我试图使从后端发送的初始数据尽可能平坦,并遍历该数组,并将相关数据推送到javascript对象上的属性以快速转换数据。

如果我再次做这个项目,我可能会尝试探索库dc.js和交叉过滤器,以避免编写一些我的过滤逻辑。

以下是客户端过滤速度的例子:

http://dc-js.github.io/dc.js/

http://square.github.io/crossfilter/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24442189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档