JavaScript

[JS] JS와 JQuery 코드 비교

효진인데요 2023. 8. 3. 17:39

 

 

0. JQuery란?

 

 

 

  •  웹사이트에 자바스크립트를 쉽게 활용할 수 있도록 도와주는 오픈소스 기반의 자바스크립트 라이브러리
  • 거의 모든 웹 브라우저에 적용이 될 정도로 여러 브라우저에 대한 호환성이 있음
  • 물론 JS 만으로도 충분히 구현이 가능하지만, 코드를 쉽고 간결하게 작성할 수 있도록 도움을 줌
  • CDN을 불러와야 하기 때문에, 코드가 길어지고 무거워지면 JS와 비교하였을 때 시간이 조금 더 걸릴 수 있다는 특징

 

사실 JQuery는 점점 입지가 줄어들고 있다고 한다. React나 Vue와 같은 자바스크립트 라이브러리가 많이 사용되며 그만큼 JQuery에 대한 관심도가 줄어드는 것 같다고 생각한다.

 

실제로 google trend 사이트에 들어가 해당 검색어에 대한 작년 5년간의 관심도 변화를 확인할 수 있는데, 확연하게 관심도의 감소 추세를 확인할 수 있다. 그러나 현재까지도 쓰이고 있기에 간단하게 JS와 코드들을 비교해보려고 한다.

 

 

( 해당 사이트에서 여러 검색어에 대한 관심도 변화 추세를 확인할 수 있어서 상당히 흥미롭다.)

 

 

google trend - 지난 5년간 jQuery의 관심도 변화

 

 

 

 

1. val ()

 

<h2>val()</h2>
<input type="text" value="input" />
<button type="button" onclick="getValue();">값 가져오기</button>
<button type="button" onclick="setValue();">값 설정하기</button>

 

function getValue() {
  // js
  // const inputVal = document.querySelector('input').value
  // alert(inputVal)

  // jquery
  const value = $('input').val();
  alert(value);
}

function setValue() {
  // js
  // document.querySelector('input').value = 'hihi'

  // jquery
  $('input').val('hellohello');
}

 

초기 출력 화면

 

 

 

 

현재 input 값을 alert 창으로 띄워주는 getValue와 input 안의 값을 임의의 값으로 바꾸는 함수인 setValue이다.

js와 jquery 함수를 함께 볼 수 있도록 구분해 두었는데, js에 비해 jquery의 코드가 조금 더 간단하고 짧아지는 것을 확인할 수 있다.

 

 

 

2. css ()

 

<h2>css()</h2>
<span>안녕 1</span>
<span>안녕 2</span>
<br />
<button type="button" onclick="changeCssJS();">js로 바꾸기</button>
<button type="button" onclick="changeCssJquery();">jQuery로 바꾸기</button>
<button type="button" onclick="getCssJquery();">
  jQuery로 css값 가져오기
</button>

 

function changeCssJS() {
  const span = document.querySelector('span');
  span.style = 'font-size : 20px; color: red';
}

function changeCssJquery() {
  // case1 : css 속성 하나하나 작성
  //   $('span').css('font-size', '40px');
  //   $('span').css('color', 'blue');

  // case2 : css 여러 속성 한번에 적용
  $('span').css({
    fontSize: '40px', // 모든 span에 대해 폰트 크기 변경
    color: 'blue', // 모든 span에 대해 폰트 색상 변경
  });
}

function getCssJquery() {
  //   console.log($('span').css('color')); // rgb(255, 0, 0)
}

 

초기 출력 화면

 

js로 스타일 적용 후 css 값 출력해보기

 

jquery로 스타일 적용 후 css 값 출력해보기

 

 

이를 보면 js로 스타일을 적용하는 경우, 두개의 span 요소 중 앞에 있는 한 개의 요소에만 적용이 되고,

jquery로 스타일을 적용하면 두 요소에 모두 적용이 되는 것을 확인할 수 있다.

 

 

 

3. attr ()

 

<h2>attr()</h2>
<a href="https://www.google.com" target="_blank">google</a>
<br />
<button type="button" onclick="changeAttrJS();">js로 바꾸기</button>
<button type="button" onclick="changeAttrJquery();">jQuery로 바꾸기</button>

 

function changeAttrJS() {
  const a = document.querySelector('a');
  a.setAttribute('href', 'https://naver.com');
  a.textContent = 'naver';
}

function changeAttrJquery() {
  $('a').attr('href', 'https://daum.net');
  $('a').text('daum');
}

 

초기 출력 화면

 

 

js로는 a 태그를 선택 한 뒤, 그 안의 href 속성을 직접적으로 바꿔 클릭 시 이동되는 url과 text를 바꿔주었다.

jquery로도 동일하게 a 태그를 선택 후, .attr 속성을 사용하여 url을 바꿔준 것을 확인할 수 있다.

 

 

 

4. text (), html ()

 

<h2>text()</h2>
<p class="p-text">안녕하세요!!!!</p>
<button type="button" onclick="changeTextJS();">js 바꾸기</button>
<button type="button" onclick="changeTextJquery();">jQuery로 바꾸기</button>

<h2>html()</h2>
<p class="p-html">안녕하세요!!!!</p>
<button type="button" onclick="changeHtmlJS();">js 바꾸기</button>
<button type="button" onclick="changeHtmlJquery();">jQuery로 바꾸기</button>

 

// text()
function changeTextJS() {
  const text = document.querySelector('.p-text');
  text.textContent = 'changed text with js';
}

function changeTextJquery() {
  $('.p-text').text('changed text with jQuery');
}

