超越在 document.ready() 中编写简单函数

Moving beyond writing simple functions within document.ready()

在构建站点时,作为个人喜好,我喜欢创建一个主 javascript 文件,文件顶部有 window.load 和 window.ready。

作为易读性的一种方式,我倾向于将这些函数中我想要的任何逻辑重构到它们自己的函数中,通常我只 运行 如果元素存在于 DOM 中的函数。

在大多数情况下,我觉得这比将所有内容直接转储到 load/ready 函数中更干净,但是随着我的 javascript 技能的提高,我开始编写更多的匿名函数,并且我的代码随着文档就绪部分开始变长,看起来有点乱。

为了这个问题的目的,我想知道:

  1. 有没有更好的方法来像我一样只 运行 一个 function/code 来检查长度?
  2. 是否有更好的方法将上述检查合并到我编写插件的方式中?
  3. 主要问题:我如何超越编写单一 jQuery 中心脚本,作为提高我的 javascript 技能的一种方式。

我已经提供了一个示例来说明我的文件的外观。

$(window).load(function() {
  if ( $('#el-1').length !== 0 ) { $('#el-1').addClass('add'); }
});

$(document).ready(function() {
  if ( $('#el-2').length !== 0 ) { new my_plugin('#el-2');  }
  if ( $('#el-3').length !== 0 ) { simple_function();  }
  /* This starts to get messy when there's multiple checks, 
  // longer function names, and different libraries etc.
  */
});

var simple_function = function() {
  //do the short thing
};

;(function( window, $ ) {
  'use strict';
  function my_plugin( el, options ) {
    this.el = $(el);
    this.options = $.extend( this.defaults, options );
    this._init();
  }
  my_plugin.prototype = {
    defaults : {
      something: 'something'
    },
    _init : function() {
      // do the things
    }
    _internalFunction: function() {
      // do the things
    },
    externalFunction: function() {
      // do the things
    }
  }
  window.my_plugin = my_plugin;
})( window , jQuery );

您的方法在技术上已经是正确的。其他一切都取决于您使用的框架、技术和加载方法等。否则,一切都与意见和惯例有关。如果您在一家制定了非常严格的代码编写规则的公司工作,那么无论如何您都必须遵守这些规则。

在将代码拆分为多个文件时,您可以使用模块定义 format/pattern,例如 requirejs 或 commonjs,以更好地管理依赖项和模块。

如果您正在谈论 javascript 和 jquery 的最佳实践和设计模式,那么以下资源可能会有所帮助:

JQuery Boilerplate: 该网站举例说明了许多示例,并解释了它们如何以及为何被视为最佳做法。 (对我帮助很大)

Learning JavaScript Design Patterns: 这是一本免费的在线书籍,由 Addy Osmani 编写,他是 Google 工程师,也是 jqueryboilerplate.com

的开发人员之一

编辑:如果您想更好地构建代码,设计模式这本书尤其有用。