backbone最佳实践

  • 前言:
    用backbone开发有几个月时间了,以下是本人使用过程中总结的一些小建议。最大的感受是:对于框架,会用很简单,用得好是非常不容易的,无论使用什么框架,优秀的代码看起来都差不多,而丑陋的代码是千奇百怪的。

  • 不指定el-1
    为了保持视图的独立性,不要指定el到具体的dom节点中,我们希望视图中的任何操作只针对视图本身而不会影响外界环境,当我们把el指定到外部节点时,在某个场景下执行了view.remove(),就把视图之外的dom删掉了,在继续渲染就会出错,所以在视图之外执行渲染会更好:

$("#id").html(view.render().el);

意识:解耦。

  • 不要滥用框架-2
    有个普遍的误区:当选定了某个框架,比如backbone,进行开发时,我们会习惯性的认为,任何一个功能都应该使用backbone来实现才合理。backbone是一种mvc框架,而mvc框架是以数据模型为驱动的框架,很多场景是不适用的,比如:以展示静态信息为主的官网首页、侧重操作dom的绘图功能等。

意识:明确使用框架的初衷,不要为了使用而使用。滥用框架的根本原因在于不清楚框架产生的动机,只停留在使用的层面上,比如大家都在使用mvc框架,却不会深究mvc是什么。使用了双向数据绑定,却不知道适用的场景是什么。

  • 使用事件代理改善加载性能-3
    当视图中存在很多交互时,需要给多个dom节点挂载事件,一般的写法是:
events: {
    "click #id1": "fun1",
    "click #id2": "fun2",
    "click #id3": "fun3",
    "click #id4": "fun4",
    "click #id5": "fun5",
    "click #id6": "fun6"
}

更好的写法:

events: {
    "click #bigId": "funAgent"
},

// 处理事件代理
funAgent: function(e) {
    if (this.$(e.target).closest("id1").length > 0) {
        this.fun1();
        return;
    }

    if (this.$(e.target).closest("id2").length > 0) {
        this.fun2();
        return;
    }

    if (this.$(e.target).closest("id3").length > 0) {
        this.fun3();
        return;
    }

    ......
}

意识:jquery选择器是性能杀手。

  • 总结:良好的意识是编写高质量代码的前提,而这些意识在任何框架下都是通用的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,827评论 25 709
  • 科学的两个维度 科学和技术 一个是仰望星空的 一个是脚踏实地的…… 西方的哲人科学家……为什么近代科学产生在西方?...
    环形废墟阅读 3,942评论 0 0
  • 张清的日精进第38天 体验入 聊天谈到到底什么是生意?有说做生意就是做人,有说做生意就是做正确的事,有说做生意先做...
    kiyoi2017阅读 1,319评论 0 1
  • 自打我们出生,我们身边就有印刷有电视,甚至过不了多久,电脑就开始流行、互联网开始普及。小时候,除了上学、父母上班、...
    比太阳还要温暖阅读 2,338评论 0 3
  • 4月15日 日记星球 分享天使 第145天 今天妈妈生日,80岁了,爸爸率全家人为妈妈过寿,我的舅舅...
    分享天使阅读 1,293评论 0 0