2

自从遇到 RequireJS 我已经开始全心全意地采用它,因为它似乎是组织依赖关系等的好方法。

对于我当前的项目,我创建了一个由 requireJS 组织的模块的“包”,它将为许多 node.js 应用程序提供所需的数据库 API。

但是我遇到了一个绊脚石......我怎样才能允许第三方应用程序使用我的包,而不需要使用 requireJS?

我的应用程序和 API 的目录结构目前如下:

api_package/node_modules
api_package/controllers/*
api_package/views/*
api_package/helpers/*
api_package/models/*
api_package/main.js

application_1/node_modules
application_1/app.js

application_2/node_modules
application_2/app.js

我需要我的应用程序是独立的 - 这样它们就可以轻松部署 - 所以我目前的工作是将 api_package/* 复制到 application_1 和 2 的“node_modules”目录中,并将它们的 requirejs 配置设置为以下:

(function() {
  var requirejs;

  requirejs = require('requirejs').config({
    baseUrl: __dirname,
    nodeRequire: require,
    packages: [
      {
        name: 'api_package',
        location: './node_modules/api_package'
      }
    ]
  });

这感觉有点肮脏和错误!

有没有更好的办法?我是否缺少 requireJS 的一些打包功能?

是否甚至可以隐藏我的 api_package 的实现细节(细节是我正在使用 requireJS)并允许应用程序像使用任何其他模块一样使用它:

require('api_package')
4

1 回答 1

0

您可以使用该amdefine包,它允许您编写 AMD API 并让模块在节点程序中工作,而无需其他程序使用 AMD。

除了amdefine github 页面上的文档之外,RequireJS 网站上也有相关文档。

于 2013-01-22T19:55:49.340 回答