Backbone.js “lib”中的主干木偶、RequireJS和依赖项`
我已经开发了一段时间主干/RequireJS应用程序,现在正在更新它以使用木偶。当木偶AMD试图在rootBackbone.js “lib”中的主干木偶、RequireJS和依赖项`,backbone.js,requirejs,marionette,Backbone.js,Requirejs,Marionette,我已经开发了一段时间主干/RequireJS应用程序,现在正在更新它以使用木偶。当木偶AMD试图在root/中搜索jquery、主干和下划线时,它首先中断,但是,我在/lib中有这些库,我可以修改代码。解决这个问题的正确方法是什么?(如果可能,请不要将库移出/lib) 我现在所做的是使用非AMD版本的工作。但有时,我会在一些视图中看到CollectionView未定义的错误,这让我想知道它是否与使用非AMD build for RequireJS有关您不能(或至少不应该)修改每个库的源代码以告诉
/
中搜索jquery、主干和下划线时,它首先中断,但是,我在/lib
中有这些库,我可以修改代码。解决这个问题的正确方法是什么?(如果可能,请不要将库移出/lib
)
我现在所做的是使用非AMD版本的工作。但有时,我会在一些视图中看到CollectionView
未定义的错误,这让我想知道它是否与使用非AMD build for RequireJS有关您不能(或至少不应该)修改每个库的源代码以告诉它依赖项在哪里。但是,您可以控制代码的位置
我使用的方法是将RequireJS的baseUrl
设置到/lib
文件夹中,这样您的库代码就可以很容易地找到它的依赖项,然后将别名“app”用于我的代码所在的任何地方,如下所示:
目录布局
main.js(或配置RequireJS的任何地方)
路径
配置中的所有路径都与基本URL
相关。为上面类似的app
定义映射意味着当RequireJS加载名为app/foo的模块时,它将使用(baseUrl)/../app/foo.js:
my-code.js
您不能(或者至少不应该)修改每个库的源代码来告诉它依赖项在哪里。但是,您可以控制代码的位置
我使用的方法是将RequireJS的baseUrl
设置到/lib
文件夹中,这样您的库代码就可以很容易地找到它的依赖项,然后将别名“app”用于我的代码所在的任何地方,如下所示:
目录布局
main.js(或配置RequireJS的任何地方)
路径
配置中的所有路径都与基本URL
相关。为上面类似的app
定义映射意味着当RequireJS加载名为app/foo的模块时,它将使用(baseUrl)/../app/foo.js:
my-code.js
这是一个常见问题,我知道有两种解决方案: 1) 为您的项目修改AMD版本的木偶 指定这两个库的正确路径,就可以开始了。这是木偶依赖项列表中的一个简单更改,不会影响其他功能 但这是个坏主意。这意味着您必须更改代码,并且每当您获得新版本时,都必须再次更改它 2) 在requirejs中使用命名模块/路径 我已经将依赖项指定为“jquery”、“下划线”、“主干”字符串,这意味着您可以使用命名路径来配置这些依赖项所在的位置 在您的requirejs配置中包括:
require.config({
paths: {
"jquery": "/your/path-to/jquery"
}
});
现在,“jquery”依赖项将通过木偶找到
这是两种解决方案中较好的一种,因为它不需要您更改木偶文件。它只需要配置RequireJS来提供这些命名路径。这是一个常见问题,我知道有两种解决方案: 1) 为您的项目修改AMD版本的木偶 指定这两个库的正确路径,就可以开始了。这是木偶依赖项列表中的一个简单更改,不会影响其他功能 但这是个坏主意。这意味着您必须更改代码,并且每当您获得新版本时,都必须再次更改它 2) 在requirejs中使用命名模块/路径 我已经将依赖项指定为“jquery”、“下划线”、“主干”字符串,这意味着您可以使用命名路径来配置这些依赖项所在的位置 在您的requirejs配置中包括:
require.config({
paths: {
"jquery": "/your/path-to/jquery"
}
});
现在,“jquery”依赖项将通过木偶找到
这是两种解决方案中较好的一种,因为它不需要您更改木偶文件。它只需要配置RequireJS来提供这些命名路径
define(['backbone', 'app/view'], (Backbone, MyView) {/*...*/}
require.config({
paths: {
"jquery": "/your/path-to/jquery"
}
});