[英]VUE2 component register in Laravel
Laravel(5.8) 和 VUE 一起工作得很好,但我的 app.js 越来越大了。
例如,我有以下 app.js:
window.Vue = require('vue');
window.Vue.component('Comp1', require('./components/Comp1.vue').default);
window.Vue.component('Comp2', require('./components/Comp2.vue').default);
window.Vue.component('Comp3', require('./components/Comp3.vue').default);
window.mainApp = new Vue({
el: '#app'
});
在真实情况下,我有大约 30 个组件 + 第三方,结果是一个 1.2mb 的 JS 用于生产。
所以,我想打破许多“区域相关”js 中的 app.js 文件,只是拆分,所以我会有类似的东西:
应用程序.js:
window.Vue = require('vue');
window.mainApp = new Vue({
el: '#app'
});
appMainComp.js:
window.Vue.component('Comp1', require('./components/Comp1.vue').default);
window.Vue.component('Comp2', require('./components/Comp2.vue').default);
appOtherComp.js:
window.Vue.component('Comp3', require('./components/Comp3.vue').default);
现在,抓到。 我在 app.js“window.mainApp = new Vue({ el: '#app'});”之后注册的所有内容不要注册。
那么,有没有办法在我的“mainApp”创建后注册一个组件? 就像是
mainApp.addComponent('./components/Comp1.vue');
或者以任何其他方式破坏多个文件中的 app.js?
而不是将组件分成几组(有趣的想法)。 你能做这样的事情吗? Dynamic Imports in Vue.js
只要有可能,我建议使用动态导入来导入组件。 它们将在需要时延迟加载(通过 Webpack)。
//Instead of a usual import
import MyComponent from "~/components/MyComponent.js";
//do this
const MyComponent = () => import("~/components/MyComponent.js");
你可以使用堆栈:
Blade 允许您推送到命名堆栈,这些堆栈可以在另一个视图或布局中的其他地方呈现。 这对于指定子视图所需的任何 JavaScript 库特别有用。
https://laravel.com/docs/6.x/blade#stacks
父视图:
<head>
<script src="/app.js"></script>
@stack('loadComponent')
<script>
@stack('addComponent')
</script>
</head>
子视图:
@push('loadComponent')
<script src="..."></script>
@endpush
@push('addComponent')
app.addComponent(...);
@endpush
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.