dag*_*da1 6 javascript amd requirejs backbone.js
我有一个遗留应用程序,我已将部分应用程序重构为单独的backbone.marionette应用程序.我没有时间或预算来重构整个事情,我希望我的代码更容易管理,这让我想起了requirejs.
大多数文件都是缩小的并且在一起.
我可以将requirejs用于这种类型的混合解决方案,在那里我可以处理单独的主干模块并仍然可以访问现有的javascript吗?
作为刚刚开始在遗留的Backbone使用代码库上使用Require.js的人,我感到很痛苦:-)我使用了一些方法,我将在这里列出.
假设您有fileA.js和fileB.js,并且您希望将fileB.js转换为使用Require,而不更改fileA.js:
滥用全球空间
要求不会强制您通过它导入每个变量; 即使在Require-ified文件中,您仍然可以像使用非需求代码一样访问全局变量.这意味着如果fileA在全局/窗口命名空间中创建其所有变量(如果您之前没有使用Require,则非常可能),无论fileA是否使用Require,fileB都可以访问它们.
这是我的大部分遗留文件的解决方案; 我只是将它们保留原样,然后把所有新的需求物品放在它们下面.这样,当需求文件需要它们时,它们创建的每个全局都已准备就绪并等待.
现在,如果fileB依赖于fileA,这是很好的,但是如果它反过来呢?好吧,要求也不会阻止你创建新的全局变量,这意味着fileB可以与fileA共享它想要的任何东西,只要它愿意将它放在全局空间中.
重复的代码
不要生气; 我知道"干"编码实践有多重要.但是,对于一些文件,我最后做的就是制作Require-ified duplicates.这是必要的,因为我正在使用Handlebars插件来进行我的模板编译,所以如果我想要任何文件使用Handlebars,我需要它是Require-ified.
为了解决正常的非DRY问题,我在旧文件中添加了评论,有效地说"不要向此文件添加任何内容,要求版本是'真实'版本".我的计划是随着时间的推移慢慢地将更多的站点转换为Require,直到我最终可以消除原始的,过时的文件.我们有一个小商店,所以它适用于我们,但在一个更大的公司,这可能不会飞.
重构
我知道,你说你想要避免这种情况,但有时候一点点的重构可以给你带来很多好处.我个人根本没有重构任何东西,但只有几个地方是一个小调整大大简化的事情.
总的来说,我看到重构是你在切换到Require之后所做的事情(慢慢地随着时间的推移将你的非需求代码"加入到折叠中").
垫片
Chchrist说垫片是解决"需要中途"问题的一种好方法是正确的但是,我个人根本没有使用它们,所以我不能真正说出它们,除非"看看它们,他们可能会有所帮助".
| 归档时间: |
|
| 查看次数: |
973 次 |
| 最近记录: |