【问题标题】:using requireJS for plugin that exports multiple function to jquery将 requireJS 用于将多个函数导出到 jquery 的插件
【发布时间】:2014-01-05 07:31:33
【问题描述】:

我正在尝试使用 requireJS 将 this library/plug-in 添加到 jquery。

我查看了文档和其他 S.O.问题,我仍然无法弄清楚出了什么问题。

以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)
    });

文档并给出了使用“exports”作为 shim 的示例,但我认为我不能使用它,因为我有多个要导出的东西。 (而且我不确定出口是如何工作的)。

谢谢!

编辑:我尝试应用这个解决方案,以便我可以包含不同的插件,但它不起作用,所以我问another question here

【问题讨论】:

    标签: javascript jquery backbone.js requirejs


    【解决方案1】:

    设法创建简单的工作示例:

    index.html:

    <!doctype html>
    <html>
        <head></head>
        <body>
            <script data-main="main" src="require.js"></script>
        </body>
    </html>
    

    ma​​in.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 兼容的,所以你不必使用 export shim,但 rangyinputs-jquery 不是,所以我们导出 jquery 对象并添加对 jquery 的依赖。 一个目录下的所有文件:

    • index.html
    • main.js
    • jquery-2.0.3.js
    • rangyinputs-jquery-1.1.2.js
    • require.js

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 2017-07-13
      相关资源
      最近更新 更多