我可以对我的Javascript进行任何改进吗?

时间:2015-02-17 07:27:36

标签: javascript performance javascript-events browserify

我最近开始使用browserify并创建了一个自定义模块,根据点击的ID切换两个菜单并应用透明叠加效果。在菜单后面。我已经有了它的工作,但只是想得到一些关于天气的反馈它可以提高性能或编码明智,因为我想提高我的JS技能。

/**
* Require modules
*/
var dullBackground = require('./dullBackground');

/**
* Export module
*/
module.exports = function() {

  'use strict';

  /**
  * Selectors
  */
  var menu = document.querySelector('#nav-main'),
      panel = document.querySelector('#overlay-panel'),
      productsPanel = document.querySelector('#products-panel'),
      systemsPanel = document.querySelector('#systems-panel'),
      close = document.querySelector('#overlay-close'),
      activeClass = "active",
      hideClass = "hide";

  /**
  * Methods
  */
  function togglePanel (event) {

    // Selectors
    var element = event.target,
        elementId = element.id;

    event.preventDefault();

    // Conditions
    if(elementId === 'page-products' || elementId === 'page-systems') {
      dullBackground();
      panel.classList.add(activeClass);
    }
    if(elementId === 'page-products') {
      productsPanel.classList.remove(hideClass);
    }
    if(elementId === 'page-systems') {
      systemsPanel.classList.remove(hideClass);
    }

  }
  function closePanel (event) {

    // Actions
    panel.classList.remove(activeClass);
    event.preventDefault();

    // Conditions
    if (!productsPanel.classList.contains(hideClass)) {
      productsPanel.classList.add(hideClass);
    }
    if (!systemsPanel.classList.contains(hideClass)) {
      systemsPanel.classList.add(hideClass);
    }

  }

  /**
  * Events/APIs/init
  */
  menu.addEventListener('click', togglePanel, false);
  close.addEventListener('click', closePanel, false);

};

1 个答案:

答案 0 :(得分:1)

在性能方面,我发现了代码缺少的两件事:

  1. 使用getElementById而不是querySelector:getElementById比querySelector快得多。

    1. 使用链接如下:
    2. var elemId = event.target.id;

      而不是

      var element = event.target,
              elementId = element.id;