Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

4年前关闭。



Improve this question




尽管有很好的解决方案来管理服务器端的依赖关系,但我找不到满足我一致的客户端JavaScript依赖关系管理工作流的所有需求的解决方案。我要满足以下5个要求:
  • 以类似于npm的package.jsonbowerbower.json
  • 的格式管理客户端依赖性
  • 它应该可以灵活地指向我的dependency.json文件中的git repo或实际js文件(在Web上或本地)(针对鲜为人知的库)(npm让您指向git repos)
  • 它将所有库压缩并命名为一个单独的文件,例如ender-这是我唯一需要在客户端
  • <script>标记中放入的js文件
  • 它应该对CoffeeScript具有开箱即用的支持,例如BoxJS 4(现已停用)
  • 在浏览器中,我应该可以使用require样式之一:
    var $ = require('jquery');
    var _ = require('underscore');
    

    或者更好,做headjs风格:
    head.js(['jquery', 'underscore', 'mylib'], function($, _, mylib) {
      // executed when all libraries are loaded
    });
    

  • 如果没有一个这样的工具,那么最好的工具组合是什么,即可以使用volo(或grunt)进行组合的工具链?

    我已经在这里研究了我链接到的所有工具,它们最多只能单独满足我最多3个要求。因此,请不要再发布有关这些工具的信息。我只接受一个提供满足我所有5个要求的工具的答案,或者如果有人发布了多个满足我所有要求的此类工具的工具链的具体工作流程/脚本/工作示例,则我将只接受一个答案。谢谢你。

    最佳答案

    require.js可以满足您的所有需求。

    我对 this 问题的回答可能对您有帮助

    例子:

    客户端应用程序项目层次结构:

    sampleapp
        |___ main.js
        |___ cs.js
        |___ require.js
    

    main.js 是您初始化客户端应用程序并配置require.js的位置:
    require.config({
        baseUrl: "/sampleapp",
        paths: {
            jquery: "libs/jquery", // Local
            underscore: "http://underscorejs.org/underscore-min.js", // Remote
            backbone: "https://github.com/documentcloud/backbone/blob/master/backbone-min.js" // Remote on github
        },
        shim: {
            backbone: {
                deps: ["underscore", "jquery"] // Backbone depends on jquery and underscore
            }
        }
    });
    
    require(["cs!someCoffeescriptFile", "jquery", "backbone", "underscore"], function (SomeCoffeescriptFile, $, Backbone, _) {
        // Dependencies are loaded...
        // Execute code
    });
    

    当以“cs!”为前缀时,依赖项将使用cs插件。 cs插件编译coffeescript文件。

    当您使用prod时,可以使用r.js预编译整个项目。
    node ./node_modules/requirejs/bin/r.js -o buildclientconfig.js
    

    这是您的要求:
  • 以类似于npm的格式管理客户端依赖项
    package.json或bower的component.json。 不一样,但是很好!
  • 我应该可以灵活地指向git repo或实际的js
    我的dependency.json文件中的文件(在Web上还是本地)
    鲜为人知的库(npm,让您指向git repos)。
  • 应该将所有库压缩并命名为一个文件,例如
    ender-这是我需要在脚本标签中放入的唯一js文件
    在客户端。 是r.js的
  • 它应该对Box等coffeescript具有开箱即用的支持。
  • 在浏览器中,我可以使用require样式或headjs。
  • 关于javascript - 如何管理客户端JavaScript依赖关系? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12893046/

    10-12 12:35
    查看更多