当我们导入一个函数时,是否有可能避免多个 ../ ?
Is there any possibility to avoid multiple ../ when we are importing a function?
我想在导入函数时避免这个问题
const ApiError = require('../../../../classes/ErrorClass');
是否可以使用,我不知道 Ex:
require('mypath/ErrorClass')
如果我有 11 个导入,我不想有这样的东西
const ApiError = require('../../../../classes/ErrorClass');
const ex= require('../../../classes/ApiClass');
const ex1= require('../../../../utils/utils');
const ex2= require('../../../etc/etc');
const ex3= require('../../../../../etc/etc');
const ex4= require('../../../../etc/etc');
const ex5= require('../../../../etc/etc');
const ex6= require('../../../../etc/etc');
谢谢!
您可能希望使用提供的 built-in 变量节点 __dirname
来获得应用程序根目录
说你有这个目录
myapp/
├─ utils/
│ ├─ main.js
├─ lib/
│ ├─ mylib.js
├─ node_modules/
所以,
main.js:
const mylib = require(__dirname + '/lib/mylib')
由于没有深入了解您的配置,我将尝试在此处提供一些不同的解决方案。
Webpack
如果您使用的是 webpack,则可以为解析使用别名配置 属性 在您的实际路径与您想要调用的路径之间创建一个映射。它看起来像这样:
const path = require('path');
module.exports = {
resolve: {
alias: {
Components: path.resolve(__dirname, '/path/to/function')
}
}
}
查看 resolve chapter 表单 webpack 文档以获取更多信息。
打字稿
在使用 typescript 时,您可以在 tsconfig.json
中指定 baseUrl
属性,这将允许您指定相对于您在此处指定的路径的每个导入。假设您有这条路径:'../../../../classes/ErrorClass'
,展开后看起来像:src/some/folder/structure/classes/ErrorClass
。配置后,如果 baseUrl
配置为 src/some/folder/structure
.
,这可能看起来像这样 classes/ErrorClass
是的,您可以使用 package.json
来完成。
假设您具有以下结构:
my-app/
├─ src/
│ ├─ index.js
│ ├─ node_modules/
│ ├─ dir/
│ │ ├─ nested/
│ │ │ ├─ nestedMod.js
│ ├─ function/
│ │ ├─ myMod.js
│ │ ├─ myMod3.js
│ │ ├─ myMod2.js
├─ package.json
您必须在 package.json
中添加 imports
字段
{
"name": "my-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"imports": {
"#nestedMod": "./src/dir/nested/nestedMod.js",
"#myFunc": "./src/function/myMod.js",
"#myFunc2": "./src/function/myMod2.js",
"#myFuncs/*": "./src/function/*.js"
}
}
那么你可以这样做:
const nestedMod = require('#nestedMod')
const myFunc = require('#myFunc')
const myFunc2 = require('#myFunc2')
const myFunc3 = require('#myFuncs/myMod3')
P.S.: 仅适用于 Node
我想在导入函数时避免这个问题
const ApiError = require('../../../../classes/ErrorClass');
是否可以使用,我不知道 Ex:
require('mypath/ErrorClass')
如果我有 11 个导入,我不想有这样的东西
const ApiError = require('../../../../classes/ErrorClass');
const ex= require('../../../classes/ApiClass');
const ex1= require('../../../../utils/utils');
const ex2= require('../../../etc/etc');
const ex3= require('../../../../../etc/etc');
const ex4= require('../../../../etc/etc');
const ex5= require('../../../../etc/etc');
const ex6= require('../../../../etc/etc');
谢谢!
您可能希望使用提供的 built-in 变量节点 __dirname
来获得应用程序根目录
说你有这个目录
myapp/
├─ utils/
│ ├─ main.js
├─ lib/
│ ├─ mylib.js
├─ node_modules/
所以, main.js:
const mylib = require(__dirname + '/lib/mylib')
由于没有深入了解您的配置,我将尝试在此处提供一些不同的解决方案。
Webpack
如果您使用的是 webpack,则可以为解析使用别名配置 属性 在您的实际路径与您想要调用的路径之间创建一个映射。它看起来像这样:
const path = require('path');
module.exports = {
resolve: {
alias: {
Components: path.resolve(__dirname, '/path/to/function')
}
}
}
查看 resolve chapter 表单 webpack 文档以获取更多信息。
打字稿
在使用 typescript 时,您可以在 tsconfig.json
中指定 baseUrl
属性,这将允许您指定相对于您在此处指定的路径的每个导入。假设您有这条路径:'../../../../classes/ErrorClass'
,展开后看起来像:src/some/folder/structure/classes/ErrorClass
。配置后,如果 baseUrl
配置为 src/some/folder/structure
.
classes/ErrorClass
是的,您可以使用 package.json
来完成。
假设您具有以下结构:
my-app/
├─ src/
│ ├─ index.js
│ ├─ node_modules/
│ ├─ dir/
│ │ ├─ nested/
│ │ │ ├─ nestedMod.js
│ ├─ function/
│ │ ├─ myMod.js
│ │ ├─ myMod3.js
│ │ ├─ myMod2.js
├─ package.json
您必须在 package.json
imports
字段
{
"name": "my-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"imports": {
"#nestedMod": "./src/dir/nested/nestedMod.js",
"#myFunc": "./src/function/myMod.js",
"#myFunc2": "./src/function/myMod2.js",
"#myFuncs/*": "./src/function/*.js"
}
}
那么你可以这样做:
const nestedMod = require('#nestedMod')
const myFunc = require('#myFunc')
const myFunc2 = require('#myFunc2')
const myFunc3 = require('#myFuncs/myMod3')
P.S.: 仅适用于 Node