 
      (写真はインターネット上のどこかで借りたものです)
[ リポジトリ ]
みなさんこんにちは。
6、7、8のロバの必須サポートとjQueryの避けられない使用の時代は長く過ぎ、DOM APIは次第に単一のビューになりつつありますが、VanillaJSは長いソーセージであるという声明をインターネット上で見つけることがよくあります。
のように、なぜ私はこのように書く必要があります:
document.querySelector('.selector');
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    :
$('.selector');
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    , , , . , , :
// selects one node matched given selector
function $(selector, ctx) {
	return (ctx || document).querySelector(selector);
}
// selects all nodes matched given selector
function $$(selector, ctx) {
	return [].slice.call((ctx || document).querySelectorAll(selector));
}
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    . , , - , DOM.
, - (Zepto, jQuery).
«» jQuery DOM . youmightnotneedjquery vanilla-js. . vanilla-js AJAX , XMLHttpRequest. Fetch API.
, , . transition, CSS Animations , , Web Animations JavaScript API .
***
, DOM , - , balalaika.js. , — jQuery- , :
on
      
      ,
off
      
      ,
is
      
      ,
extend
      
      .
.
is
      
      , matches .
extend
      
      , JavaScript Object.assign,
on
      
      off
      
      - , , : .
, , . , «bala» — ( ), — «» -.
, bala.js , « VanillaJS». , DOM Element.
myAwesomeLib(document.getElementByID('block'));
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    : , NodeList , , jQuery. ~400 , .
?
, , (,
appendChild
      
      ). .
$('.selector')[0].appendChild(node);
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ,
$.one
      
      , , ,
null
      
      //     ,      
$.one('.selector').appendChild(node); 
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    $.one
      
      , , : ( : $$ $) .
import $ from 'balajs';
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    var $ = require('balajs');
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ?
, : , , , NodeList, jQuery array-like
$('.one, two')
$(document.querySelectorAll('.selector'));
$(document.body);
$(element.children);
$(jQuery('.selector'));
$([document.querySelector('.one'), document.querySelector('.two')])
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    var elements = $('.my-selector', element);
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    DOM ready
$(function() {
  alert('DOM is ready');
});
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    , DOM ready body
    ...
    <script src="app.js"></script>
  </body>
</html>
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    var div = $('<div><span class="yeah"></span></div>');
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    , , - ( ), ,
td
      
      tr
      
      ,
tr
      
      tbody
      
      ,
option
      
      select
      
      .
var cells = $('<td>foo</td><td>bar</td>', 'tr');
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    bala.js jQuery- .
$.fn.toggle = function(boolean) {
  this.forEach(function(item) {
    item.hidden = boolean;
  });
};
$('.button').toggle(false); // hides all buttons
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ?
<script>
$=function(d,e,c,f,g){c=function(a,b){return new f(a,b)};f=function(a,b){e.push.apply(this,a?a.nodeType||a==window?[a]:""+a===a?/</.test(a)?((g=d.createElement(b||"q")).innerHTML=a,g.children):(b&&c(b)[0]||d).querySelectorAll(a):/f/.test(typeof a)?/c/.test(d.readyState)?a():d.addEventListener("DOMContentLoaded",a):a:e)};c.fn=f.prototype=e;c.one=function(a,b){return c(a,b)[0]||null};return c}(document,[]);
</script>
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    <script>
    $(function() {
        alert($('.my-selector').length);
    });
</script>
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    IIFE
(function(win, $) {
    // your code starts here
    $(function() {
        alert($('.my-selector').length);
    });
  // your code ends here
})(window, function(d,e,c,f,g){c=function(a,b){return new f(a,b)};f=function(a,b){e.push.apply(this,a?a.nodeType||a==window?[a]:""+a===a?/</.test(a)?((g=d.createElement(b||"q")).innerHTML=a,g.children):(b&&c(b)[0]||d).querySelectorAll(a):/f/.test(typeof a)?/c/.test(d.readyState)?a():d.addEventListener("DOMContentLoaded",a):a:e)};c.fn=f.prototype=e;c.one=function(a,b){return c(a,b)[0]||null};return c}(document,[]));
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    bala.js NPM
npm install --save balajs
True-way
for(let element of $('.button')) {
  console.log(element);
}
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    old-school-way
$('.button').forEach(function(element) {
  console.log(element);
});
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    $('.my-selector').forEach(function(element) {
    element.style.color = 'red';
});
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    , :
$.one('.my-selector').style.color = 'red';
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    closest while.
$('.my-selector').forEach(function(element) {
  element.addEventListener('click', function(evt) {
    if(this.contains(evt.target.closest('.delegated-selector'))) {
      alert('yep!');
    }
  });
});
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    $.one('.my-selector').addEventListener('click', function(evt) {
  if(this.contains(evt.target.closest('.delegated-selector'))) {
    alert('yep!');
  }
});
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    $('.my-selector').forEach(function(element) {
    element.remove();
});
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    $.one('.my-selector').remove();
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    DOM4
element.remove
      
      element.closest
      
      .
( , , bala.js. .)
jQuery?
, .
Web Aimations API JS ( , jQuery, GPU ).
//     
$.one('.my-selector').animate([
  {transform: 'translate(' + snowLeft + 'px, -100%)'},
  {transform: 'translate(' + snowLeft + 'px, ' + window.innerHeight + 'px)'}
], {
  duration: 1500,
  iterations: 10,
  delay: 300
});
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    , ( , Web Animations API).
Ajax
. Fetch API XMLHttpRequest.
fetch('user.json')
  .then(function(response) {
    return response.json();
   })
  .then(function(user) {
    console.log(user);
  })
  .catch(alert);
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    Fetch API.
jQuery? ?
, Internet Explorer Webkit-based . , Internet Explorer, , , , Blink V8, 11; …
, : polyfill.io. User-Agent . chico RReverser .
- , , , , jQuery ba.js.