`
suqing
  • 浏览: 186811 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

工程师,请优化你的代码

 
阅读更多
  1. Ajax
  2. jQuery ready事件
  3. 事件处理
  4. DOM操作

 

 

 Ajax

 

大部分项目这么写:

 function getName(personid) {
    var dynamicData = {};
    dynamicData["id"] = personID;
    $.ajax({
      url: "getName.php",
      type: "get",
      data: dynamicData,
      success: function(data) {
        // Updates the UI based the ajax result
        $(".person-name").text(data.name);  
      }
    });
  }

  getName("2342342");

 

 最佳实践: 

function getName(personid) {
    var dynamicData = {};
    dynamicData["id"] = personid;
    return $.ajax({
      url: "getName.php",
      type: "get",
      data: dynamicData
    });
  }

  getName("2342342").done(function(data) {
    // Updates the UI based the ajax result
    $(".person-name").text(data.name); 
  });

 非常灵活

  

jQuery ready事件

 

大部分项目用这段代码做闭包

 

 $("document").ready(function() {
    // The DOM is ready!
    // The rest of the code goes here
  });

 或者用简写

 

 

$(function() {
    // The DOM is ready!
    // The rest of the code goes here
});

 

  • 如果你清楚代码的执行环境 
  • 如果你不关注页面加载性能
  • 如果你不关注最佳实践

。。。这么写就没问题

 

更好的写法是

// IIFE - Immediately Invoked Function Expression
  (function($, window, document) {

    // The $ is now locally scoped 

   // Listen for the jQuery ready event on the document
   $(function() {

     // The DOM is ready!

   });

   // The rest of the code goes here!

  }(window.jQuery, window, document));
  // The global jQuery object is passed as a parameter

 

更进一步,最佳写法:

// IIFE - Immediately Invoked Function Expression
  (function(yourcode) {

    // The global jQuery object is passed as a parameter
  	yourcode(window.jQuery, window, document);

  }(function($, window, document) {

    // The $ is now locally scoped 

   // Listen for the jQuery ready event on the document
   $(function() {

     // The DOM is ready!

   }));

 

  

 

事件处理

 

大部分项目这么写:

  $("#longlist li").on("mouseenter", function() {

    $(this).text("Click me!");

  });

  $("#longlist li").on("click", function() {

    $(this).text("Why did you click me?!");

  });

 

更好的写法:

 var listItems = $("#longlist li");
  listItems.on({

    "mouseenter": function() {

      $(this).text("Click me!");

    },

    "click": function() {

      $(this).text("Why did you click me?!");

    }

  });

 DRY ( Don't repeat yourself. )

 

 最佳实践:

var list = $("#longlist");

  list.on("mouseenter", "li", function(){

    $(this).text("Click me!");

  });

  list.on("click", "li", function() {

    $(this).text("Why did you click me?!");

  });

 使用事件代理(Event Delegation)

 

DOM操作

大部分项目这么写:

$('.class1').click(function() {
   some_function();
});

$('.class2').click(function() {
   some_function();
});

 

  • 如果你喜欢重复的编码
  • 如果你不关心代码性能
  • 如果你不关注最佳实践

更好的实现方法:

$('.class1').$('.class2').click(function() {
   some_function();
});

 

大部分项目这么写:

/ Set's an element's title attribute using it's current text
  $(".container input#elem").attr("title", $(".container input#elem").text());

  // Set's an element's text color to red
  $(".container input#elem").css("color", "red");

  // Makes the element fade out
  $(".container input#elem").fadeOut();

 

  • 如果你喜欢重复的编码
  • 如果你不关心代码性能
  • 如果你不关注最佳实践

。。。这么写没问题

 

更好的实现方法:

// Set's an element's title attribute using it's current text
  $("#elem").attr("title", $("#elem").text());

  // Set's an element's text color to red
  $("#elem").css("color", "red");

  // Makes the element fade out
  $("#elem").fadeOut();

 简化你的选择器

 

最佳实践:

  // Stores the live DOM element inside of a variable
  var elem = $("#elem");

  // Set's an element's title attribute using it's current text
  elem.attr("title", elem.text());

  // Set's an element's text color to red
  elem.css("color", "red");

  // Makes the element fade out
  elem.fadeOut();

 使用变量缓存你的选择器

 

或者是用更简单的写法:

// Stores the live DOM element inside of a variable
  var elem = $("#elem");

  // Chaining
  elem.attr("title", elem.text()).css("color", "red").fadeOut();

 使用链式调用

 

另外一个操作DOM的示例

大部分项目这么写:

// Dynamically building an unordered list from an array
  var localArr = ["Greg", "Peter", "Kyle", "Danny", "Mark"],
  	list = $("ul.people");

  $.each(localArr, function(index, value) {

    list.append("<li id=" + index + ">" + value + "</li>");

  });

 最佳实践:只append一次

// Dynamically building an unordered list from an array
  var localArr = ["Greg", "Peter", "Kyle", "Danny", "Mark"],
  	list = $("ul.people"),
  	dynamicItems = "";

  $.each(localArr, function(index, value) {

    dynamicItems += "<li id=" + index + ">" + value + "</li>";

  });

  list.append(dynamicItems);

 

 

 

 

参考资料:

http://gregfranko.com/jquery-best-practices/

http://stackoverflow.com/questions/18307078/jquery-best-practises-in-case-of-document-ready

http://gregfranko.com/jquery-best-practices/#/29

 

  • 大小: 190.4 KB
分享到:
评论

相关推荐

    top_三维拓扑优化_拓扑优化_三维拓扑优化MATLAB代码_

    三维拓扑优化是一种在工程...通过阅读和理解这段代码,工程师可以学习如何应用MATLAB进行三维拓扑优化,并可以根据自己的需求进行定制和扩展。对于学习和研究结构优化的学者及工程师来说,这样的代码资源是十分宝贵的。

    top88_拓扑优化88行代码_99行_

    在实际应用中,这样的优化代码可以为工程师节省大量的计算时间和资源,特别是在处理大规模或高精度的拓扑优化问题时,效率的提升尤为重要。 总结来说,"top88_拓扑优化88行代码_99行_"是一个针对拓扑优化问题的代码...

    拓扑优化(Topology) 99行代码+MMA优化器调用(代码可直接执行)

    拓扑优化是一种结构优化方法,它通过改变设计区域内的材料分布来优化结构性能,例如最小化重量或最大化刚度。...通过深入理解并实践这段代码,你可以更好地掌握拓扑优化的原理和应用,以及MMA算法的优势。

    鲸鱼优化算法 WOA matlab源代码(详细注释)

    通过学习和理解这个带有详细注释的WOA MATLAB源代码,你不仅可以掌握一种有效的全局优化工具,还能对生物启发式算法的原理和实现有更深入的理解。这个资源对于学生、研究人员以及任何需要解决优化问题的工程师来说都...

    Java工程师不得不看的几千份代码

    这份压缩包文件"Java工程师不得不看的几千份代码"显然是一份丰富的资源集合,旨在帮助Java开发者拓宽视野,掌握更多实践技巧,提升编程能力。下面我们将深入探讨其中可能涵盖的关键知识点。 1. **基础语法与最佳...

    水库优化调度程序代码包含(POA+GA、人工鱼群等4个程序代码)

    这里的"水库优化调度程序代码包含(POA+GA、人工鱼群等4个程序代码)"是一个资源包,提供了多种算法的实现,用于解决水库调度问题。以下是对这些关键词的详细解释: 1. **水库调度**:水库调度是根据气象预测、水文...

    拓扑优化88行代码

    拓扑优化88行,是在经典的99行基础上改进的,精简的,这代码对从事结构设计,优化的研究这者,工程师具有很好的价值。

    蜣螂优化算法MATLAB与Python优化代码(Dung beetle optimizer).7z

    总的来说,蜣螂优化算法是一种创新的生物启发式优化方法,其Python实现为科研人员和工程师提供了一种新的工具,用于解决复杂的优化问题。通过理解算法的原理和应用代码,用户可以灵活地将其应用于实际场景,提升问题...

    【优化求解】基于多策略黑猩猩优化算法求解单目标优化问题附matlab代码.zip

    总的来说,这个压缩包提供了一种新颖的优化算法实现,并给出了Matlab代码,对于研究优化算法、解决实际问题的科研工作者和工程师来说,是一份宝贵的资源。通过学习和应用这些代码,我们可以提升对优化问题的理解,...

    java 代码重构优化 Java 代码优化 java设计优化

    在Java编程领域,代码重构和优化是提升软件质量和性能的关键环节。重构主要是为了改善代码...通过深入学习《重构-改善既有代码的设计》这样的经典书籍,你可以进一步提升自己的编程技艺,成为一名更优秀的Java工程师。

    水库优化调度程序源代码

    【水库优化调度程序源代码】是一个基于C++编程语言实现的软件,用于解决水资源管理中的一个重要问题——水库优化...同时,这也为研究者和工程师提供了一个探索和改进优化算法的平台,以适应不断变化的环境条件和需求。

    鲸鱼优化算法WOA优化BP神经网络回归预测MATLAB代码

    鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一种基于生物行为的全局优化技术,灵感来源于座头鲸捕食...通过深入理解WOA的工作原理和BP神经网络的结构,可以进一步优化代码,适应更多种类的数据和预测任务。

    关于最优化的Matlab源程序,最优化方面很有用

    本资源包含的是一系列关于最优化问题的Matlab源程序,这些程序可以帮助研究者和工程师解决各种复杂的优化问题,同时也非常适合用于撰写学术论文。 一、最优化基础 最优化是指寻找一个函数的极值,即最小值或最大值...

    深度学习中的遗传算法优化BP神经网络预测matlab代码

    在提供的压缩包文件"GA-BP神经网络预测(注释版,可运行)"中,你可以找到已经注释清晰的MATLAB代码,可以直接运行。这个代码首先会加载预处理的Excel数据,这些数据可以是任何需要预测的时间序列或者其他类型的数据。...

    top.rar_拓扑优化99行经典Matlab代码

    总的来说,"top.rar_拓扑优化99行经典Matlab代码"是一个宝贵的教育资源,可以帮助工程师和研究人员快速上手拓扑优化,同时也为有经验的开发者提供了一个可快速实施的参考框架。通过实际运行和修改这段代码,你可以更...

    《深度学习必修课:进击算法工程师》配套代码.zip

    模型训练部分,学员将学习到损失函数的选择(如交叉熵、均方误差)、优化器的应用(如随机梯度下降SGD、Adam、RMSprop)以及学习率调度策略。"ahao2"中的代码可能会展示如何设置训练循环,监控训练过程中的损失和...

    瑞吉外卖项目-项目优化(优化版本代码)

    《瑞吉外卖项目-项目优化(优化版本代码)详解》 瑞吉外卖项目是一个典型的互联网餐饮服务应用,其核心目标是提供...对于任何从事Java软件开发的工程师来说,深入理解和借鉴这些优化策略都是提升自身技能的重要途径。

    169程序注释_simp169行程序注释_measureirq_拓扑优化_优化

    总结来说,这个资料包提供了一个用MATLAB实现的拓扑优化程序,特别适用于那些想要学习和应用SIM普法进行结构优化的工程师或研究人员。程序的详细注释和配套的文档有助于理解和实施这种复杂优化技术,同时也为理解...

    华为软件工程师代码查看器

    8. **性能分析**:可能具备代码性能分析工具,用于检测和优化代码性能,尤其在资源有限的嵌入式环境中显得尤为重要。 9. **自定义配置**:允许用户根据个人习惯定制界面布局、快捷键设置等,提升个性化开发体验。 ...

    【粒子群算法】基于粒子群算法的城轨列车牵引多目标能耗优化问题附matlab代码.zip

    【粒子群算法】基于粒子群算法的城轨列车牵引多目标能耗优化问题附matlab代码.zip这个压缩包文件,主要涉及的是使用粒子群算法解决城市轨道交通列车牵引能耗的多目标优化问题,同时提供了MATLAB实现的代码。...

Global site tag (gtag.js) - Google Analytics