[英]How do I split my Webpack/Vue code into a separate vendor.js file and remove it from app.js?
我想為我的項目創建vendor.js
和app.js
文件,其中vendor.js
文件包含 Webpack 和 Vue.js 核心代碼,而app.js
僅包含為我的應用程序編寫的 Vue.js 代碼。 我正在使用laravel-mix
npm 模塊來包裝 Webpack 並構建我的所有資產。
vendor.js
包含以下一行代碼:
window.Vue = require('vue');
app.js
包含以下代碼:
import App from './App.vue';
Vue.component('App', App);
new Vue({
el: 'App'
});
而webpack.mix.js
包含以下代碼:
let mix = require('laravel-mix');
mix.js('src/js/vendor.js', 'public/js/')
.js('src/js/app.js', 'public/js/')
.sass('src/sass/vendor.scss', 'public/css/')
.sass('src/sass/app.scss', 'public/css/');
當我這樣做時, vendor.js
正是我想要的,只是 Webpack 和 Vue.js 核心代碼,但是, app.js
還包含 Webpack 核心代碼。 我在我的應用程序中在app.js
之前加載vendor.js
,所以我不需要兩個文件中的 Webpack 核心代碼。
如何構建vendor.js
和app.js
文件以獲得我想要的? 此外,我在vendor.js
的代碼似乎有點草率(即,我使用的是require
而不是import
並且我將它附加到window
對象,以便app.js
文件可以訪問Vue
對象),我想知道是否有更好的方法來做到這一點。 我理想中喜歡的是以下內容:
vendor.js
:
import Vue from 'vue';
app.js
:
import Vue from 'vue';
import App from './App.vue';
Vue.component('App', App);
new Vue({
el: 'App'
});
這對我來說似乎“更干凈”,更符合 ES6 的做事方式,但它有點違背了vendor.js
的目的,因為app.js
包含相同的 Vue.js 導入。 我認為 Webpack 應該足夠“聰明”,知道我已經將 Vue.js 導入到vendor.js
文件中,這樣當我再次將它導入app.js
,就不需要帶上所有的 Vue.js 核心重新編碼。 另外,為什么它會在兩個文件中添加所有 Webpack 核心代碼?
嗯,我有點知道答案,但我希望它足夠聰明,只包含一次核心代碼。 那可能嗎?
使用供應商提取將幫助您 + 為您提供一個單獨的 Webpack 運行時塊,您嘗試過嗎? laravel.com/docs/5.7/mix#vendor-extraction
PS,除非我誤解了您所說的 Webpack 代碼的意思,否則您的意思是運行時對嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.