使用requireJS for plugin将多个函数导出到jquery
我正在尝试使用requireJS 将此库/插件添加到jquery。
我看过文档和其他SO问题,我仍然无法弄清楚出了什么问题。
使用backbone和require作为例子:我很确定我需要在main.js文件中使用shim。 我也很确定我还需要在我想要使用的特定文件中加载插件(即使我实际上并没有在函数体中使用rangyInputs对象)(我这样做)骨干)。 真的,我只想将rangyInputs库中的函数绑定到jquery一次,然后只需要在我需要这些函数的所有文件中使用jquery。
define([ 'jquery', 'underscore', 'backbone' , 'views/listView' , 'sockets' , 'collections/nodesCollection' , 'views/listView' , 'models/node' , 'rangyInputs' //I define the path to this like I do the path for backbone in main.js ], function($, _, Backbone, ListView, io, nodesCollection, listView, nodeModel ,rangyInputs){
最小化的图书馆最后有这个:
$.fn.extend({ getSelection: jQuerify(getSelection, false), setSelection: jQuerify(setSelection, true), collapseSelection: jQuerify(collapseSelection, true), deleteSelectedText: jQuerify(deleteSelectedText, true), deleteText: jQuerify(deleteText, true), extractSelectedText: jQuerify(extractSelectedText, false), insertText: jQuerify(insertText, true), replaceSelectedText: jQuerify(replaceSelectedText, true), surroundSelectedText: jQuerify(surroundSelectedText, true) });
文档并举例说明了使用shim的“exports”,但我不认为我可以使用它,因为我有多个我要导出的东西。 (而且我不确定出口是如何运作的)。
谢谢!
编辑:我尝试应用此解决方案,以便我可以包含一个不同的插件,它不起作用,所以我在这里问另一个问题
管理创建简单的工作示例:
index.html的:
main.js:
require.config({ paths : { jquery : 'jquery-2.0.3', 'rangyinputs-jquery' : 'rangyinputs-jquery-1.1.2' }, shim : { 'rangyinputs-jquery' : {deps : ['jquery'], exports : '$'} } }); require(['jquery', 'rangyinputs-jquery'], function($) { console.log('Type of $.fn.getSelection' typeof $.fn.getSelection); });
最后一个版本的jquery是AMD兼容的,所以你不必使用exports shim,但rangyinputs-jquery不是,所以我们导出jquery对象并向jquery添加依赖。 一个目录中的所有文件:
- 的index.html
- main.js
- jQuery的2.0.3.js
- rangyinputs-jQuery的1.1.2.js
- require.js