Я запускаю vue.js внутри экспресс, все работает как задумано, за исключением события щелчка ... Он ничего не делает, когда я нажимаю любую кнопку, ничего не запускается
HTML:
<div v-on:click = "function2">
<button type = "button" class = "btn btn-primary" @click.native = "testFunction">Function 1</button>
<button type = "button" class = "btn btn-primary" v-on:click = "function2">Function 2</button>
</div>
Сервер
app.get('*', async(req, res) => {
const app2 = createSSRApp({
data (){
return {
url: req.url,
message : 'ok',
ok : true,
image : '...'
}
},
methods : {
testFunction(event){
this.$emit('click', this.page, event);
},
function2(){
console.info('9')
}
},
template : require('fs').readFileSync('./html/pages/home.html', 'utf-8')
})
const content = await renderToString(app2)
const html = `
<!DOCTYPE html><script>
console.info('ooo')
</script>
<html lang = "en">
<head><title>Hello</title></head>
<body>${content}</body>
</html>
`
res.end(html)
})
Я использую экспресс и ssr.
Я даже поместил встроенный javascript в заголовок для проверки и в заголовок, он работает, но не в щелчке даже
документация по SSR оооочень бедная ... Может кто-нибудь объяснить? Потому что способ, которым это должно быть сделано, отличается от документа vue3





Вы используете @click в
<button type = "button" class = "btn btn-primary" @click.native = "testFunction">Function 1</button>
и вы также используете v-on:click в
<button type = "button" class = "btn btn-primary" v-on:click = "function2">Function 2</button>
Итак, @click = "addTwo" такой же, как v-on:click = "addTwo".
Руководство по стилю Vue.js рекомендует не смешивать их в своем проекте. Используйте @ или v-on, но не оба одновременно.
Сначала я пробовал только с v-on .... потом попробовал с @, потом смешал, чтобы перепроверить. ничего не работает, по-видимому, необходимо выполнить гидратацию, но на странице vue3 нет документации
Вы не читали часть в нижней части документации. * Теперь при запуске этого сценария Node.js мы видим статическую HTML-страницу на localhost: 8080. Однако этот код не гидратирован: Vue еще не принял статический HTML, отправленный сервером., чтобы превратить его в динамическую DOM, которая может реагировать на изменения данных на стороне клиента. Это будет рассмотрено в разделе «Гидратация на стороне клиента». см .: ssr.vuejs.org/guide/hydration.html