【发布时间】:2016-03-31 21:10:24
【问题描述】:
在构建站点时,作为个人喜好,我喜欢创建一个主 javascript 文件,该文件的顶部有 window.load 和 window.ready。
为了便于阅读,我倾向于将我想要在这些函数中的任何逻辑重构为它们自己的函数,并且通常我只在元素存在于 DOM 中时才运行这些函数。
在大多数情况下,我觉得这比将所有内容直接转储到加载/就绪函数更干净,但随着我的 javascript 技能提高,我开始编写更多匿名函数,我的代码开始看起来有点像随着文档准备部分开始变长,出现纠结。
出于这个问题的目的,我想知道:
- 有没有更好的方法来像我一样只运行一个函数/代码来检查长度?
- 有没有更好的方法将上述检查纳入我编写插件的方式中?
- 主要问题:除了编写单个以 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