【问题标题】:Moving beyond writing simple functions within document.ready() [closed]超越在 document.ready() 中编写简单函数 [关闭]
【发布时间】:2016-03-31 21:10:24
【问题描述】:

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

为了便于阅读,我倾向于将我想要在这些函数中的任何逻辑重构为它们自己的函数,并且通常我只在元素存在于 DOM 中时才运行这些函数。

在大多数情况下,我觉得这比将所有内容直接转储到加载/就绪函数更干净,但随着我的 javascript 技能提高,我开始编写更多匿名函数,我的代码开始看起来有点像随着文档准备部分开始变长,出现纠结。

出于这个问题的目的,我想知道:

  1. 有没有更好的方法来像我一样只运行一个函数/代码来检查长度?
  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 );

【问题讨论】:

  • 好吧,TBH 这可能是一个基于意见的问题。什么是最好的,我不知道。我有我的偏好,但它可能不适合你。例如,我喜欢使用require.js 来拆分我的文件,并且我创建了自己的视图框架,它使用data-view 属性来自动初始化视图。有些人可能更喜欢使用路由器,例如 Backbone 中的路由器...
  • 我目前在一家代理机构工作,一旦离开营销网站就可以快速周转......我改变了我的问题以更好地适应,我认为我的主要问题是:“我如何超越写作单一以 jQuery 为中心的脚本,作为提高我的 javascript 技能的一种手段。”请记住,我需要它是一个相当快速和轻量级的过程。我同意我的问题是主观的......我会研究 require.js

标签: javascript jquery refactoring document-ready


【解决方案1】:

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

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

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

JQuery Boilerplate: 该网站展示了许多示例,并解释了它们如何以及为什么被认为是最佳实践。 (帮了我很多)

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

编辑:如果您希望更好地构建代码结构,这本关于设计模式的书尤其有用。

【讨论】:

  • 我通宵阅读了require js,现在我觉得这绝对是我应该阅读的内容。特别是从 requirejs 网站阅读以下内容对 requirejs.org/docs/whyamd.html 非常有帮助,非常感谢设计模式书,这看起来也是一个很好的资源。
猜你喜欢
  • 2023-03-13
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
  • 2011-11-05
相关资源
最近更新 更多