๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

 

script๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ์ด๋ฆ„์„ ๋ฐฐ์—ด์— ์ ์œผ๋ฉด, ๋ฒ„ํŠผ์ด ์ƒ์„ฑ๋˜๋ฉฐ, ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น jsํŒŒ์ผ์ด ์‹คํ–‰๋œ๋‹ค.

index.html์—์„œ scriptํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ์ผ์ผ์ด ๋ฐ”๊ฟ”์•ผํ•˜๋Š” ์ˆ˜๊ณ ๋ฅผ ๋œ์—ˆ๋‹ค.

 

const fileList = ['class', 'promise']

const hasScript = (fileName) => {
  const currentScripts = document.head.getElementsByTagName('script')
  for(scriptElem of currentScripts){
    if(scriptElem.src.includes(fileName)){
      return true
    }
  }
  return false
}

const removeScript = (fileName) => {
  const currentScripts = document.head.getElementsByTagName('script')
  for(scriptElem of currentScripts){
    if(scriptElem.src.includes(fileName)){
      scriptElem.remove()
      console.log(`Success to delete ${fileName}`)
    }
  }
}

const addScript = (fileName) => {
  const script = document.createElement('script')
  script.setAttribute('src', `/${fileName}.js`)
  document.querySelector('head').appendChild(script)
  console.log(`Success to append ${fileName}`)
}

const createButton = (fileName) => {
  const buttonElem = document.createElement('button')
  buttonElem.textContent = fileName
  buttonElem.addEventListener('click', () => {
    hasScript(fileName)
      ? removeScript(fileName)
      : addScript(fileName)
  })
  return buttonElem;
}

const init = () => {
  fileList.forEach((fileName)=>{
    const buttonElem = createButton(fileName)
    document.querySelector('body').append(buttonElem)
  })
}

init()

 

 

๋ฐ˜์‘ํ˜•