如何在不提及相对文件路径的情况下要求模块

how to require a module without mentioning the relative file path

这是一个示例文件夹结构

folder1
--lib
----app.js

folder 2
--www
----Application.js

文件夹 2 中的 Application.js 文件需要文件夹 1 中的 app.js 文件,方法如下 var app = require('../../folder1/lib/app') 然后 Application.js 被浏览器化。

我想要实现的是要求 app.js 进入 Application.js 而不提及路径 .ie var app = require('app') 并且不更改文件夹结构,但在浏览时它将映射实际文件即 folder1/lib/app.js for require('app').

编辑

我正在考虑在 folder1 中创建一个文件,负责浏览 folder2 中的代码。 例如:$folder2> 节点 ../folder1/build.js www/Application.js 将输出一个浏览器文件映射 require('app') 到文件夹 1

中的 app.js

我倾向于使用app-module-path

我的文件夹结构:

index.js
app/
   lib/
     hash.js
   controllers/
     index.js
   middleware/
     auth.js

并在 index.js 中:

require('app-module-path').addPath(__dirname);

然后例如在controllers/index.js中,我可以这样做:

var auth = require('app/middleware/auth');
var hash = require('app/lib/hash');

这是针对 nodejs 的。现在对于 browserify 你可以使用 aliasify.

replacements: {
  "app/(\w+)": "app/"
}

它让事情变得更干净。