requirejs加载jquery插件的问题

我写的模块简目录

/index.html
/vendor/jquery.js
/vendor/hl.js
/vendor/require.js
/js/index.js

其中 hl扩展了jquery 的$.getUrlPrameter() 方法
index.js是 index.html的业务逻辑模块 index.js中需要调用$.getUrlPrameter()

1. /vendor/jquery.js

2. /vendor/hl.js (为jquery扩展了一个$.getUrlParameter方法)

(function(factory) {
    if (typeof exports == "object" && typeof module == "object") // CommonJS
        factory(require("jquery"));
    else if (typeof define == "function" && define.amd)// AMD
        define(["jquery"], factory);
    else
        (this || window).HL = factory();
})(function($) {

   $.getUrlParameter = function(parameterName){
        //获取url参数值
        var reg = new RegExp("(^|&)" + parameterName + "=([^&]*)(&|$)", "i");
        var arr = location.search.substr(1).match(reg);
        if (arr) 
            return arr[2]; 
        else 
            return null;
    }
})

3. /js/index.js 入口文件 想要在这个文件中使用2中的扩展方法$.getUrlParameter

define(function(require){

    var $ = require('../vendor/jquery');
    var HL = require('../vendor/hl');

    function init(){
        alert($.getUrlParameter('v'))
    };
    return {
        init:init
    }
})

4./index.html 入口html文件

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
<script src="vendor/requirejs/require.js"></script>
<script>
    require.config({
    paths: {
      "jquery": "vendor/jquery",
            "hl":"vendor/hl"
    }
    });

    require(['jquery','hl','./js/index'],function($,hl,m){
        m.init();
    })

</script>
</body>
</html>

请问我这错在哪里了?为何在index.js中没能初始化

阅读 5.8k
1 个回答

你的index.js里

var $ = require('../vendor/jquery');
var HL = require('../vendor/hl');

你在config里的path配置过模块id了 导致两个两个名字指向一个文件
参考 这个错误的第三条
http://requirejs.org/docs/errors.html#timeout

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题