JavaScript 可视化应用——代码组织、主干 mvc、桌面版等
Posted
技术标签:
【中文标题】JavaScript 可视化应用——代码组织、主干 mvc、桌面版等【英文标题】:JavaScript visualization application - code organization, backbone mvc, desktop version etc 【发布时间】:2011-08-17 23:23:04 【问题描述】:我正在着手开发一个用于可视化的 javascript Web 应用程序,其中包含带有注释等的各种图形的书签。 一个典型的例子是:给定一个 url 状态,显示两个 SVG 图形和一个用于操作的时间滑块以及一些信息性注释。
传统上(并且有一段时间没有编写 JS),我会尝试某种模块化 JS 方法:
src
data
chart
chartType1
chartType2
chartType3
layoutManager
stateManager
utils
lib
d3?
backbone?
jquery?
...打破数据处理、一些实用功能、状态和布局管理器等。
但是那里有大量的图书馆,也许我应该抓住我的马并尝试一种新方法?
代码组织? - 喜欢上面还是更多MVC之类的? - 有什么具体的模式会有所帮助吗? (非常感谢伪代码)
状态处理/模型? - Backbone.js - JavaScriptMVC
观看次数? - 有没有使用 SVG 库(D3、Raphaël 等)和 mvc 框架的 JS vis 应用程序的好例子?
编译器/压缩器? - 谷歌闭包编译器 - 堵塞
IDE? - Aptana Studio 3 - Netbeans - 其他?
桌面版?(标准:数据存储、可更新等) - 空气 - 嵌入铬 - XULrunner - 钛加速器 - 其他选择?
很抱歉,这个问题的范围相当广泛,但如果深入了解这些领域,我会认为它已得到解答。所以请帮我选择...
【问题讨论】:
这更像是一个哲学起点,而不是一个问题:) 无论如何 - 我喜欢它。我在一个使用 python 托管在 appengine 上的项目中同时使用了主干.js 和 raphäel.js:ichbinadrian.ch/blog/2011/04/29/maps-a-decentralised-mindmap - 所有代码也都在 github 上,也许这会有所帮助。 我可以告诉你,backbone.js 确实是骨干。它是最简单的 Javascript MVC 框架,没有任何花哨的小部件和东西。它做得很好。 感谢分享猴子——我会从 github 下载项目,肯定会学到很多东西。我主要关心的是我是否应该完全改变 JS 方法以忠实于选择的 mvc 框架? 如果你使用backbone.js & jQuery,你将把所有东西都放在一个文件中。数据和状态将由主干覆盖。 jQuery 的布局和实用程序。我不是 js 编码大师,但我可以很快地了解整个事情,我对此很满意。干净整洁。 请务必查看 raphäel.js 2.0:raphaeljs.com/2.0 和来源:github.com/DmitryBaranovskiy/raphael/tree/2.0,因为它有一些不错的新功能 【参考方案1】:如果您已经非常了解 MVC,那么您可以使用 Backbone 做得很好。如何组织前端 javascript 有很多未知数,我们选择了 JavascriptMVC,它为您做出了很多决定。
不知道为什么我会使用 IDE。TextMate 和控制台对我来说非常有用。当我在玩 NetBeans 时,它看起来不错。 JetBrains RubyMine 是最高质量和迄今为止最好的 IDE,但它是商业的。
编辑 是的,JMVC 不值得为它提供的东西而烦恼。 Backbone 优雅而简单。唯一的问题是,如果您对代码结构比较陌生,因为您必须定义代码的结构。如果您使用的是 rails,只需复制您的 rails 应用程序的组织: 路由器/ 意见/ 模板/ 模型/
当然,每个班级都有一个单独的文件。然后使用一些东西来要求一切,如果你在 Rails 3.1 上或真的喜欢它,则使用 Sprockets,如果你在 3.0.x 上,则使用 Jammit。
如果你使用coffeescript,请意识到你的代码可能被包装在一个***闭包中,所以如果你必须将你的类添加到***散列中,或者将它们声明为window.Classname。
(其实“this”是顶层的“window”,所以可以声明为: 类@类名 )
祝你好运!
【讨论】:
如果你不需要 Ruby 或 RoR,我也会推荐 JetBrains WebStorm 使用 JavascriptMVC 已经有一段时间了,我可以毫不含糊地说,如果您使用的是具有良好 js 资产管理的后端系统,请选择骨干网。我最终将 StealJS 破解为无操作,并手动将 JMVC 的所有库包含在 Jammit 中,因为 JMVC 的基于 Java 的编译器需要 forEVER 并且它的咖啡脚本插件会在一定数量的文件后中断。 这应该是对您的答案的重新修改/更新,告诉我们您一个月后的经历。【参考方案2】:代码组织? - 我在 Rails 中做 MVC(应用程序/视图、助手、控制器、模型) - 框架应组合在一起 IMO
状态处理/模型? - Backbone.js 绝对是。
观看次数? - 我不知道 vis 库。对于一般主干视图和模板,我构建了这个https://github.com/juggy/backrub,它负责根据模型/视图中的事件更新视图。它节省了大量的胶水代码。
编译器/压缩器? - 谷歌闭包编译器 - 堵塞
我使用带有闭包编译器的 Jammit 作为后端。 Jammit 可让您有效地对文件进行分组/拆分。
集成开发环境? 由你决定,越轻越好。
桌面版? (标准:数据存储、可更新等) 通过一些配置,您现在可以在本地运行 Web 应用程序。我想你可以看看那个。
【讨论】:
以上是关于JavaScript 可视化应用——代码组织、主干 mvc、桌面版等的主要内容,如果未能解决你的问题,请参考以下文章
自定义 JavaScript 可视化工具包 Spacetree 节点