Setting up jQuery noConflict with RequireJS

Setting up jQuery noConflict with RequireJS

本文关键字:with RequireJS noConflict jQuery up Setting      更新时间:2023-09-26

我一直在遵循这里的官方RequireJS教程,没有任何运气。我想我可能误解了一些非常基本的东西。

我得到的错误如下:

Uncaught TypeError: Cannot read property 'noConflict' of undefined 

文件夹结构:

/scripts/libs
    jquery.js           // current latest version
    jquery-private.js
    require.js          // current latest version
/scripts
    main.js
page.html

page.html如下:

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
    <title>Questions</title>
    <script data-main="scripts/main" src="scripts/libs/require.js"></script>
</head>
<body>
    hi
</body>
</html>

main.js如下:

require.config({
    baseUrl: 'scripts/libs',
    map: {
        '*': {'jquery': 'jquery-private'},
        'jquery-private': 'jquery'
            // I have also tried this line instead, as in the tutorial:
            // 'jquery-private': { 'jquery': 'jquery' }
    }
});
require(['jquery'], function(jq) {
    alert('test');
});

jquery-private.js为:

define(['jquery'], function(jq) {
    return jq.noConflict(true);
});

我不知道为什么它不工作。我想这是某种设置错误。jquery-private.js文件中的jq变量未定义

如果你有任何问题,请告诉我。提前感谢!编辑:

我能够让它工作使用这个作为require.config:

require.config({
    baseUrl: 'scripts/libs',
    paths: {
        'jquery': 'jquery'
    },
    map: {
        '*': {'jquery': 'jquery-private'},
        'jquery-private': { 'jquery': 'jquery' }
    }
});

再次感谢!

版本没有映射

require.config({
    baseUrl: 'scripts/libs',
    paths: {
        jquery: 'jquery-1.11.1.min'
    }
});
require(['jquery-private'], function ($) {
    console.log('jQuery version: ' + $.fn.jquery)
});

具有map配置的版本

require.config({
  baseUrl: 'js/lib',
  paths: {
    'print': '../patch/print',
    'jquery': '../patch/jquery-1.9.0'
  },
  map: {
    '*': {jQuery: 'jquery'},
    'jQuery': { 'jquery': 'jQuery' }
  }
})
require(['jQuery'], function($) {
  console.log('jQuery version: ' + jQuery.fn.jquery);
});