Jestem nowy w Vue.js i pakiecie internetowym, więc zdecydowałem się użyć vue-cli (webpacka), aby zarchiwizować początkową aplikację. Próbuję uwzględnić zewnętrzny szablon (np. <script src="..."
) w szablonie, który nie jest potrzebny globalnie (dla każdej strony/komponentu), jednak Vue ostrzega, że nie jest to dozwolone.W tym skrypt zewnętrzny w szablonie vue.js
Mój plik index.html jest podobny do początkowego wygenerowany:
<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>
My App.vue jest również podobny do generowanego One:
<template>
<div id="app">
<div class="container pt-5">
<router-view></router-view>
</div>
</div>
</template>
mam trasa do /upload
w pliku moich tras, który mapuje do komponentu Upload, który wymaga skryptu dropzone.js (skrypt zewnętrzny). Mogłabym umieścić go w moim pliku index.html, podobnie jak ładowanie programu ładującego, ale wydaje się, że nie jest to idealne, aby załadować go dla każdej strony/komponentu, gdy tylko ten komponent tego wymaga.
Jednakże, jak stwierdzono powyżej, po prostu armaty umieścić go w moim pliku szablonu jako takie:
<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>
Jak mogę zawierać skryptu zewnętrznego tylko dla jednego komponentu?
Miałem nadzieję, że nie będzie to sposób na tylko załadować zasobu jako szablon jest renderowany (bez dzielenia kodu za pomocą pakietu WWW) –
@AshleyB Nie, powinieneś używać do tego funkcji dynamicznego importu Webpack. – Cobaltway
To wymaga jednak zainstalowania dropzone na miejscu, czy nie ma możliwości użycia go jako zewnętrznego źródła? –