gpt4 book ai didi

curljs - 相对路径和curl.js

转载 作者:行者123 更新时间:2023-12-02 09:18:57 24 4
gpt4 key购买 nike

我有一个这样布局的项目:

  • 库/
    • bar.js
    • curl.js
  • src/
    • foo.js
  • 测试/
    • 测试.html

在我的 test/test.html 文件中,我有以下内容

<script type="text/javascript" src="../lib/curl.js" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">

curl(['../src/foo'], function (Foo) {
console.log(Foo);
});

</script>

这失败了,我看到的唯一解决方法是在加载curl.js之前包含以下内容:

<script>

curl = {
paths: {
src: '../src'
}
};

</script>

所以我的第一个问题是,如果我只想链接到 src/ 目录中的单个文件,为什么必须以这种方式设置路径。

假设第一个问题已解决,我的第二个问题在 src/foo.js 中。我想在该文件中依赖 lib/bar.js,因此我编写了以下内容:

define(['../lib/bar'], function (Bar) {
return Bar;
});

唉,这不起作用,因为curl.js正在尝试加载test/lib/bar.js而不是我希望的lib/bar.js会。如果唯一的选择是为curl指定一个paths对象,是否可以在src/foo.js模块中执行此操作,或者是否必须全部在test/test.html 文件?

最佳答案

So my first question is why do I have to setup paths this way if I just want to link to a single file in the src/ directory.

好问题。这看起来可以称为错误。我们或许应该解决这个问题,但恕我直言,这不是一个主要问题。让我解释一下......

curl.js 面向复杂的项目,其中模块被捆绑到“包”中——在概念上与 CommonJS/NodeJS 包非常相似。在包中,使用“../”从一个包导航到另一个包是没有意义的。事实上,我们许多人认为这应该会产生错误。不幸的是,curl.js 在这种情况下只是默默地失败了(恕我直言,这绝对是一个错误)。

您看到的错误可能是当您不使用包时,curl.js 正在应用包导航逻辑。 (嗯,对我来说听起来更像是一个错误。:))

因此,一般来说,curl.js 需要进行配置。该配置中最重要的部分是baseUrl。 baseUrl 告诉curl 应用程序的根目录所在的位置。在你的情况下,它是“..”(你也可以将其写为“../”,但curl无论如何都会在内部切断尾随的“/”。

您不必使用全局变量预先配置curl。您还可以在第一次调用curl()时包含配置,如下所示。

curl({ baseUrl: '..' }, ['src/foo'], function (Foo) {
console.log(Foo);
});

我认为这也回答了你的第二个问题。您可以使用 baseUrl 而不是配置路径。然而,一旦您开始组织模块,路径最终会派上用场。例如,路径可以将“lib/jquery-1.8.0/jquery.min.js”这样的困惑路径转换为“jquery”。

curl({ baseUrl: '..', paths: { "lib/jquery-1.8.0/jquery.min.js": "jquery" });

我实际上推荐包而不是路径。随着越来越多的人开始编写可以在节点和浏览器中运行的 CommonJS 包,它可能变得不可避免。此外,我们计划围绕包构建curl.js 的编译为javascript 的功能。

希望我有帮助。 :)

关于curljs - 相对路径和curl.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11904049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com