怎样在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插件的主要内容,如果未能解决你的问题,请参考以下文章