由於跨RequireJS來的時候已經開始全心全意地接受它,因爲它似乎我已經創建了一個「一攬子組織的依賴等如何管理requireJS基於包的Node.js應用
對於我的當前項目的好方法'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/*進入「node_modules」的application_1 & 2目錄,並設置其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')
這是否意味着每個單個代碼文件在api_package中,我需要預先'if(typeof define!=='function')var define = require('amdefine')(module); }'? – greTech
@是的,每一個你想要通過AMD/CommonJS加載的代碼文件。不過,r.js優化器可以在部署版本中刪除它們。 – jevakallio