我们有一个大型的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
自定义组件将由驻留在page-js中的main-js询问。
来我需要的东西。
1.我希望专家从大型Web项目的角度审查这个目录结构,您需要与其他团队共享您的小部件。欢迎提出建议。
2.我的每个自定义组件将定义一个模块,该模块将在包结构内以及外部包结构中具有依赖性。我想知道,如果有任何方法可以使用r.js来优化我在包结构中的自定义小部件依赖关系,并让插件和库分别进行优化。
3.我正在开发单页ajax应用程序,所以我会按需要求模块,所以当我不需要时我需要清理模块和小部件,有什么方法可以清理我应该知道吗?
答案 0 :(得分:2)
关于目录结构
作为目录结构模式,我强烈建议使用cakePHP的目录结构。它在文字方面非常强大!我正在运行多个应用程序(其中一个与Groupon一样大),它就像一个魅力 您可能需要稍微调整一下,因为,你知道,cake是一个PHP框架,而你的是一个javascript框架。
这是蛋糕的真棒MVC目录结构:
请注意,您可以在单个蛋糕安装上托管数千个应用。所以,如果你有兴趣,还等什么呢? go to their site并阅读他们的文档。
<小时/> 关于清理技术
嗯,这是我不喜欢的Javascript的缺点之一。没有真正的方法来破坏像Java或C ++这样的OO模块。在这里,我们没有像C ++的~
析构函数那样的东西。
多年来,程序员使用module = null
从未使用的代码中释放内存。
再看看这些:
希望在设计应用程序时有所帮助和好运; D
答案 1 :(得分:1)
可能我迟迟没有回答这个问题,但无论如何,让我在这里分享我的看法,让别人觉得有用。
您的目录结构看起来没问题。将业务组件自包含在特定目录中始终是更好的设计。我不会推荐破坏公开关闭原则的Cake MVC结构。另请参阅http://boilerplatejs.org推荐的目录结构,它是大规模JavaScript开发的参考架构。
我不明白这个问题。当r.js运行时,它将优化它在目录中找到的所有JS文件(排除可能),然后通过依赖树创建一个脚本。在生产中,您只需要单个脚本(如果使用i18n插件,还需要语言环境文件)
请阅读下面的博文。它可能会给你一些提示:http://blog.hasith.net/2012/11/how-much-multi-page-single-page.html