Вот как я это сделал.
В Foo.vue
добавить props
:
<template>
<div>
This is the app. X is {{ x }}, y is {{ y }}
</div>
</template>
<script>
export default {
data() {return { x: 'hello x' };},
props: [ 'y' ],
}
</script>
Затем в основной js, которая создает приложение:
// somewhere here 'node' gets set to a DOM node,
// and 'y' is created.
import Vue from 'vue';
import Foo from './Foo.vue';
const app = new Vue({
'el': node,
render: h => h(Foo, {props: {y})
});
Таким образом, y передается как опора, но без использования template
, который требует более тяжелой сборки Vue, включенной в компилятор.
Преимущество этого состоит в том, что моя CMS может выплевывать кускистраница, каждая из которых должна быть приложением Vue, может включать конфигурацию для каждого из этих приложений и может создавать все приложения Vue, отличающиеся только по своему содержанию.
В то время как документация сосредоточена на отдельных файловых компонентах, кажется,монолитное одностраничное приложение, это не то, что мне было нужно.