【问题标题】:JQuery Plugins in VUE with Laravel Mix带有 Laravel Mix 的 VUE 中的 JQuery 插件
【发布时间】:2017-09-07 18:40:49
【问题描述】:

在我的webpack.mix.js 我有这样的东西:

// vue components
mix.js('resources/assets/js/app.js', 'public/js');

// scripts which I need
mix.scripts([
    'resources/assets/js/jquery-2.2.4.min.js',
    'resources/assets/js/bootstrap.min.js',
    'resources/assets/js/fastclick.js',
    'resources/assets/js/toastr.min.js',
    'resources/assets/js/select2.min.js',
    ...
], 'public/assets/js/scripts.js');

// styles which I need
mix.styles([
    "resources/assets/css/bootstrap-colorpicker.min.css",
    "resources/assets/css/bootstrap-select.min.css",
    "resources/assets/css/bootstrap.min.css",
    "resources/assets/css/select2.min.css",
    ...
], 'public/assets/css/styles.css');

例如,我可以在我的 vue 组件之外初始化一个 select2

但是当我尝试使用这个插件(或我的 mix.scripts 块的任何脚本)时,我得到下一个错误:

$(...).select2 is not a function

好吧,我搜索了一下,我找到了一个“解决方案”,在我的 vue 组件的 export default{} 之前,我需要 select2 脚​​本:

 ...

import Vue from 'vue';

require('../select2.min.js');

export default{

...

现在它可以在我的 vue 组件内部和外部工作:但是我“导入”了我的 select2 插件两次:

  1. 在我的public/assets/js/scripts.js 中(我需要它,因为我使用 select2 和其他没有 vue 组件的插件)
  2. 在我的resources/assets/js/app.js 内部(当我运行npm run watchnpm run production 时,编译器会将我的vue 组件的要求添加到这个脚本文件中)

所以,我的问题是:如何让 VUE 中的组件使用来自我的 public/assets/js/scripts.js 文件的 JQuery 脚本,而不必在每个 vue 组件中都要求它们? p>

我希望有办法做到这一点

【问题讨论】:

    标签: jquery vuejs2 laravel-5.4 vue-component laravel-mix


    【解决方案1】:

    据我所知,Laravel mix 的默认 webpack.config.js 包括 JQuery。所以我评论了webpack.config.js的下一行(271):

    /*
    new webpack.ProvidePlugin(Mix.autoload || {
        jQuery: 'jquery',
        $: 'jquery',
        jquery: 'jquery'
    }),
    */
    

    现在,当我显示 JQuery console.info($()); 的内容时,我看到了所有插件。

    但我觉得这有点脏。

    有没有官方的方法可以做到这一点?

    【讨论】:

      猜你喜欢
      • 2018-11-08
      • 2020-10-08
      • 1970-01-01
      • 2020-02-29
      • 2018-08-13
      • 2019-04-04
      • 2019-02-13
      • 2020-03-09
      • 2018-07-14
      相关资源
      最近更新 更多