4

用例:我从一个涉及大量客户端脚本的项目开始。它类似于一个迷你 CMS,用户可以在其中拖放html 组件。有点类似这个。现在,我必须选择一个 MVC 框架来定义用户将使用的组件。(执行拖动、调整大小、删除等操作)。

现在我面临的问题 是,选择一个易于学习和实施的框架。我有 Javascript 和 jQuery 的基本知识,并且已经使用了一段时间,但没有使用 MVC 的经验。

我过去 2 天的研究表明,backbone.js是一个很好的开始,但我想对它在处理 html 组件和 DOM 元素方面提供的灵活性提出评论/建议。如何存储 HTML 组件的初始内容?(外箱和结构)。

另外,如何处理多个相同类型的组件?动态生成 ID 是一种选择,但使用动态 ID 管理多个元素变得困难。有没有其他方法可以处理它们?

哪个框架可以轻松处理这些组件上的事件?

4

4 回答 4

7

我将骨干用于涉及拖放的网络应用程序,我使用 jquery ui 来实现拖放功能。例如,当您想要实现可放置的主干视图时,它们与 imo 集成得很好

render: function(){
    var $el = this.$el,
        over = false,
        origWidth;


       if (!this.$el.is('.ui-sortable'))
            this.$el.sortable({
                revert: false,
                axis: 'y',
                placeholder: 'placeholder',
                items: '.load-order',
                containment: this.el,
                receive: this.onOrderDrop,
                over: this.onOrderOver
                out: function(e, ui){
                    // Resize back to original width
                    if (over && ui.helper)
                        ui.helper.stop().animate({width: origWidth}, 'fast');
                    over = false;
                }

更新:

使用主干视图,您有一个骨架 html 结构,然后随着主干视图递增。每个视图都有一个模板,该模板使用模型数据进行渲染,您可以在Backbone Essentials中了解更多信息

我还制作了一个小 todolist 来演示带有主干
http://www.github.com/joaoxsouls/todolist的可拖动事件

于 2012-12-07T12:18:26.973 回答
3

为什么要使用 BackboneJS?

如果它不是必需品,而您只是想要一个拖放界面,您可能想看看这个: http: //omshankar.kodingen.com/engine-1.73/
JavaScript 已被最小化,仅使其成为单行。{}函数和变量都完好无损,在Chrome中点进去可以看到Sources

如果它是极端必要的,你绝对可以在主干中拖放。唯一的问题是,每次调用它时,您可能都必须在item's函数中再次初始化拖放。 关于拥有结构、外壳和组件,按照您想要的方式进行操作。可以办到。一个示例 Backbone 应用程序:http: //omshankar.kodingen.com/exp/backbone-html5-dd/render
HTMLHTML

它也有一个拖放功能,但那是将图像文件从您的操作系统拖到浏览器中,与您无关

如果你想存储HTML,你可以通过本地存储来做,或者只是在你的 HTML 文件中。仅对那些动态的部分应用/制作主干视图

于 2012-12-28T21:11:15.653 回答
1

我建议Angular JS?它具有强大的绑定和指令功能。

于 2012-12-07T11:20:30.143 回答
1

AngularJS 很棒,特别是如果你将它与 ConversationJS 之类的东西结合使用:

https://github.com/rhyneandrew/Conversation.JS

我不是“意大利面条”角度感觉的忠实粉丝,Conversation 允许您在不改变其工作方式的情况下将其解耦。它使代码库更加干净。

于 2012-12-09T23:25:52.103 回答