source

vue.js 템플릿에 외부 스크립트 포함

goodcode 2022. 7. 17. 00:27
반응형

vue.js 템플릿에 외부 스크립트 포함

저는 Vue.js와 web-pack을 처음 접하기 때문에 vue-cli(webpack)를 사용하여 초기 애플리케이션을 구축하기로 결정했습니다.외부 스크립트를 포함하려고 합니다(예:<script src="..."(모든 페이지/컴포넌트에 대해) 글로벌하게 필요하지 않은 템플릿에서 Vue는 이것이 허용되지 않는다고 경고합니다.

index.html 파일은 처음 생성된 파일과 비슷합니다.

<html lang="en">

<head>
  <title>App</title>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">

</head>

<body>
  <div id="app"></div>

  <!-- jQuery first, then Tether, then Bootstrap JS. -->
  <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
</body>

</html>

내 App.vue도 생성된 것과 비슷합니다.

<template>
<div id="app">

  <div class="container pt-5">
    <router-view></router-view>
  </div>

</div>
</template>

로 가는 길이 있다./uploaddropzone.js(외부 스크립트)가 필요한 업로드 컴포넌트에 매핑됩니다.부트스트랩이 로드되는 방법과 마찬가지로 index.html에 포함할 수도 있지만 이 컴포넌트만 필요한 경우 페이지/컴포넌트별로 로드하는 것은 그다지 이상적이지 않은 것 같습니다.

다만, 상기와 같이, 템플릿 파일에 포함시킬 뿐입니다.

<template>
<div>
  <h2>Upload Images</h2>
  <form action="/file-upload" class="dropzone">
    <div class="fallback">
      <input name="file" type="file" multiple />
      <input type="submit" value="upload" />
    </div>
  </form>
</div>

<script src="https://example.com/path/to/dropzone"></script>
</template>

<script>
export default {
  data() {
    return {}
  }
}
</script>

<style>  
</style>

1개의 컴포넌트에만 외부 스크립트를 포함하려면 어떻게 해야 합니까?

다음과 같이 스크립트 로드를 담당하는 메서드를 정의하고 마운트 후크 또는 작성된 후크로 호출할 수 있습니다.

<script>
      export default {
        data() {
          return {}
        },
        methods: {
          loadJs(url, callback) {
            jQuery.ajax({
              url: url,
              dataType: 'script',
              success: callback,
              async: true
            });
          }
        },
        mounted() {
          this.loadJs('url_to_someScript.js', function() {
            //Stuff to do after someScript has loaded
          });
        }
      }
</script>

스크립트 태그는 기본적으로 글로벌합니다.템플릿에 스크립트태그를 포함하는 것은 모듈시스템에서는 할 수 없습니다(적어도 현시점에서는).

npm을 사용하여 노드 모듈로 설치할 수 있습니다.npm install dropzone --save.

그런 다음 구성 요소 코드 안으로 가져옵니다.

import drozone from 'dropzone';
export default {
  // Component code...
}

다만, Web 팩코드 분할 기능을 사용하고 있지 않는 한, 번들에는 모든 페이지에 드롭 존이 포함되어 있는 것에 주의해 주세요.Vue Router에서 번들을 분할하는 방법에 대한 공식 튜토리얼은 여기를 참조하십시오.

언급URL : https://stackoverflow.com/questions/45145448/including-external-script-in-vue-js-template

반응형