Javascript Vue.js延迟加载

Javascript Vue.js延迟加载,javascript,laravel,vue.js,laravel-mix,Javascript,Laravel,Vue.js,Laravel Mix,我正在使用Laravel mix编译vue.js组件。现在,我想延迟加载我在这里找到的组件: 当我尝试这个: Vue.component('setting', () => import('./components/settings/setting.vue')); 我得到: error in ./resources/assets/admin/vue/core.js Syntax Error: Unexpected token (36:31) 34 | */ 35 | &

我正在使用Laravel mix编译vue.js组件。现在,我想延迟加载我在这里找到的组件:

当我尝试这个:

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'));
     |                                ^

这里可能出了什么问题?当我注册组件“正常”时,一切正常吗?

下面是注释。您需要指定publicPath。 下面是一个小版本的webpack.mix.js文件,该文件在使用laravel mix的laravel 5.5上进行了测试

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可能生成了错误的路径,因此网页包无法找到正确的区块文件路径。因此,您的解决方案是要么修改路径,要么像上面的示例那样坚持使用默认路径。 上面的代码应该在public/js中生成app.js以及分块文件。它还将在公共目录中生成manifest.json 现在,最后只需在刀片中引用app.js文件


请注意,您需要安装babel loader和babel dynamic import插件。首先需要能够在webpack中使用babel插件,因为我不确定laravel mix是否读取.babelrc文件,如果读取了,那么就足够了。您需要指定publicPath。 下面是一个小版本的webpack.mix.js文件,该文件在使用laravel mix的laravel 5.5上进行了测试

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可能生成了错误的路径,因此网页包无法找到正确的区块文件路径。因此,您的解决方案是要么修改路径,要么像上面的示例那样坚持使用默认路径。 上面的代码应该在public/js中生成app.js以及分块文件。它还将在公共目录中生成manifest.json 现在,最后只需在刀片中引用app.js文件


请注意,您需要安装babel loader和babel dynamic import插件。首先需要能够在网页包中使用babel插件,因为我不确定laravel mix是否读取.babelrc文件,如果读取了,那么这就足够了。

您是否使用了否我不使用laravel mix在幕后使用网页包和用于代码拆分要使用功能,您需要使用动态导入。这是来自@zeidanbm的,我现在已经开始工作了。但是如何设置webpack查找javascript文件的路径?因为现在它正在寻找错误的路径。你使用的是否我不使用Laravel mix在幕后使用webpack,而要使代码拆分功能发挥作用,你需要使用动态导入。这是来自@zeidanbm的,我现在已经开始工作了。但是如何设置webpack查找javascript文件的路径?因为现在它正在寻找错误的路径。谢谢,它现在编译到了正确的位置。但当我查看我的“网络”选项卡时,它正在寻找错误的路径。我必须如何配置它?我想您指的是刀片指定的路径?你是用网页包、散列js文件制作的吗?我应该如何以及如何在我的刀片文件中引用?我编辑了答案以澄清一些事情。希望这有帮助。谢谢,现在它编译到了正确的位置。但当我查看我的“网络”选项卡时,它正在寻找错误的路径。我必须如何配置它?我想您指的是刀片指定的路径?你是用网页包、散列js文件制作的吗?我应该如何以及如何在我的刀片文件中引用?我编辑了答案以澄清一些事情。希望这有帮助。