将Linq.js与Durandal / Require.js一起使用

时间:2014-03-05 06:44:06

标签: javascript requirejs durandal linq.js weyland

我做了以下设置:

  1. 添加了以下脚本标记:

    <script src="Scripts/linq.js"></script>
    
  2. 在main.js中配置linq.js

    requirejs.config({
    paths: {
        'text': '../Scripts/text',
        'durandal': '../Scripts/durandal',
        'plugins': '../Scripts/durandal/plugins',
        'transitions': '../Scripts/durandal/transitions',
        'knockout': '../Scripts/knockout-2.3.0',
        'jquery': '../Scripts/jquery-1.9.1,',        
        'linq': '../Scripts/linq'
    }
    // The ko in this project is already AMD
    , shim: {        
        linq : {
            exports: 'Enumerable'
        }
    }   
     });
    
  3. 尝试在我的一个viewmodel(shell.js)中获取它的副本,如下所示:

    define(['plugins/router', 'durandal/app','linq'], function (router, app, linq) 
    
  4. 使用weyland优化构建,但是我得到了:

  5.   

    错误1 ENOENT,没有这样的文件或目录   'C:\ Project \ build \ App \ linq.js'C:\ Project \

    我是新手,我有什么不对吗?

    我认为垫片应该指向全局变量,我做了。

    除了垫片之外,我还需要创建自己的定义吗?我认为Shim应该是一个语法糖包装器,而不是定义一个全局变量?

1 个答案:

答案 0 :(得分:1)

在这种情况下不应要求垫片,其中linq包含在脚本标记中。在通过require.js加载linq之前,只需确保通过脚本标记加载main.js。接下来删除配置条目和依赖项。

requirejs.config({
    paths: {
        'text': '../Scripts/text',
        'durandal': '../Scripts/durandal',
        'plugins': '../Scripts/durandal/plugins',
        'transitions': '../Scripts/durandal/transitions',
        'knockout': '../Scripts/knockout-2.3.0',
        'jquery': '../Scripts/jquery-1.9.1,'
        }
    }   
});


define(['plugins/router', 'durandal/app'], function (router, app){...

这样就没有必要配置weyland来排除它。