2012-06-05 30 views
3

我们有一个大型Web项目,我们需要可以相互交流的组件,这些组件可以放在不同项目的组件中央存储库中。 使用reuirejs和Backbone进行模块化开发。通过骨干和requirejs的不同样板,但没有符合我的要求。所以我创建了以下目录结构。它可以解释如下。用于基于组件的大型Web项目的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. 图书馆,jqueryplugins和thirdpartyplugins都是他们所说的名字的目录。
  3. page-js目录将包含实际的main-js,它们将在我们的html文件中用作requirejs data-main属性。
  4. 定制组件是我们创建的所有组件都将驻留的位置,因为您可以看到它具有与组件相同名称的js文件,该文件将作为此构件的入口点。这个目录也有js,css和模板的目录。 CSS和模板将分别通过文本插件和CSS插件加载。 Js目录将包含使这个小部件工作的所有主干代码。

自定义组件将被驻留在page-js中的main-js询问。

即将到达我需要的东西。
1.我想让专家从大型网站项目的角度审视这个目录结构,您需要与其他团队共享您的小部件。欢迎提出建议。
2.我的每个定制组件都将定义一个模块,它将在包结构以及外部包结构中具有依赖关系。我想知道,是否有任何方法可以使用r.js来优化封装结构中的自定义窗口小部件依赖项,并让插件和库分别进行优化。
3.我正在开发单页面ajax应用程序,所以我会问需求模块,所以我需要清理模块和小部件,当我不需要它们时,是否有任何清理方法我应该知道?

+1

你检查'骨干-aura'(http://addyosmani.github.com/backbone-aura/)由阿迪·奥斯马尼,基于文档和您的要求,它可能会帮助您生成所需的体系结构 – dhaval

+0

在询问此问题之前,我确实偶然发现了这一问题,但没有找到您指定的链接。感谢您的链接。我研究了这一点,它解决了我的一个问题,清理。它还增加了一个pub/sub架构的更多令人兴奋的功能。但是我的查询2仍然存在,是否有一种方法来优化我的小部件。 – Vishwanath

+0

can's你可以使用'exclude'选项来避免因外部或不需要的依赖关系而优化 – dhaval

回答

2

关于目录结构

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

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

enter image description here

请注意,您可以承载数以千计的应用程序在单一蛋糕安装。所以如果你有兴趣,你还在等什么? go to their site并阅读他们的文档。


关于清理技术

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

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

这些也看看:

希望它可以帮助和设计你的应用程序的好运气; d

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

+0

真棒文章你有... – Vishwanath

相关问题