模块引用方式利弊辨析: 全局绝对引用(alias) && 长相对引用
前言
import component from '../../../../component/aaa.js'
介绍: https://www.jianshu.com/p/beafc1470fca
npm地址: https://www.npmjs.com/package/babel-plugin-module-resolver
两种方式
- 使用全局路径,依靠babel插件实现全局引用(alias)
- 使用相对路径,并依靠VScode自带功能提升效率
使用全局路径,依靠babel插件实现全局引用(alias)
利
- 代码简洁,短小精悍
弊
- 无法利用VScode默认自带功能实现点击跳转,比如我们看代码时候经常需要点击一个require的链接,然后实现跳转,但是使用这种alias的时候不能实现自动跳转
- 无法利用VScode默认自带的路径导入功能,写成alias虽然简单了,但是形式上简单,实际工程中却未必简单,这是因为,如果是采用相对路径的话,根据系统的默认自带功能,可以自动引入相对路径的,根本无需编写。如果你采用绝对路径的方式书写方法时,VScode的这一功能就爱莫能助了
- 完全不需要考虑代码重构问题
- RN-web和RN的代码打包方式不一致,可能产生冲突,因为RN用的是babel结合bundleJS打包的,而web是根据webpack打包的,两者在设置全局alias的时候方式可能不一样,需要测试预估风险
使用相对路径,并依靠VScode自带功能提升效率
利
- VScode默认自带相对路径跳转功能,实现相对路径点击跳转。这是个非常有用的功能,当你在A文件中,看到它引用了一个B文件下的类,你可以直接跳转到B文件,让代码阅读变得非常方便
- VScode默认自带相对路径导入功能,如果是采用相对路径的话,根据系统的默认自带功能,你敲出方法名的时候,会逐个字母筛选并显示提示,同时选择对应方法的时候,文件上方会自动引入那个模块的相对路径。
- 文件路径修改时候,VScode自带一键更新路径功能,所以重构什么的so easy!
- 思路保守,不会发生不可预测的问题
弊
折中方案, 以及进一步的利弊分析
OK,那我们能不能既让代码好看,同时还使用方便简单呢??
其实我想过这么一种方案:
- 插件生态问题:我们团队不可能大家都用VScode, 而且本来VScode就不一定有这种插件,而其他IDE的社区就更差了,我认为能通过插件达到效果的希望不大
- 就算真的有这些插件,使用起来似乎也不太方便,VScode的扩展插件的代码是不能上传到github的,要自己下载,而同步的话又需要额外的插件,这样,新人加进来就不能做到开箱即用了。我们之间团队的协调还不能做到完全一致,可能新人进来没人引导他下载这些VScode插件
- 好吧,就算前2种都没问题,但其实还是有问题,因为我们没办法完全禁掉相对路径引用,所以结果就是相对引用和绝对引用并存的状态,这时候风格就很乱,不统一
结论
就用相对路径吧!! 难看就难看呗,咱们追求的是实用主义
模块引用方式利弊辨析: 全局绝对引用(alias) && 长相对引用的更多相关文章
- CSS样式表引用方式
最近讲课中,有些学员对调用样式表老是有含糊不清?大体说来有四种方式: 1.外部文件引用方式;(推荐使用) 2.使用@import引用外部CSS文件; 3.内部文档头方式也叫内嵌法调用; 4.直接插入式 ...
- Java 8 的新特性和Java 的4种引用方式
一.接口的增强 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: interface Formula { double ca ...
- python 模块被引用多次但是里面的全局表达式总共只会执行一次
python 模块被引用多次但是里面的全局表达式总共只会执行一次
- Android多Module下的Application引用方式
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Android开发时,Application一般都放在APP中,Lib模块如果想引用Application则需要在APP中进行传递, ...
- 转载:Java的四种引用方式
原文:https://www.cnblogs.com/huajiezh/p/5835618.html Java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指 ...
- arcgis api for js自定义引用方式
(1)常规模式 即arcgis js常见的模块引用方式,采用 require-function 模式,function的参数与require一一对应即可(dojo/domReady!比较特殊,无需 ...
- CSS 选择器及各样式引用方式
Css :层叠样式表 (Cascading Style Sheets),定义了如何显示HTML元素. 目录 1. 选择器的分类:介绍ID.class.元素名称.符合.层次.伪类.属性选择器. 2. 样 ...
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
MyBatis mapper文件中的变量引用方式#{}与${}的差别 #{},和 ${}传参的区别如下:使用#传入参数是,sql语句解析是会加上"",当成字符串来解析,这样相比于$ ...
- css的两种引用方式 link和@import
学习web开发的最大乐趣就是不断的发现自己以前不曾见过的东西,这些东西对于我来说是那么的新鲜有趣. 比如说今天偶尔研究别人的网站,就发现了有趣的东东. 当点开此网页的css时(这个css文件命名方式就 ...
随机推荐
- C语言每日一练——第2题
一.题目要求 已知数据文件in.dat中存有300个四位数,并调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所 ...
- django----csrf跨站请求伪造 auth组件 settings源码 importlib模块
目录 importlib模块 csrf跨站请求伪造 form表单发送 ajax发送 csrf装饰器 auth模块 如何创建超级用户(root) 创建用户 校验用户名和密码是否正确 保存用户登录状态 判 ...
- 关于eclipse码代码时光标自动消失要重新点击输入框的问题
前几天码代码时在两个电脑都出现了同样的问题,就是在输入的时候,输入法突然从程序框切换到某不可名状的位置,要重新点击输入框才能解决.(后发现不但是eclipse,任何带有输入框的都会出现此问题) 经排查 ...
- NodeJS2-6环境&调试----debug
13_debug.js //测试的脚本 function test1() { const a = parseInt(Math.random() * 10); const b = parseInt(Ma ...
- 程序员offer沟通的4个基本原则
常柱 架构未来 你需要就一份新工作进行沟通时:比如你的薪水.福利,或者我个人最喜欢的每周工作时间缩短等,当公司问你“你想要多少?”或者“这是我们的报价,你说呢?” 最后关于薪资的谈话可能是最伤脑筋 ...
- Python基础-day01-8
变量的基本使用 程序就是用来处理数据的,而变量就是用来存储数据的 目标 变量定义 变量的类型 变量的命名 01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 ...
- SpringMVC生成的验证码图片不显示
近期用SSM框架写一个项目,登录模块需要生成验证码图片,我把相关的代码写好了之后传到 jsp ,但是图片不显示,查看控制台显示404,反复查询了一下代码并没有发现任何问题,代码如下: @Control ...
- SAP S4HANA TR传输之操作
SAP S4HANA TR传输之操作 事务代码: STMS_IMPORT, 选中请求,点击漏斗按钮, 输入要传输的TR(可以多个),然后回车, 鼠标单击请求号,按F9, 然后传输, 点击按钮'是',系 ...
- confluence 挖矿木马应急响应
最近遇到一台confluence wiki主机被挖矿,收到CPU 告警异常之后,登录查看,进行分析. top c 命令查看,果然CPU 已经资源已经被吃完了.. 看到用户是confluence,100 ...
- 15.junit测试类使用及注解
1.junit简介 JUnit是一个Java语言的单元测试框架,可以大大缩短你的测试时间和准确度.多数Java的开发环境都已经集成了JUnit作为单元测试的工具. 2.实现junitDemo示例 2. ...