#javascript #vue.js #google-apps-script #vuejs2 #vuejs3
Вопрос:
Я начинаю с Vue и Vue 3, кодирующих приложение в сценарии Google Apps.
Я следую учебникам по мастерству Vue, а также нашел этот удивительный пример @brucemcpherson приложения Vue 2, работающего на газе, но слишком сложного для меня, чтобы понять некоторые части.
https://ramblings.mcpher.com/vuejs-apps-script-add-ons/
GitHub: https://github.com/brucemcpherson/bmVuetemplate
Каким-то образом с ГАЗОМ и Vue, работающими с компонентами, что-то не так, и мне нужна помощь.
Это мои файлы:
index.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="app">
<h1>{{ product }}</h1>
</my-component></my-component>
</div>
<script src="https://unpkg.com/vue@3.0.0-beta.12/dist/vue.global.js"></script>
<?!= include("main-js"); ?>
<?!= include("my-component"); ?>
<script>
const mountedApp = app.mount('#app')
</script>
</body>
</html>
utils.gs
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
main-js.html
<script>
const app = Vue.createApp({
data() {
return {
product: 'Socks'
}
}
})
</script>
my-component.html
<script>
app.component('my-component', {
template: `<div>My component content</div>`,
data() {
return {
product: 'Boots'
}
}
})
</script>
Я получаю предупреждение на консоли:
dropping postMessage.. was from host https://script.google.com but expected host https://n-jogxx7ovu3afq6djr4pskwjsglfwozzlkf5baay-0lu-script.googleusercontent.com
В обоих случаях ничего не происходит: я не вижу свой компонент, когда index.html заряжен.
У вас есть какие-либо идеи о том, в чем может быть проблема? Спасибо!
Ответ №1:
Сначала вы должны запустить vue, а затем смонтировать приложение. Не уверен, что это была ваша проблема, но вот рабочий код. Кроме того, я импортировал библиотеку vue в https://codepen.io/tzknc/pen/PopbOWW
<div id="app">
<h1>{{ product }}</h1>
<my-component/>
</div>
<script>
// create the vue instance
const app = Vue.createApp({
data() {
return {
product: 'Socks',
}
}
});
// add the component
app.component('my-component', {
template: `
<div>
My component content | {{product}}
</div>`,
data() {
return {
product: 'Boots'
}
}
})
// mount it
const mountedApp = app.mount('#app')
</script>
Комментарии:
1. Спасибо за ваш скорый ответ, @tzknc. Я не уверен, в чем была проблема, но ваш код работает как заклинание в сценарии Google Apps. Мой реальный случай включает импорт Vuetify, но я не могу включить css Vuetify с успехом, используя Vue на газе. Потому что это швы, которые включают теги <ссылка> на <ссылка><голова>, это не работает для меня… Но, может быть, это должен быть второй вопрос. Спасибо!
2. Я просто читаю, что Vuetify 2x не совместим с Vue 3…