怎样在Vue.js中使用jquery插件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在Vue.js中使用jquery插件相关的知识,希望对你有一定的参考价值。

安装 jQuery 和 cropper.js

# install jQuery & cropper
$ npm install jquery cropper --save

为jquery和Vue自定义指令配置webpack

为webpack配置添加jquery和Vue自定义指令的映射。

通常webpack已经引入了完整的jquery版本,但还是建议再一次引入一下。

您可以看到Vue的webpack模板已经添加到组件的文件夹中。我通常会添加很多其他文件夹像自定义指令,mixin等等。在这个例子中,我们只添加了自定义指令。

这将帮助我们引入依赖关系而无需知道其确切的路径。这也是有益的在你重构你的应用的时候。你也并不需要管理相对路径。

把下面高亮部分添加到build/webpack.base.conf文件中。

resolve:
extensions: [\'\', \'.js\', \'.vue\'],
fallback: [path.join(__dirname, \'../node_modules\')],
alias:
\'src\': path.resolve(__dirname, \'../src\'),
\'assets\': path.resolve(__dirname, \'../src/assets\'),
\'components\': path.resolve(__dirname, \'../src/components\'),
\'jquery\': path.resolve(__dirname, \'../node_modules/jquery/src/jquery\'),
\'directives\': path.resolve(__dirname, \'../src/directives\')

,
参考技术A 您好,请问您是想知道怎样在Vue.js中使用jquery插件吗?

在 Vue.js 单文件组件中使用 jQuery 插件

【中文标题】在 Vue.js 单文件组件中使用 jQuery 插件【英文标题】:Using jQuery plugin in Vue.js single file component 【发布时间】:2019-05-26 18:45:22 【问题描述】:

我正在尝试在我的 Vue.js 单文件组件中使用 this jQuery 插件。

根据链接的自动完成插件的要求,我在index.html 中导入了引用,以便它们可以在我需要在input field 中使用autocomplete 功能的所有其他vue 组件中使用。

  <script src="//code.jquery.com/jquery-1.12.4.js"></script>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
        <script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

但是当我在我的单个文件组件的脚本标记中包含以下代码时。

 $("#autocomplete").autocomplete(
        source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ]
    );

我得到错误控制台说:

> TypeError: $("#autocomplete").autocomplete is not a function. (In
> '$("#autocomplete").autocomplete(
>     source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"] )', '$("#autocomplete").autocomplete' is undefined)

但是我已经在index.html中包含了依赖项

【问题讨论】:

【参考方案1】:

我建议你不要在 Vue 中使用 Jquery。它的坏习惯。您可以使用许多 vue 插件,甚至可以创建自己的插件(恕我直言,这是最好的选择)

https://www.npmjs.com/package/vue2-autocomplete-js https://github.com/paliari/v-autocomplete https://vuejsexamples.com/tag/autocomplete/ https://alligator.io/vuejs/vue-autocomplete-component/

【讨论】:

我同意你的看法,但是现在我时间不够,昨天晚上我熬夜使用 jQuery 来搞定事情【参考方案2】:

检查 html 中 js 文件/脚本的顺序。 Vue 脚本可能在加载 jQuery 之前执行。将 jQuery 相关的脚本标签移到 Vue 脚本标签上方。您还可以通过检查 window.$ 的存在来安全地检查 Vue 脚本中是否有 jQuery:

if (typeof window.$ === 'function') 
  $("#autocomplete").autocomplete(
        source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ]
    );

【讨论】:

好吧,如果是 jQuery 没有加载的情况,那么我可能会在 $("#autocomplete") 处感到恐惧,但我收到错误 .autocomplete @Ciastopiekarz 是的,我的错误没有注意到这一点。但是,我无法在 CodeSandbox codesandbox.io/s/74wy254mx0 中重新创建您的问题。如果你能提供更多关于如何使用 jQuery UI 实现 Vue 组件的详细信息,我可能会找到一些东西。 谢谢@blaz,如果可以请看一下,我已经将我的项目上传到codebase 我正在使用导致问题的 eonasdan-bootstrap-datetimepicker 组件,所以我摆脱了它并使用了 vue-datetime 组件,然后经过 4 天的努力,我终于成功添加了基于 jQuery 的自动完成工作完美,但我的表单有第二个输入字段需要相同的功能,我意识到即使我们为两个不同的输入字段设置了不同的 ID,它也会重置旧的。所以我只能使用 1 个具有自动完成功能的输入字段。 @Ciastopiekarz 抱歉,我无法弄清楚您的代码有什么问题。即使在 main.js 中,autocomplete 也没有定义,而在我的演示中它就在那里。【参考方案3】:

解决方案:使用组件作为包装器

在此处查看教程: https://vuejsdevelopers.com/2017/05/20/vue-js-safely-jquery-plugin/

【讨论】:

;( 第一行说:> 在同一个 UI 中使用 jQuery 和 Vue.js 不是一个好主意。如果可以避免,请不要这样做。其次,我在实例化时间 是的,我也不建议在 Vue.js 中使用 jquery,如果你只是想要一个自动完成功能,那里有很多组件。例如这个npmjs.com/package/vue2-autocomplete-js 我第一次尝试过,但根本没有用,我也triedvie-single-select 遇到问题,您无法输入不在列表中的新项目

以上是关于怎样在Vue.js中使用jquery插件的主要内容,如果未能解决你的问题,请参考以下文章

怎样在Vue.js中使用jquery插件

[译]怎样在Vue.js中使用jquery插件

如何编写一个 Vue JS 内嵌组件

在 Vue.js 单文件组件中使用 jQuery 插件

jQuer插件满屏气泡飘落动画效果

像 vue.js 组件一样可排序(没有 npm / webpack)或在 vue 区域内使用 jQuery 插件