我是骨干新手,我在这里请求一些帮助,了解我将如何构建我当前的webapp项目。我正在为服务器开发模块化管理面板。面板的每个“页面”都应该是一个打包的“模块”,包括控制器,模型和视图。
面板将包含最初加载的主布局视图,并带有基本导航。当用户单击导航上的链接时,页面将通过AJAX加载到布局中。 (如果这听起来很愚蠢/有理由不这样做,请告诉我:))
由于其他人也会开发这些页面,并且因为它们是模块化的,所以我不知道我将通过AJAX加载的页面中将显示哪些模型,视图和控制器。
我最好如何与骨干一起做这件事?
我特别想知道如何动态扩展Backbone模型等,以及如何管理(例如)用户离开页面和/或稍后重新访问它。
Backbone是否提供了我可以使用的东西,我是否需要将自己的东西放在一起,是否有更好的方法来做我错过的事情?
答案 0 :(得分:2)
与Backbone一起使用的常见模块化脚本加载框架是require.js。它可能正是你要找的东西。 Require.js是关于AMD模块,异步模块的。通常,每个模型,集合,视图都是它自己的模块,它定义特定模块所需的依赖关系,然后根据需要加载这些模块。它特别适用于大型项目,在这些项目中,您需要在应用的不同位置混合使用大量单个部件。
您当然可以在一个模块中组合多个主干元素(通常我会为视图和仅与父视图一起使用的特定子视图保留此元素),但这完全取决于您。
使用Backbone,通常意图是创建单页面应用程序 - 这意味着所有页面脚手架通常都被包装为单个文件,并在开始时完全加载到客户端。然后,通过ajax调用每个页面的数据,并在用户导航时填充并加载应用程序的不同方面。这是您在描述中的意图吗?
如果你想从服务器上加载各自单独抓取的不同页面,那么我不确定Backbone是答案。还有其他服务器端MVC框架可以帮助实现这一目标。
这通常涉及Backbone如何用于此类事情。
至于如何扩展Backbone模型等,Backbone使用Underscore作为依赖项,而下划线提供了一个很好的_.extend()
函数,可以轻松地以任何你想要的方式扩展所有对象。覆盖默认功能,投入mixins,就Backbone而言,这一切都非常轻松。作为一个框架,Backbone非常适合改变,修改和定制每一点点和一块。
至于处理访问和重新访问页面的用户,Backbone.router
允许您创建的URL不仅指向应用程序中的特定“页面”,还执行需要执行的任意代码才能到达目的地。像访问“mysite /#account”的登录用户之类的东西会触发路由器加载某些脚本,这些脚本会显示特定视图以及可能fetch()
必要的数据,以便为用户启动和运行该视图。 / p>
我不确定是否有资源可以为您提供某种基本结构。我所知道的大多数经验都倾向于通过像“Todo List”这样的基本教程,并从那里开始工作。我不确定你的体验水平是一般的javascript或编程,但我开始使用Backbone并且需要我什么时候才知道。只有一个关于JSON是什么的模糊概念以及对HTTP的低级理解,“这就是获取网页的东西。”也就是说,我认为Backbone很容易让我开始,它加深了我对整个客户端RESTful类型应用程序结构的了解。
有很多不同风格的“Todo List”应用程序,例如Backbone和Knockout以及其他一些应用程序。在决定框架时,我基本上经历了代码,比较了所有可用的框架和选择的Backbone,因为它似乎对我来说最有意义。我不后悔。这很有趣,我认为最好的方法是尝试一些演示教程。
答案 1 :(得分:2)
你对这些问题的思考听起来非常正确。尽可能使您的UI组件自包含。观看此10 min video以获取有关UI组件最佳做法的更多信息。
如果您对JavaScript应用程序开发的其他重要问题感兴趣,请查看我发布的BoilerplateJS参考架构以分享我的经验。它包含一个与您描述的类似的示例应用程序(带有组件激活的菜单)。
我对您的UI组件激活,停用的建议是:
有关详细信息,请参阅BoilerplateJS示例组件实现。我知道很少有人将它与BackboneJS一起使用(目前它附带了knockoutJS)。我们将在v0.2中使用BackboneJS发布一个示例,该示例将在一周内发布。
答案 2 :(得分:1)
查看Marionette或Chaplin。两者都构建在Backbone之上,并提供了一种结构化的方式来使用Backbone构建更大的应用程序。
答案 3 :(得分:0)
以下是使用backbonejs
将应用程序组织为模块的教程http://backbonetutorials.com/organizing-backbone-using-modules/