Javascript 如何适应GSAP';s使用ESLint进行名称空间黑客攻击?
背景:GSAP有一个“不规则”的进口申报。范例Javascript 如何适应GSAP';s使用ESLint进行名称空间黑客攻击?,javascript,namespaces,global-variables,gsap,Javascript,Namespaces,Global Variables,Gsap,背景:GSAP有一个“不规则”的进口申报。范例 import TimelineMax from 'gsap'; import GSAP from 'gsap-react-plugin'; 令人惊讶的是,您从未在任何地方使用这两个对象中的任何一个,尽管需要导入它们。发生的情况是,一组对象被加载到全局命名空间中,因此这突然成为可能: _animateIn() { const toggleWrapper = ReactDOM.findDOMNode(this.refs.toggleWrapp
import TimelineMax from 'gsap';
import GSAP from 'gsap-react-plugin';
令人惊讶的是,您从未在任何地方使用这两个对象中的任何一个,尽管需要导入它们。发生的情况是,一组对象被加载到全局命名空间中,因此这突然成为可能:
_animateIn() {
const toggleWrapper = ReactDOM.findDOMNode(this.refs.toggleWrapper);
TweenLite.set(toggleWrapper, { display: 'block' });
TweenLite.to(toggleWrapper, 0.3, { opacity: 1 });
}
我基本上已经接受了这一点,但是在我的ESLint配置中,我很难使用它
我有所有的globals,所以使用的任何东西都不会抛出:
"globals": [
"TimelineLite",
"TimelineMax",
"TweenLite",
"TweenMax",
"Back",
"Bounce",
"Circ",
"Cubic",
"Ease",
"EaseLookup",
"Elastic",
"Expo",
"Linear",
"Power0",
"Power1",
"Power2",
"Power3",
"Power3",
"Power4",
"Quad",
"Quart",
"Quint",
"RoughEase",
"Sine",
"SlowMo",
"SteppedEase",
"Strong",
"Draggable",
"SplitText",
"VelocityTracker",
"CSSPlugin",
"ThrowPropsPlugin",
"BezierPlugin"
],
我有“没有未使用的变量”:[2,{“vars”:“local”}]
这样全局变量也不会被检查
但是,这两种方法都不能解决上述导入在使用其“全局子项”的文件中的任何位置都不能使用的问题,并且ESLint仍然抛出
作为权宜之计,我尝试了window.TimelineMax=TimelineMax代码>在我们一直用于此目的的utils文件中,但这让我觉得杂乱无章
有更好的方法处理GSAP吗?正如@Bergi所说,处理依赖于副作用的库的一种方法就是导入“包”代码>,并让名称空间发生任何需要发生的事情。如果您只是为了其副作用而导入内容,但不需要为其导出(如果有)使用变量,则应仅使用导入“gsap”代码>