0

我已经完成了以下设置:

  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. 尝试在我的一个视图模型(shell.js)中获取它的副本,如下所示:

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

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

我是新手,我有什么问题吗?

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

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

4

1 回答 1

1

在这种情况下不应该需要垫片,其中linq包含通过脚本标签。只需确保在通过 require.jslinq加载之前通过 script 标签加载即可。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 来排除它。

于 2014-03-05T08:58:53.830 回答