【发布时间】:2017-04-28 17:27:50
【问题描述】:
我正在使用令人惊叹的 Vue 和 Webpack 创建一个大型应用程序。
我不想拥有 .vue 文件,因为我想将它们分隔为 comp.js、comp.pug 和 comp.styl
我的comp.js 将是:
export default {
template: require('./comp.pug'),
data: () => {
return {
compStyle: require('./comp.styl');
message: 'Hello World!'
}
// ...
},
}
我的com.pug 将是:
div#comp(v-bind:style="compStyle")
h1.heading {{ message }}
最后我的comp.styl 将是:
.heading
color: #6E6E6E;
background-color: #E6E6E6
text-align: center
乍一看,一切似乎都很好,直到我尝试使用 VueRouter,当然还有像 <router-link /> 或 <router-view /> 这样的元素!
由于我没有任何 .vue 文件,我假设在 Webpack 中使用 alias: { 'vue$': 'vue/dist/vue.common.js' } 对我没有帮助!
我该如何解决这个问题?
顺便说一句,我在控制台中遇到的错误是:
[Vue 警告]:您正在使用 Vue 的仅运行时构建,其中 模板选项不可用。预编译模板 进入渲染函数,或使用编译器包含的构建。
更新
值得一提的是,我有两个入口文件: 一个用于整个应用程序
import MainComp from './comp/main';
Vue.use(VueRouter);
new Vue(MainComp).$mount('#app');
还有一个用于组件(子组件如上):
import Router from './route';
import SubComp1 from './sub1.comp'
import SubComp2 from './sub2.comp'
export default {
template: require('./main.pug'),
router: Router,
components: {
SubComp1,
SubComp2
}
}
我的main.pug:
div
| here goes the views
router-view
这是我的route.js:
export const Router = new VueRouter({
mode: 'history',
routes: [
{ path: '/three', component: SubComp3 },
{ path: '/Four', component: SubComp4 },
{ path: '/', redirect: '/' }
]
})
所以当我将alias: { 'vue$': 'vue/dist/vue.common.js' } 添加到我的 webpack 中时,错误将是别的东西:
[Vue 警告]:渲染根实例时出错
未捕获的类型错误:无法读取未定义的“匹配”属性
【问题讨论】:
标签: javascript webpack vue.js vue-router