// html()
function changeHtmlJS() {
  const html = document.querySelector('.p-html');
  html.innerHTML = '<h3>javascript</h3>';
}

function changeHtmlJquery() {
  $('.p-html').html('<h3>jQuery</h3>');
}

 

초기 출력 화면

 

text () 와 html () 함수는 작성하는 방식이 굉장히 비슷하다.

바꾸려는 클래스를 갖는 요소를 선택한 뒤,

text 함수의 경우 js : textContent 혹은 innerText를, jquery : .text를 활용한다.

html함수의 경우 js : innerHTML을, jquery : .html을 활용한다.

 

짧고 간단한 코드이지만, 그럼에도 불구하고 확실히 코드가 간결해진 것은 확인할 수 있다.

 

 

 

5. 리스트 요소 추가하기

 

<h2>요소 추가하기</h2>
<ul class="colors">
  <li class="orange">orange</li>
  <li class="green">green</li>
  <li class="navy">navy</li>
</ul>

<h3>append() - 선택된 요소의 자식 요소 중 마지막에 추가</h3>
<button type="button" onclick="appendJS();">js 바꾸기</button>
<button type="button" onclick="appendJquery();">jQuery로 바꾸기</button>

<h3>prepend() - 선택된 요소의 자식 요소 중 맨 처음에 추가</h3>
<button type="button" onclick="prependJS();">js 바꾸기</button>
<button type="button" onclick="prependJquery();">jQuery로 바꾸기</button>

<h3>before() - 선택된 요소의 형제 요소로 이전 형제로 추가</h3>
<button type="button" onclick="beforeJS();">js 바꾸기</button>
<button type="button" onclick="beforeJquery();">jQuery로 바꾸기</button>

<h3>after() - 선택된 요소의 형제 요소로 이전 형제로 추가</h3>
<button type="button" onclick="afterJS();">js 바꾸기</button>
<button type="button" onclick="afterJquery();">jQuery로 바꾸기</button>

 

// append()
function appendJS() {
  const colorList = document.querySelector('.colors');
  const last = document.createElement('li');
  last.textContent = '마지막 자식으로 추가된 js';
  colorList.append(last);
}

function appendJquery() {
  $('.colors').append('<li>마지막 자식으로 추가된 jQuery</li>');
}

// prepend()
function prependJS() {
  const colorList = document.querySelector('.colors');
  const first = document.createElement('li');
  first.textContent = '첫 자식으로 추가된 js';
  colorList.prepend(first);
}

function prependJquery() {
  $('.colors').prepend('<li>첫 자식으로 추가된 jQuery</li>');
}

// before()
function beforeJS() {
  const green = document.querySelector('.green');
  const li = document.createElement('li');
  li.innerText = '이전 형제 요소로 추가(js)';
  green.before(li);
}

function beforeJquery() {
  $('.green').before('<li>이전 형제 요소로 추가(js)</li>');
}

// after()
function afterJS() {
  const green = document.querySelector('.green');
  const li = document.createElement('li');
  li.innerText = '다음 형제 요소로 추가(js)';
  green.after(li);
}

function afterJquery() {
  $('.green').after('<li>이전 형제 요소로 추가(js)</li>');
}

 

초기 출력 화면

 

js로 여러 요소 추가 (jquery도 동일하다.)

 

요소를 추가하는 과정을 보면 js 의 경우,

1. color 클래스를 갖는 요소를 선택하고, ( 특정 클래스 형제 요소로 추가하는 경우에는 해당 클래스를 선택 )

2. li 태그를 선택해 요소를 생성한 뒤,

3. li 태그의 textContent로 텍스트를 넣고

4. append 등의 함수를 활용하여 원하는 위치에 생성한 li 요소를 넣는 과정을 거친다.

 

jquery는 이러한 과정을 한 줄로 비교적 간략하게 작성하면서 동일한 역할을 할 수 있다는 것을 확인할 수 있다.

 

 

 

6. 리스트 요소 삭제하기

 

<h2>요소 삭제하기</h2>
<ul class="nums">
  <li>1</li>
  <li id="li2">2</li>
  <li>3</li>
</ul>

<h3>remove() - 선택된 요소의 자식 요소 중 마지막에 추가</h3>
<button type="button" onclick="removeJS();">js 바꾸기</button>
<button type="button" onclick="removeJquery();">jQuery로 바꾸기</button>

<h3>empty() - 선택된 요소의 자식 요소 중 맨 처음에 추가</h3>
<button type="button" onclick="emptyJS();">js 바꾸기</button>
<button type="button" onclick="emptyJquery();">jQuery로 바꾸기</button>

 

// remove ()
function removeJS() {
  const num = document.querySelector('#li2');
  num.remove();
}

function removeJquery() {
  $('#li2').remove();
}

// empty ()
function emptyJS() {
  const num = document.querySelector('ul.nums');
  num.innerHTML = '';
}

function emptyJquery() {
  $('ul.nums').empty();
}

 

초기 출력 화면

 

 

 

특정 요소를 삭제하는 함수는 .remove를 활용하면 된다.
js 에는 empty 메서드가 존재하지 않기 때문에, num 클래스를 가진 요소를 선택하여

해당 요소의 html을 innerHTML 함수를 사용해 빈 문자열인 ' '로 설정해 주는 방식을 사용했다.

 

jquery에는 .empty 메서드가 존재하기에, 보다 편하게 모든 요소를 삭제할 수 있다.

 

 

 

 

 

이 외에도 다양한 메서드가 존재하나,

많이 사용하는 함수들을 활용한 간단한 코드들을 보며 js와 jquery의 작성 방식의 차이를 확인해 보았다.  :-)

 

 

728x90