从2005年的Javascript意大利面条代码迁移到2013年的模块化Javascript?

亚力山大

我继承了一个遗留的JS多页应用程序,并且正在考虑将其代码迁移到现代模块化Javascript的想法:

  • 实现松耦合
  • 实施模块化系统

实际上,使用这些技术开始新项目似乎比迁移旧样式要容易得多。

我现在所拥有的是类似的东西

...
<a href="javascript:DoSomething('hey', 25);">Click this !</a>
...

在JS文件中,没有任何上下文的全局函数称为DoSomething。

我读了很多有关松散耦合和模块化JS的文章,但是我不知道如何实际实现像我的愚蠢示例那样的东西,因为它似乎没有任何上下文,然后通过事件和松散附加所有简单的按钮/链接动作耦合使阅读代码和找出简单的动作命令的作用变得更加困难。

假设到处都有大量这样的链接和全局函数,您实际上如何实现这种事情?

编辑:我应该更清楚一些,对不起。实际上,我不能使用任何JS生成的DOM技术(例如Backbone视图等),因为我的所有HTML都是在服务器端生成的(不幸的是,此应用程序中是强制性的),因此问题仍然在于如何有效地提出模块这样的代码,如果它们的大部分工作是响应DOM事件(在服务器端生成的特定预定义元素上),然后以页面更改或AJAX调用的形式将数据发送回服务器。

对于类似于实用程序的模块或与DOM分离的其他内容,很清楚如何实现模块,但是对于与JS不生成的静态DOM绑定的内容呢?

具体来说,在哪里以及如何实现事件处理程序,触发更改DOM元素?等等。

安迪·诺沃金

我在2013年必须这样做,这是一项重大任务。RequireJS使您能够将模块分为单独的文件(如果需要),在其中明确列出了依赖性。骨干网可以为您提供一些将事物分解为模型和视图(以及您自己的控件类)的结构。下划线模板可让您制作可以由模型数据填充的干净HTML模板。

真正的答案是,您必须像使用更传统的OOP语言一样思考。例如,调解器模式可让您的模块在保持解耦状态的同时相互通信。

如果您的页面上有一个Click this div,并且在javascript中有一个相应的Click侦听器,该监听器现在将位于简单模板中的Click this div,例如:

<div id="myTarget">Click this</div>

虽然主页可能有类似以下内容:

<div id="myApp"></div>

单击此视图可能会附加到#myApp并使用简单模板的内容填充它。执行此操作的主干视图如下所示:

var myView = Backbone.View.extend({
    el: "#myApp",
    events: {
         "click #myTarget" : "handleClick"
    },
    handleClick : function(){
        // do something
    },
    render : function(){
        this.$el.html(myTemplate);
    }
});

冲洗并重复您需要用来填充页面的各种操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript模块化算术

来自分类Dev

在javascript中简化/模块化我的代码

来自分类Dev

在javascript中简化/模块化我的代码

来自分类Dev

我想使用 javascript 模块化代码

来自分类Dev

从2010年到2013年的迁移问题

来自分类Dev

我可以像这样对我的JavaScript代码进行模块化吗?

来自分类Dev

如何重构此Javascript代码,使其更加模块化和简洁?

来自分类Dev

我可以像这样对我的JavaScript代码进行模块化吗?

来自分类Dev

模块化python代码

来自分类Dev

TFS显示名称在2010年迁移到2013年后随服务器移动而更改

来自分类Dev

如何在2015年调试JavaScript代码?

来自分类Dev

JavaScript模块化和依赖注入之间的区别

来自分类Dev

如何使Javascript中的提取API模块化

来自分类Dev

具有Javascript模块化模式的Kendo UI

来自分类Dev

在JavaScript中构建模块化方法

来自分类Dev

模块化模式下的Javascript宽松扩展

来自分类Dev

JavaScript模块化和依赖注入之间的区别

来自分类Dev

Oro JavaScript 模块化不起作用

来自分类Dev

如何模块化角度代码?

来自分类Dev

Flexdashboard-模块化rCharts代码

来自分类Dev

将BizTalk 2010源迁移到2016年

来自分类Dev

用JavaScript计算年

来自分类Dev

编译器是否能够优化意大利面条代码?

来自分类Dev

解开Knuth的烦恼:如何重组意大利面条代码?

来自分类Dev

如何重写此代码(“ setTimeout-s”的意大利面条)?

来自分类Dev

将 JavaScript 迁移到 TypeScript

来自分类Dev

.eml中的Exchange日历约会唯一标识符从2003年迁移到2010年

来自分类Dev

从2010年到2013年迁移SharePoint内容数据库

来自分类Dev

Javascript模块化设计模式-哪个更好:自调用函数还是对象文字方法?

Related 相关文章

热门标签

归档