Vue.js 延迟加载
Vue.js lazy loading
我正在使用 Laravel mix 来编译我的 vue.js 组件。现在我想延迟加载我在这里找到的组件:
https://vuejs.org/v2/guide/components.html#Async-Components
当我尝试这个时:
Vue.component('setting', () => import('./components/settings/setting.vue'));
我得到:
error in ./resources/assets/admin/vue/core.js
Syntax Error: Unexpected token (36:31)
34 | */
35 |
> 36 | Vue.component('setting', () => import('./components/settings/setting.vue'));
| ^
这里可能有什么问题?当我注册组件时 'normal' 一切正常吗?
根据评论。您需要指定 public 路径。
这是在 laravel 5.5 上使用 laravel-mix
测试的工作 webpack.mix.js 文件的小版本
const { mix } = require('laravel-mix');
mix.setPublicPath('public/');
mix.webpackConfig({
output: {
chunkFilename: 'js/[name].[chunkhash].js',
publicPath: '/'
},
module: {
rules: [{
test: /\.js?$/,
exclude: /node_modules/,
loader: 'babel-loader',
options: {
presets: ['babel-preset-env'],
plugins:['babel-plugin-dynamic-import-webpack']
}
},
]
}
});
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
.version();
您可能 manifest.json 生成了错误的路径,因此 webpack 无法找到正确的块文件路径。所以你的解决方案要么修改路径,要么像上面的例子一样坚持使用默认路径。
上面的代码应该在 public/js 内生成 app.js 以及分块文件。它还会在 public 目录中生成 manifest.json
现在终于在你的 blade
中引用你的 app.js 文件
<script src="{{mix('/js/app.js')}}"></script>
请注意,您首先需要安装 babel loader 和 babel 动态导入插件才能在 webpack 中使用 babel 插件,因为我不确定 laravel mix 是否读取 .babelrc 文件如果确实如此,那就足够了
我正在使用 Laravel mix 来编译我的 vue.js 组件。现在我想延迟加载我在这里找到的组件:
https://vuejs.org/v2/guide/components.html#Async-Components
当我尝试这个时:
Vue.component('setting', () => import('./components/settings/setting.vue'));
我得到:
error in ./resources/assets/admin/vue/core.js
Syntax Error: Unexpected token (36:31)
34 | */
35 |
> 36 | Vue.component('setting', () => import('./components/settings/setting.vue'));
| ^
这里可能有什么问题?当我注册组件时 'normal' 一切正常吗?
根据评论。您需要指定 public 路径。 这是在 laravel 5.5 上使用 laravel-mix
测试的工作 webpack.mix.js 文件的小版本const { mix } = require('laravel-mix');
mix.setPublicPath('public/');
mix.webpackConfig({
output: {
chunkFilename: 'js/[name].[chunkhash].js',
publicPath: '/'
},
module: {
rules: [{
test: /\.js?$/,
exclude: /node_modules/,
loader: 'babel-loader',
options: {
presets: ['babel-preset-env'],
plugins:['babel-plugin-dynamic-import-webpack']
}
},
]
}
});
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
.version();
您可能 manifest.json 生成了错误的路径,因此 webpack 无法找到正确的块文件路径。所以你的解决方案要么修改路径,要么像上面的例子一样坚持使用默认路径。 上面的代码应该在 public/js 内生成 app.js 以及分块文件。它还会在 public 目录中生成 manifest.json 现在终于在你的 blade
中引用你的 app.js 文件<script src="{{mix('/js/app.js')}}"></script>
请注意,您首先需要安装 babel loader 和 babel 动态导入插件才能在 webpack 中使用 babel 插件,因为我不确定 laravel mix 是否读取 .babelrc 文件如果确实如此,那就足够了