Javascript 是否使用绝对路径?而不是从';导入X/什么东西/X';?

Javascript 是否使用绝对路径?而不是从';导入X/什么东西/X';?,javascript,node.js,react-native,Javascript,Node.js,React Native,我想知道对我来说,为我的项目使用完整路径的最佳方式 例如,如果我正在导入一个组件,我不想从“../components/component”导入组件,而只想从“app/components/component”导入组件 有人能帮我吗?你可以在package.json name部分计算出你的应用程序的名称,然后在绝对路径前面使用它,即 import Component from MyApp/components/Component 以下是有关描述问题的更多信息,以获得绝对路径 我正在考虑你的pa

我想知道对我来说,为我的项目使用完整路径的最佳方式

例如,如果我正在导入一个组件,我不想从“../components/component”导入组件,而只想从“app/components/component”导入组件


有人能帮我吗?

你可以在package.json name部分计算出你的应用程序的名称,然后在绝对路径前面使用它,即

import Component from MyApp/components/Component

以下是有关描述问题的更多信息,以获得绝对路径

我正在考虑你的package.json在根目录中

在内部,您的package.json添加一个新的属性名,其值随您的需要而定,即

"name": "root"
然后导入与该路线相关的所有路线

import Component from root/components/Component
您可以使用babel解析器:。
希望它能帮助你

了解每个人的答案

实际上,您可以在其他文件夹中的任何位置创建
package.json

例如,您有:

▾ assets/
  ▸ home/
  ▸ png/
    favicon.png
    icon.png
    splash.png
▾ components/
  ▸ display/
  ▸ filters/
  ▸ forms/
  ▾ images/home/
      feedback.js
    index.js
▸ crud/
如果您在资产文件夹中创建
package.json
,则

{"name": "assets"}
然后,您可以使用
assets/png/someimage.png

您还可以使用babel模块解析器,其中包括
babel.config.js
(如果您使用的是expo)

将其修改为:

module.exports = function (api) {
  api.cache(true);
  return {
    presets: ["babel-preset-expo"],
    plugins: [
      [
        "module-resolver",
        {
          root: ["./"],
          alias: {
            assets: "./assets",
            components: "./components",
            crud: "./crud",
            helpers: "./helpers",
          },
        },
      ],
    ],
  };
};

我尝试了很多方法。每个文件夹的
package.json
文件对我来说太多了。另外,我对此也有问题,因为它会开始抱怨我的
import-React from'React'
语句

我找到的最佳解决方案是基于
babel.config.js
(如果您使用的是Expo)。它使用一个40KB的库,数百万次下载。因此,您必须:

  • 将您的
    babel.config.js
    设置为:
  • module.exports=函数(api){
    api.cache(true);
    返回{
    预设:[“模块:地铁反应本地巴别塔预设”],
    插件:[
    [
    “模块解析器”,
    {
    根:['.'],
    扩展:[
    “.ios.ts”,
    “.android.ts”,
    “.ts”,
    “.ios.tsx”,
    “.android.tsx”,
    “.tsx”,
    “.jsx”,
    “.js”,
    “.json”,
    ],
    别名:{
    应用程序:'./src/app',
    助手:“./src/helpers”,
    ...
    },
    },
    ],
    ],
    };
    };
    
    这应该足够了。但是,如果您像我一样,使用
    typescript
    ,您可能还希望通过防止IDE抱怨导入来取悦IDE

  • 按如下方式编辑您的
    tsconfig.json
  • {
    “编译器选项”:{
    ...
    “baseUrl”:“,
    “路径”:{
    “app/*”:[”/src/app/*”],
    “helpers/*”:[“/src/helpers/*”],
    ...
    },
    ...
    }
    }
    
    我有点难以理解配置,因为那篇文章将
    app
    显示为基本文件夹,而我使用的是
    src
    。没什么大不了的,只是把它转化成我的场景。顺便说一句,我的文件结构如下:

    project
     - android
     - ios
     - src
       - app
       - helpers
     index.js
    
    project
     - android
     - ios
     - src
       - app
       - helpers
     index.js