Backbone-RequireJs样板,用于基于组件的大型Web项目

时间:2012-06-05 19:06:48

标签: javascript backbone.js requirejs boilerplate

我们有一个大型的Web项目,我们需要可以相互通信的组件,这些组件可以放在不同项目的组件的中央存储库中。 使用reuirejs和Backbone进行模块化开发。通过不同的样板可用于骨干和requirejs,但没有一个符合我的要求。所以我创建了以下目录结构。可以解释如下。

---resources
 |---custom-components
   |---mycomponent
     |---js
       |---views
       |---models
       |---collections
     |---css
     |---templates
     |---mycomponent.js
   |---mycomponent2
     |---js
       |---views
       |---models
       |---collections
     |---css
     |---templates
     |---mycomponent2.js
 |---libraries
   |---backbone
   |---underscore
   |---jquery
   |---jquery-ui
 |---jqueryplugins
   |---jcarouselite
 |---thirdpartyplugins
 |---page-js
   |---mypage.js
   |---mypage2.js
  1. 资源目录将包含所有资源。在那之下,我们将提到4个目录。
  2. libraries,jqueryplugins和thirdpartyplugins显然是他们所说的名字的目录。
  3. page-js目录将包含将在我们的html文件中用作requirejs data-main属性的实际main-j。
  4. 自定义组件是我们创建的所有窗口小部件所在的位置,因为您可以看到它有一个与组件名称相同的js文件,它将是此窗口小部件的入口点。该目录还包含js,css和templates的目录。 CSS和模板将分别通过文本插件和CSS插件加载。 Js目录将包含使这个小部件工作的所有骨干代码。
  5. 自定义组件将由驻留在page-js中的main-js询问。

    来我需要的东西。
        1.我希望专家从大型Web项目的角度审查这个目录结构,您需要与其他团队共享您的小部件。欢迎提出建议。
        2.我的每个自定义组件将定义一个模块,该模块将在包结构内以及外部包结构中具有依赖性。我想知道,如果有任何方法可以使用r.js来优化我在包结构中的自定义小部件依赖关系,并让插件和库分别进行优化。
        3.我正在开发单页ajax应用程序,所以我会按需要求模块,所以当我不需要时我需要清理模块和小部件,有什么方法可以清理我应该知道吗?

2 个答案:

答案 0 :(得分:2)

关于目录结构

作为目录结构模式,我强烈建议使用cakePHP的目录结构。它在文字方面非常强大!我正在运行多个应用程序(其中一个与Groupon一样大),它就像一个魅力 您可能需要稍微调整一下,因为,你知道,cake是一个PHP框架,而你的是一个javascript框架。

这是蛋糕的真棒MVC目录结构:

enter image description here

请注意,您可以在单个蛋糕安装上托管数千个应用。所以,如果你有兴趣,还等什么呢? go to their site并阅读他们的文档。

<小时/> 关于清理技术

嗯,这是我不喜欢的Javascript的缺点之一。没有真正的方法来破坏像Java或C ++这样的OO模块。在这里,我们没有像C ++的~析构函数那样的东西。

多年来,程序员使用module = null从未使用的代码中释放内存。

再看看这些:

希望在设计应用程序时有所帮助和好运; D

答案 1 :(得分:1)

可能我迟迟没有回答这个问题,但无论如何,让我在这里分享我的看法,让别人觉得有用。

  1. 您的目录结构看起来没问题。将业务组件自包含在特定目录中始终是更好的设计。我不会推荐破坏公开关闭原则的Cake MVC结构。另请参阅http://boilerplatejs.org推荐的目录结构,它是大规模JavaScript开发的参考架构。

  2. 我不明白这个问题。当r.js运行时,它将优化它在目录中找到的所有JS文件(排除可能),然后通过依赖树创建一个脚本。在生产中,您只需要单个脚本(如果使用i18n插件,还需要语言环境文件)

  3. 请阅读下面的博文。它可能会给你一些提示:http://blog.hasith.net/2012/11/how-much-multi-page-single-page.html