我无法适应UI JavaScript编码的正确练习.所以我正在寻找一种更聪明的方法来做事.我一直在使用jQuery与ASP.NET,我一直在做类似下面的事情似乎不专业和愚蠢. JavaScript UI编程对我来说一直是
$(function(){ $('submit').click(function() { //behaviors, setup styles, validations, blah... }); });
问题:
>因此,代码重复通常难以维护和重用
>由于ClientIds是由ASP.NET生成的,因此很难将代码块拖入单独的js文件中
>公共声明放在母版页上,但jQuery文档就绪函数几乎出现在每个其他页面上
目标:
> JavaScript库/框架独立,这样就可以更轻松地切换框架
>封装/调制逻辑以便于重用,因此在每个页面上,它只是几行简单的初始化代码
>关注点分离,易于维护和可读性
问题:
作为一个C#开发人员,我的想法主要是OO和jQuery是非常程序化的.我理解匿名函数的概念,但总的来说,我的想法仍然是尝试创建一个抽象UI然后声明属性或方法的域模型.但我真的不确定这是否是JavaScript中的方式.或者我是太理想还是我太努力去做一些不应该像OO OO那样的东西?所以问题是:
>我应该开始使用JavaScript原型来封装/调制函数并让它更像OO吗?那么可以封装HTML控件或行为以便重用?
>或者我应该开始将逻辑封装到jQuery插件中?但这样代码将100%依赖于jQuery.
>或任何其他方法?
谢谢.
更新:
我刚刚发现这个slide,这似乎是一个很好的起点.
这也是我刚刚发现的good example.和jQuery的创建者good tutorial.
这具有以下好处
>更容易在同一页面上引入范围和同一事物的多个实例
>更容易管理客户端ID闹剧
我仍然在其中使用Jquery.
所以举一个例子,如果我有一个基于javascript的widgit我想利用我会创建一个名为widget的“对象”并将其保存在Widget.js文件中.小部件对象将具有实例变量,构造函数和公共,私有方法,就像任何其他OO语言一样,例如Widget.js看起来像
// constructor function Widget(aFooId,bBarId) { // instance variables var fooId = aFooId; var barId = bBarId; // some magic to expose public methods this.Init = Init; // public methods function Init() { alert("called init"); } //private methods function PrivateMethod() { } }
aspx页面上的调用看起来像
var widgetInstance = new Widget("<%=Foo.ClientId%>",<%=Bar.ClientId%>); widgetInstance.Init();