我们有一个大型的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
> resources目录将包含所有资源.在此之下,我们将提到4个目录.
>库,jqueryplugins和thirdpartyplugins显然是它们所说名称的目录.
> page-js目录将包含实际的main-js,它将在我们的html文件中用作requirejs data-main属性.
>自定义组件是我们创建的所有小部件都将驻留的位置,如您所见,它具有一个与该组件同名的js文件,它将作为该小部件的入口.该目录还包含js,css和模板的目录. CSS和模板将分别通过文本插件和CSS插件加载. Js目录将包含使该小部件工作的所有主干代码.
自定义组件将由驻留在page-js中的main-js询问.
满足我的需求.
1.我希望专家们从大型Web项目的角度审查此目录结构,在此您需要与其他团队共享窗口小部件.欢迎提出建议.
2.我的每个自定义组件都将定义一个模块,该模块将在包结构以及包外部结构中具有依赖性.我想知道,是否有任何方法可以使用r.js在包结构中仅优化我的自定义窗口小部件依赖性,并让插件和库分别进行优化.
3.我正在开发单页ajax应用程序,因此我将按需询问模块,因此在不需要模块和小部件时需要清理它们,有什么方法可以清除吗?
解决方法:
关于目录结构
作为目录结构模式,我强烈建议使用cakePHP的目录结构.真的很健壮!我正在运行多个应用程序(其中一个与Groupon一样大),它的运行就像一个魅力.
您可能需要稍微调整一下,因为,cake是一个PHP框架,而您是一个JavaScript框架.
这是蛋糕的很棒的MVC目录结构:
请注意,您可以在单个Cake安装中托管数千个应用程序.因此,如果您有兴趣,还等什么呢? go to their site并阅读他们的文档.
关于清理技术
好吧,这是我不喜欢的Javascript的缺点之一.没有像Java或C那样真正破坏OO模块的方法.在这里,我们没有C的〜析构函数之类的东西.
多年来,程序员使用module = null来释放未使用的代码中的内存.
还要看看这些:
> Can dynamically loaded JavaScript be unloaded?
> Loading/unloading Javascript dynamically
> How to unload a javascript from an html?
希望它对设计您的应用程序有帮助并祝您好运; D