我有一个Vue CLI应用程序,我想连接到服务器后端
服务器将返回一个带有数据负载的视图模板,我想将该负载作为JSON作为数据属性注入Vue应用程序。
Vue CLI生成的index.html
文件如下所示(我在vue.config.js
中将filenameHashing
设置为false
以避免随机文件名(:
<!DOCTYPE html>
<html lang=en>
<head>
<meta charset=UTF-8>
<meta http-equiv=X-UA-Compatible content="IE=edge">
<meta name=viewport content="width=device-width,initial-scale=1">
<link href=/css/app.css rel=preload as=style>
<link href=/css/chunk-vendors.css rel=preload as=style>
<link href=/js/app.js rel=preload as=script>
<link href=/js/chunk-vendors.js rel=preload as=script>
<link href=/css/chunk-vendors.css rel=stylesheet>
<link href=/css/app.css rel=stylesheet>
</head>
<body>
<div id=app>
</div>
<script src=/js/chunk-vendors.js></script>
<script src=/js/app.js></script>
</body>
</html>
main.js
看起来如下:
import Vue from 'vue';
import SiteContainer from './components/layout/SiteContainer.vue';
new Vue({
render: h => h(SiteContainer)
}).$mount('#app');
我希望能够做以下事情:
<div id="app" :data="{{ json-string-of-data-payload-from-server }}">
这样我就可以访问SiteContainer
中的数据,如下所示:
props: [
'data'
]
我基本上已经尝试过执行上面所写的操作,但由于render
方法似乎用site-container
组件完全替换了#app
div,因此:data
属性也丢失了。
我还看到,您可以将第二个参数与数据一起传递给render
,但我不知道如何使其工作,最终,它在main.js
中,而不是服务器将使用的视图模板文件,这是我需要JSON数据的位置,以便将其从服务器获取到Vue应用程序。
如何将数据从服务器生成的视图模板传递到Vue CLI应用程序,以使一切正常进行?非常感谢。
我想明白了。
通过首先在main.js
中将SiteContainer
组件定义为Vue.js组件,我可以自由地使用HTML文件中的组件来获得我想要的东西。
具体来说,我更改了main.js
文件如下:
import Vue from 'vue';
import SiteContainer from './components/SiteContainer.vue';
Vue.component('SiteContainer', SiteContainer); // This is the key.
new Vue({
el: '#app'
});
然后HTML文件的body
部分变成如下(即,替换我在上面的问题中的#app
div
(:
<SiteContainer id="app" :data="{{ json-string-of-data-payload-from-server }}">
</SiteContainer>