自从遇到 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')