【问题标题】:how to require a module without mentioning the relative file path如何在不提及相对文件路径的情况下要求模块
【发布时间】:2015-12-29 18:08:08
【问题描述】:

这是一个示例文件夹结构

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/用于 require('app') 的 app.js。

编辑

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

【问题讨论】:

  • 您已使用requirejs 标记您的问题。您实际上是如何使用 RequireJS 的? (如何加载、配置等)
  • 我正在使用 browserify ex:borwserify Application.js > path/to/some/folder 构建脚本,并且 requirejs 包含实际路径
  • 我已经从您的问题中删除了requirejs,因为您似乎没有使用它。请注意,RequireJS 是specific product。该标签用于与该产品有关的问题。
  • 但是,我的问题是关于 requirejs 和 browserify,我正在寻找的是在文件被浏览化之前自动为 requirejs 中的路径设置别名。
  • 好吧,那么我们回到第一方。请编辑您的问题以说明您如何加载和配置 RequireJS。您的问题越接近minimal reproducible example,您就越有可能得到真正解决您问题的答案。

标签: javascript node.js browserify


【解决方案1】:

我倾向于为此使用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/$1"
}

它使事情变得更清洁。 ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-26
    • 2023-02-10
    • 2018-04-18
    • 2015-05-17
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多