javascript - 创建一个 JS 库并声明其他库所依赖的内容

标签 javascript requirejs dependencies

所以我正在编写一个 php-package,它将放在 github&packagist 上。它生成数据并将其写入文件,该包还将附带一个 js 库,该库的工作是读取该数据文件并将其显示给用户。 现在,这个 js 库依赖于其他库,jquery 是其中之一。

声明这些依赖关系的简洁方法是什么?

我不介意使用 require.js,事实上我已经将它用于其他几个项目。但这些项目是完整的“应用程序”,而不是其他人要包含在其项目中的库。因此,在这些情况下,无需担心添加依赖项和配置 require.js,只需完成一次。但这次我希望能够用最少的代码包含这个库,最好没有关于如何正确加载它以及开发人员还需要加载哪些其他库的长说明。

简而言之:我想分发一个依赖于其他库的库,我或其他开发人员可以使用最少的代码将其包含在另一个项目中,并且无需知道该项目依赖于哪些其他库。

我确信以前有人问过这个问题,但我似乎找不到任何内容。我确实找到了很多有关如何在主项目中声明依赖项的信息,但在库中却找不到。

最佳答案

您有两个选择:

  • 将您的应用程序捆绑到一个文件中(包括第 3 方库)
  • 只需将您的应用程序捆绑到一个文件中(不包含第三方库)

在这两种情况下,您都需要创建自动构建。您可以使用gulp创建任务将所有文件连接到一个文件中,例如其他开发人员将导入的 framework.jsframework.min.js 文件。

您可以使用如果您使用 require.js 您可以使用 gulp-requirejs plugin运行requirejs optimizer :

var gulp = require('gulp'),
    rjs = require('gulp-requirejs');

gulp.task('requirejsBuild', function() {
    rjs({
        baseUrl: 'path/to/your/base/file.js',
        out: 'FILENAME\_TO\_BE\_OUTPUTTED',
        shim: {
            // standard require.js shim options 
        },
        // ... more require.js options 
    })
        .pipe(gulp.dest('./delpoy/')); // pipe it to the output DIR 
});

如果您决定也包含第 3 方库,请使用 No conflict fucntion如果有人已经加载了 jquery,以避免出现问题。

如果您决定不包含这些库,您可以在库的全局范围内查找一些变量,如果依赖项不可用,则抛出错误。

if(typeof $ === "undefined") throw new Error("Framework requires > Jquery 1.9.0");

您通常可以轻松找到库的版本,例如在 jquery 中:

$.prototype.jquery

更新

我个人建议使用Browserify 。如果您使用requirejs,则可以使用 browserify-ftw自动将您的项目从 AMD 迁移到 CommonJS。

Browserify 优化器将生成一个 bundle.js 文件,您的用户将能够直接导入该文件,而无需下载第 3 方依赖项或配置模块加载器。

希望有帮助:)

关于javascript - 创建一个 JS 库并声明其他库所依赖的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29228492/

相关文章:

javascript - 通过动态加载 Angular 应用程序

javascript - 这在浏览器之间返回不同的结果

requirejs - 使用r.js打包一个使用 'text'加载 View 的SPA应用程序

c# - Unity依赖注入(inject)解决返回System.NullReferenceException

Android:依赖项和模块的 Proguard 规则

javascript - 创建具有包容性值的 D3 堆栈图

javascript - 使用邮政编码自动填充州城市

javascript - 固定数据表调整大小示例 : Cannot resize columns

javascript - requireJS 整个文件夹

c++ - 分发使用 wxWidgets 的 C++ Linux 应用程序的选项