作者grence (dalalida)
看板Ajax
标题Re: [问题] 如何管理大量事件绑定、错误处理
时间Mon Aug 26 01:22:50 2013
※ 引述《tomin (弱水三千 只取一瓢饮)》之铭言:
: ※ 引述《grence (dalalida)》之铭言:
: : 拆成独立的 js档(眼不见为净XD
: : 再看是用前端处理:
: : window.onload=function(){
: : getScript("add.js");
: : getScript("delete.js");
: : }
: : 或是配合後端:
: : <script src="combine?file=add.js,delete.js"></script>
: : 这做法的前提是各 function彼此独立,不然考虑到载入、执行顺序又会很罗嗦。
: : 不过我觉得原本的程式看起来不会很难维护…可能是 PO文的时候有简化过?
: : 如果是懂 js但对原程式架构不熟的人,看到这种可以直接翻译的程式码反而比较单纯;
: : 画面上看到 .delete_button_1,
: : 要知道它做了什麽事就直接在程式码搜寻 ".delete_button_1"
: 拆档看起来很乾净 只是还是放同一个档方便:
: 1.维护的人只要搜一个档即可找到所有资讯
: 2.变数、function似乎要同个档才能互相引用
所以我觉得你的状况可能用不着拆档案,
我用过的一个例子是把功能跟 dom操作分开:
====
var namespace = {
add: function(){},
update: function(){},
delete: function(){},
....
}
====
$(function(){
$(".addButton").click(namespace.add);
...
});
====
: 原本程式有简化过 不然code太长也不好阅读
: 我有漏讲一个问题 我试着将一些function归类:
: function initForm() {
: function addButton() {}
: function deleteButton() {}
: }
: 这样写视觉上是有分类的
我觉得不只视觉上有分类,把变数有效范围缩小,对阅读也有帮助;
但这点也可以透过团队规范(convention)达成。
: 但其实没必要这样包装 本来只有这样写
: function addButton() {}
: function deleteButton() {}
: 只是这样的function一多 就会觉得有点乱 想要将fn分群组
: 还是我fn命名上动手脚就好了? 例如都有个prefix
好像又跟 convention扯上关系…但是通常公司、团队都没有XD
没有的话,就让自己三个月後还能看懂就好。
: formAddButton
: formDeleteButton
: 然後把同一类的摆近一点 似乎就够一目了然了
: : 我自己写 js很少用 try catch,即使没出错,浏览器的效能也会有影响,
: : 有时候还会遇到奇怪的 bug
: : 而且 js检查变数是否有值或是给预设值都很简单,
: : function test(param, option){
: : param = param || {};
: : option && option.handler && option.handler();
: : };
: 其实错误也只有拿不到node的问题 因为有时候DOM结构不如预期
: 拿不到node 只会拿到null/undefined 那我要嘛帮他初始化
: 要嘛检查拿到的东西是不是null,再往下跑?
我遇到的通常 null就不做事了,偶尔要 append node才有初始化…
呃,这不就我一开始回文举的两个可能状况XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.176.94.242
1F:→ dlikeayu:JQ直接写.click现在有直接bind的了吗??? 08/26 09:26
2F:→ dlikeayu:记得不是要.on("click", function(){}) 08/26 09:26
3F:→ kerash:.click 不是很早就有了吗@@? 08/26 12:28
4F:→ akiratw:.click(function(){}) = .on('click', function(){}) 08/26 12:53
5F:推 tomin:Namespace很赞 我来试试 谢谢 08/26 22:44
6F:→ dlikeayu:之前我怎麽记得用click直接做的话,developer的浏览器不 08/27 11:20
7F:→ dlikeayu:能用来监听debug 08/27 11:21
8F:→ dlikeayu:当然能有click的效果是没错 08/27 11:21
9F:→ dlikeayu:我想起来了,该篇是在说onClick的问题 不是click() 08/27 11:41
10F:→ dlikeayu:一时记错 抱歉= = 08/27 11:41