首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未在RequireJS中加载DataJS库

未在RequireJS中加载DataJS库
EN

Stack Overflow用户
提问于 2013-02-13 06:18:16
回答 2查看 866关注 0票数 3

我是RequireJS新手,所以这可能是一个愚蠢的问题!

我使用的是require-jquery。

我想将DataJS库作为一个模块加载。它是一个独立库,不依赖于jQuery。

这是我的start.htm文件的样子:

代码语言:javascript
复制
<html>
<head>

</head>
<body>
    <script type="text/javascript" src="Scripts/Loader.js"></script>
</body>
</html>

Loader.js文件如下所示:

代码语言:javascript
复制
(function (window, undefined) {

    var script = document.createElement('script');
    script.async = true;
    script.src = "scripts/require-jquery.js";

    var entry = document.getElementsByTagName('script')[0];
    entry.parentNode.insertBefore(script, entry);
    script.onload = script.onreadystatechange = function () {
        var rdyState = script.readyState;
        if (!rdyState || /complete|loaded/.test(script.readyState)) {

            require([
                        "jquery",
                        "scripts/datajs-1.1.0"
                    ],
                        function (jQueryHandle, odata) {
                            alert(odata);
                        });

            script.onload = null;
            script.onreadystatechange = null;
        }
    };

})(window);

这是我的文件结构:

代码语言:javascript
复制
Project
|
|----- start.htm
|
|----- Scripts  
       |
       |----- datajs-1.1.0.js   
       |
       |----- require-jquery.js
       |
       |----- loader.js

我认为datajs库支持AMD,因为这个库是这样的:

代码语言:javascript
复制
(function (window, undefined) {

    var datajs = window.datajs || {};
    var odata = window.OData || {};

    // AMD support
    if (typeof define === 'function' && define.amd) {
        define('datajs', datajs);
        define('OData', odata);
    } else {
        window.datajs = datajs;
        window.OData = odata;
    }

    /* -------------------- */

})(this);

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2014-02-28 22:09:19

我有这样的代码:

代码语言:javascript
复制
<script type="text/javascript" src="0.1/Clientscripts/requirejs/2.1.11/require.js"></script>
<script type="text/javascript">
    requirejs.config({
        'baseUrl': '0.1/Clientscripts/',
        'paths': {
            'datajs':'datajs/1.1.2/datajs.min',
            'OData':'datajs/1.1.2/datajs.min'
        },
        'shim': {
            'OData':['datajs']
        }
    });
</script>

在我自己的模块中,我这样做了:

代码语言:javascript
复制
define(['datajs','OData'], function (datajs,OData) {
    console.log(datajs);
    console.log(OData);
    console.log(OData.read);
}

在这里,可以访问datajs和OData对象。

就我个人而言,我认为有多个“路径”--指向同一个文件的条目--是有点尴尬的。

如果你能说:

代码语言:javascript
复制
'paths': { 'datajs':'path/to/datajs',...
 //and then
require(['datajs/core','datajs/OData'],...

但是话说回来..。没有什么是完美的:)

票数 2
EN

Stack Overflow用户

发布于 2013-03-16 04:24:47

我想这就是定义([...而不是请求([..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14842892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档