Javascript 我发现自己在使用Backbone.js或其他MVC时重复了很多代码
和你们中的许多人一样,我已经开始使用只讲JSON(在我的例子中是Django或Rails)的后端编写越来越多的web应用程序 作为前端,我一直在使用MVC客户端,例如Backbone.js。据我所知,这个解决方案非常好,适用于许多类型的应用程序 令我恼火的是,我发现自己产生了大量的Javascript代码,这些代码几乎做了相同的事情。感觉上,我正在为每个新应用程序在主干上创建一个新层。我在这里思考的方式一定有问题 让我们举一个例子: 假设您有一个API,它提供了六个集合,并且您希望使用Twitter引导来显示这一点。您将有一个导航菜单,可以在其中选择要查看的每个集合 将有大量Javascript代码,只需设置所有模型、集合、视图以及围绕路由和导航的逻辑。您还必须考虑哪一个视图是活动的。< /P> 例如: 获取集合时的错误处理 如果集合正在加载,我们希望看到“加载”。如果它失败了,我们将看看原因。这与创建/保存/删除相同 路由 我发现自己编写了一个复杂的逻辑,最终只是在匹配的URL:s上呈现一个特定的视图。它只是一个包含所有实例化视图的数组。有时甚至不需要视图,只需要与URL关联的模板。好的,如果你有六个菜单,你可以有六个功能。但是,如果菜单有三层,每层有六个选项,则无法为每个视图提供路由功能 导航栏和面包屑 这将是一个从我上面复杂的逻辑中调用的视图。如果导航是多层次的,这可能会非常复杂 我的问题是:我在这里很独特吗?如果没有,你如何解决这个问题 Backbone.js不适合我吗?什么样的选择更合适(哦,是的,我已经搜索过了)Javascript 我发现自己在使用Backbone.js或其他MVC时重复了很多代码,javascript,model-view-controller,backbone.js,client,Javascript,Model View Controller,Backbone.js,Client,和你们中的许多人一样,我已经开始使用只讲JSON(在我的例子中是Django或Rails)的后端编写越来越多的web应用程序 作为前端,我一直在使用MVC客户端,例如Backbone.js。据我所知,这个解决方案非常好,适用于许多类型的应用程序 令我恼火的是,我发现自己产生了大量的Javascript代码,这些代码几乎做了相同的事情。感觉上,我正在为每个新应用程序在主干上创建一个新层。我在这里思考的方式一定有问题 让我们举一个例子: 假设您有一个API,它提供了六个集合,并且您希望使用Twitt
感谢您抽出时间,我真的很感激您的所有想法。我想说有两个因素在起作用:
ReBoo.js的目的是提供数据丰富的Web应用程序具有雄心勃勃的接口需要的共同基础-同时非常谨慎地避免将你画成一个角落,作出任何决策,你可以更好地准备自己。 所以这是一个折衷。还有其他更全面的框架,比如和,它们倾向于在您自己的代码库中生成更少的样板代码。它们都是一流的框架,您可能想看看。当然,取舍是更大的框架大小、更大的第三方复杂性,以及您将“把自己画在角落里”的风险
如果您想继续使用主干网,但您觉得需要框架提供更多帮助,请查看。我个人没有使用过它,但对我来说,它似乎是用更少的代码和可维护的结构解决许多常见问题的好方法模型
-视图
-路由器
模式只能让您了解到这一点,当您谈论复杂、更大的应用程序时,主干并不特别擅长向您展示正确的方法
当你开始重复代码时,你必须重构、概括并保持它干燥。例如:
- 要在一个位置定义加载图标,请钩住
事件或覆盖jQuery.ajax
李>Backbone.sync
- 对于定义声明性
map的简单路由操作,请根据需要使用可选路由参数和autowire依赖项。使这些层次化并基于此地图生成导航视图组件李>route->view
- 将您的面包屑链接到主干网。历史记录。导航,并在路线更改时自动将路线片段映射到本地化的UI文本
主干.LoadingIndicator
,主干.Navigation
和主干.Breadcrumb
非常容易形成。要进一步了解这一点,请使用类似的东西打包组件,并将它们作为依赖项包含在项目中你的问题没有正确答案,但可以肯定地说,主干应用程序的规模远远超出了你所描述的范围。它只是希望您进行扩展,作为回报,它让您可以自由地按照应用程序需要的方式构建应用程序,而不是按照框架所说的方式构建应用程序。一如既往,选择权归你。我认为这是主干网开发人员的一个常见问题。我开始使用这样的框架来减少问题,减少了所需的样板代码的数量,并为modals、grids等常见组件设置了一些基类,这样我就可以让它更简单。这是一个非常好的答案。我一定会调查一下,木偶。我不知道它的存在。