我对Vue.js很新,目前面临(可能)基本问题 . 但经过几个小时的搜索,我仍然不确定如何解决它 .
对于某些项目,我使用riot作为数据绑定和组件的库(在暴动中称为'tags') . 为了改善页面加载时间,我明确地只包括预编译标签(使用gulp完成),因此每个页面只加载它所需的内容 .
在特定页面上,它看起来像这样:
<body>
<div>
<p>Below will appear my tag</p>
<mytag></mytag>
</div>
<script src="/assets/js/mytag.js"></script>
<script>riot.mount('mytag');</script>
</body>
标签本身只是一个文件(mytag.tag),看起来像这样
<mytag>
<style>.test{color:blue}</style>
<span class="test">Lorem ipsum</span>
<script>const tag = this;<script>
</mytag>
我现在正试图用Vue.js来实现同样的意思,我想要一个我预先编译成JS(使用webpack),包含和渲染/挂载在页面上的文件 .
所以我创建了一个类似于我的防暴标记文件的vue文件
<template>
<div>
<span class="test">Lorem ipsum</span>
</div>
</template>
<script>
export default {}
</script>
<style lang="scss" scoped>
.test {color:blue}
</style>
这里开始我的问题:
我想在页面上实现和渲染模板就像暴动一样 . 但是我读过的所有教程都使用另一个JS文件(webpack的入口点),他们导入vue文件并创建一个新的Vue实例 .
import Vue from 'vue';
import myTag from './mytag.vue';
new Vue({
el:'#my-tag',
render: h => h(myTag);
});
但我试图避免额外的JS文件,因此使用vue文件作为webpack的入口点 . 这样我无法在页面上导入任何内容,但只包含预编译的vue文件 .
<script src="/assets/js/mytag.js></script>
<script>
new Vue({
el:'#my-tag',
render: ???????
});
</script>
正如您所看到的,当我只编译vue文件时,我不知道在页面上呈现组件的人 .
有人帮帮我吗?是否只是错误的方式试图避免额外的JS文件或是否有另一种我缺少的选项?
我只想以尽可能少的流量包含/渲染我的组件页面 .
- edit -
为了让我更清楚我正在努力解决的问题:使用JS文件(mytag.js)作为输入vue文件(mytag.vue)的入口点,创建 new Vue({})
并呈现它,适合我 .
但是我还必须从后端传输数据(页面的HTML在服务器端呈现),当在捆绑的JS文件中创建新的Vue实例时,我不知道如何实现这一点 .
我的HTML看起来像这样
<script src="/assets/js/mytag.js"></script>
但我需要转移一些数据的可能性,就像我在暴动中那样,我在标签/标记处写入它(服务器端)
<body>
<div>
<p>Below will appear my tag</p>
<mytag sometext="text from backend"></mytag>
在riot标签中,我可以通过 opts.sometext
访问该数据 . 我发现了一个(我可以't imagine vue doesn' t为这个案子提供......)