如何在没有显式相对路径(../../../lib..
)的情况下轻松引用模块中的其他目录?
我正在编写节点模块,并且我想在模块中重用一些全局内容
最基本的 - 我想将模块的根路径设置为全局'所以我可以很容易地调用其他来源而不使用很多相对路径../../
等等。它可能导致代码混乱,如果项目结构发生变化,很容易误解或错过。
所以我已经看到很多选项in that post以及其他一些用于处理这类事情的库(例如提供根路径的模块 - app-module-path,{{3} },rootpath等)但它们都是指基础项目/应用程序,而不是其他人使用的模块。
设置全局是一个坏主意,我明白环境变量也不是一个好主意。
那件事有好的做法吗?也许还有我无法找到或听到的东西。
以下是我试图避免和我正在寻找的内容的一个例子:
// avoid things like that:
// ./lib/something/forthat/doit.js
var config = require('../../../config/project/type1/config.js');
// ./config/project/type1/config.js
module.exports = {
msg: 'hi'
};
// find somethings like that:
// when the root path/require can be found in every location of the module
// and is relative to my app and not the app using my module.
// ./lib/something/forthat/doit.js
var config = require(rootPath + 'config/project/type1/config.js');
// OR
var config = rootRequire('config/project/type1/config.js');
// OR anything else
// ./config/project/type1/config.js
module.exports = {
msg: 'hi'
};
答案 0 :(得分:1)
要获取当前目录路径,可以在nodejs项目中的任何位置使用全局变量$('.btn, .product-delete').on("click", function(){
$this=$(this);
var unitPrice=parseInt($this.parents("tr").find(".unit-price").text());
switch($this.text()){
case " +":
currentVal= parseInt($this.parents("tr").find("input[type='text']").val());
newVal=currentVal+1;
$this.parents("tr").find("input[type='text']").val(newVal);
$this.parents("tr").find(".total-price").text(unitPrice*newVal);
break;
case " -":
currentVal= parseInt($this.parents("tr").find("input[type='text']").val());
if(currentVal==0){
break;
}
newVal=currentVal-1;
$this.parents("tr").find("input[type='text']").val(newVal);
$this.parents("tr").find(".total-price").text(unitPrice*newVal);
break;
case "Delete":
$this.parents("tr").remove();
}
//sum all total cols
var total=0;
$(".total-price").each(function(){
total+= parseInt($(this).text());
});
$(".grand-total").text("Total "+total);
});
。示例:__dirname
将此内容写入项目中的任何文件,控制台会将当前目录路径打印为字符串。
或者,您可以使用快递会话模块;
console.log(__dirname)
答案 1 :(得分:0)
首先......相对路径根本不会产生混淆。相反,你可以称之为凌乱(如果你想),它被认为是最好的做法。但我也能理解你。你不喜欢非常凌乱的代码。因此,对于这种情况,您应该将该部分/代码作为静态内容提供。因此,您可以轻松地通过提供非常登录的拖尾路径来访问它。但请记住,这种方式是相对路径服务的替代方式。