import导入顺序杂乱的问题

我们经常会遇到项目中的import语句顺序混乱的问题。这不仅会影响代码的可读性,还可能使我们代码在提交的时候产生不必要的冲突。

解决方案

eslint-plugin-import

开始我调研了一下eslint-plugin-import插件。这款插件的排序逻辑是这样:

  1. builtin: 这代表Node.js内置的模块,例如fspath等。

import fs from 'fs';
  1. external: 这代表外部库或框架,通常是你通过npm或yarn安装的模块。

import axios from 'axios';
  1. internal: 这代表项目内部的模块,但它们通常在项目的不同目录或子目录中。这些模块不是直接的父级或同级模块。

import { someFunction } from '@utils/my-helper';
  1. parent: 这代表从父目录导入的模块。

import something from '../something';
  1. sibling: 这代表与当前文件在同一目录下的其他文件。

import { siblingFunction } from './sibling-module';
  1. index: 这代表从目录的index文件导入的模块。

import { indexFunction } from './';
  1. object: 这代表导入的对象属性,例如:

import('some-module').then(({ someExport }) => ...);
  1. type: 这代表从模块导入的类型或接口(这在TypeScript中特别有用)。

 import type { MyType } from './types';

大致分为这些模块。我们可以在eslint的规则中根据这些模块进行排序。但是这并不是我想要的排序模式,我更希望根据功能进行排序。组件放在一起,hooks放在一起,工具函数放在一起,等等。

eslint-plugin-simple-import-sort

于是我找到了eslint-plugin-simple-import-sort这个插件。使用方式如下:

  1. 安装插件:

npm install --save-dev eslint-plugin-simple-import-sort
  1. 配置 ESLint: 在 .eslintrc.js 或你的 ESLint 配置文件中,添加以下配置:

module.exports = {
     // ... 其他配置
     plugins: ['simple-import-sort'],
     rules: {
       'simple-import-sort/imports': 'error',
       'simple-import-sort/exports': 'error',
     },
   };
  1. 自定义排序:

    'simple-import-sort/imports': [
     'error',
     {
       groups: [
         [`^vue$`, `^vue-router$`, `^ant-design-vue$`, `^echarts$`], // 你可以根据需要添加更多的内置模块
           [`.*\\.vue$`], // .vue 文件
           [`.*/assets/.*`, `^@/assets$`],
           [`.*/config/.*`, `^@/config$`],
           [`.*/hooks/.*`, `^@/hooks$`],
           [`.*/plugins/.*`, `^@/plugins$`],
           [`.*/router/.*`, `^@/router$`],
           [`^@/services$`, `^@/services/.*`],
           [`.*/store/.*`, `^@/store$`],
           [`.*/utils/.*`, `^@/utils$`],
           [`^`],
           [`^type `],
       ],
     },
   ],
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,我们可以使用`import`语句来导入模块或包。`import`语句可以在模块中的任何位置使用,但是在函数或类定义中使用时,可能会导致一些问题。下面是一些关于Python中`import`语句的注意事项: 1. `import`语句应该放在模块的开头,这样可以使代码更加清晰易懂。 2. 在函数或类定义中使用`import`语句可能会导致循环导入问题。循环导入问题是指两个或多个模块相互导入,从而导致Python解释器无法确定模块的加载顺序。为了避免循环导入问题,应该尽量避免在函数或类定义中使用`import`语句。 3. 在模块中使用`from module import *`语句可能会导致命名空间污染问题。命名空间污染问题是指在模块中定义的变量或函数可能会覆盖其他模块中的同名变量或函数。为了避免命名空间污染问题,应该尽量避免使用`from module import *`语句。 4. 在Python 3中,`import`语句已经被重新设计,可以在函数或类定义中使用而不会导致循环导入问题。但是,为了避免命名空间污染问题,仍然应该避免使用`from module import *`语句。 基于上述注意事项,建议您在编写Python代码时遵循以下最佳实践: 1. 将`import`语句放在模块的开头。 2. 在函数或类定义中使用`import`语句时,应该将其放在函数或类定义之前。 3. 避免使用`from module import *`语句,而是使用`import module`或`from module import name`语句。 4. 如果您需要在函数或类定义中使用`from module import name`语句,请将其放在函数或类定义之前。 下面是一个示例,演示了如何在Python中使用`import`语句: ```python # 导入模块 import math # 使用模块中的函数 print(math.sqrt(2)) # 导入模块中的函数 from math import sqrt # 直接使用函数 print(sqrt(2)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值