Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Requirejs 我可以为单个和多个优化设置一个配置吗 文件结构 assets/js/src/index.js assets/js/config.js_Requirejs - Fatal编程技术网

Requirejs 我可以为单个和多个优化设置一个配置吗 文件结构 assets/js/src/index.js assets/js/config.js

Requirejs 我可以为单个和多个优化设置一个配置吗 文件结构 assets/js/src/index.js assets/js/config.js,requirejs,Requirejs,如果我想使用r.js优化文件,只需执行r.js-o config.js name=src/index out=build/index.js,r.js会将一个文件编译成具有优化和依赖性的build/index.js,但将来会有很多文件需要编译,所以我创建了一个builds.js assets/js/builds.js 如果我运行r.js-o builds.js,我将得到错误的路径消息 Error:Error:enoint:没有这样的文件或目录,打开'D:\www\r\build\plugin\jq

如果我想使用r.js优化文件,只需执行
r.js-o config.js name=src/index out=build/index.js
,r.js会将一个文件编译成具有优化和依赖性的
build/index.js
,但将来会有很多文件需要编译,所以我创建了一个builds.js

assets/js/builds.js 如果我运行
r.js-o builds.js
,我将得到错误的路径消息

Error:Error:enoint:没有这样的文件或目录,打开'D:\www\r\build\plugin\jquery.min.js'

我需要返回到
config.js
,编辑相对于
src
的路径

requirejs.config({
    baseUrl: './',
    paths: {
        jquery: '../plugin/jquery.min'
    }
})

它可以工作,但是否可以为这两个目的编写一个配置文件?

在构建文件中再次指定相对于/src的路径

builds.js 生成文件中的路径与配置文件中的路径工作方式不同

/src的appDir选项指定所有脚本都位于/src中,但是config.js和文件夹结构的/plugins位于/src之外

解析jquery路径时,会使用config.js文件中的路径,因为使用了maincigfile选项

除了配置文件外,还需要在构建文件中重新定义所有模块路径。这是因为所有模块路径都是相对于baseUrl解析的,baseUrl与构建文件中的appDir相关,这是一个令人困惑的地方

请参考以下r.js示例构建文件

RequireJS优化器上的官方文档包含关于路径解析的有用部分。

相对路径解析规则:

通常,如果它是一个路径,则它相对于用于保存构建选项的build.js文件,或者如果只是使用命令行参数,则它相对于当前工作目录。作为文件路径的属性示例:appDir、dir、mainConfigFile、out、wrap.startFile、wrap.endFile

对于baseUrl,它是相对于appDir的。如果没有appDir,则baseUrl是相对于build.js文件的,或者如果只是使用命令行参数,则是相对于当前工作目录的

对于路径,它们是相对于baseUrl的,就像它们对于require.js一样


无法工作
错误:错误:错误:模块路径不存在:D:/www/requirejs/assets/js/index.js,用于名为:index的模块。路径是相对于:D:/www/requirejs/assets/js
看起来您重组了目录——您的构建文件现在是在assets/js而不是src中吗?你需要设置baseUrl,使其与你的应用程序目录相对。我更新了文章,使其更加清晰,builds.js与config.js位于
assets/js目录下
,我需要将
assets/js/src/
中的javascript文件编译到
assets/js/build/
目录。谢谢!我已经更新了我的答案。您的思路是正确的,但解决方案是除了在配置文件中指定与生成文件的baseUrl相关的路径外,还要在生成文件中指定路径。
requirejs(['jquery']);
requirejs.config({
    baseUrl: './',
    paths: {
        jquery: 'plugin/jquery.min'
    }
})
({
    appDir: 'src',
    dir: 'build',
    mainConfigFile: 'config.js',
    modules: [
        {name: 'index'}
    ]
})
requirejs.config({
    baseUrl: './',
    paths: {
        jquery: '../plugin/jquery.min'
    }
})
({
    appDir: 'src',
    baseUrl: './',
    dir: 'build',
    modules: [
        {name: 'index'}
    ],
    paths: {
        jquery: '../plugin/jquery.min'
    }
})