Javascript에는 필수 vs .default가 필요합니다.
리액트 핫 로더를 사용하고 있는데 코드 예제가 너무 헷갈려요.
import React from 'react'
import ReactDOM from 'react-dom'
import { AppContainer } from 'react-hot-loader'
import App from './containers/App'
ReactDOM.render(
<AppContainer>
<App/>
</AppContainer>,
document.getElementById('root')
);
// Hot Module Replacement API
if (module.hot) {
module.hot.accept('./containers/App', () => {
const NextApp = require('./containers/App').default;
ReactDOM.render(
<AppContainer>
<NextApp/>
</AppContainer>,
document.getElementById('root')
);
});
}
내가 모르는 건
a) 앱과 Next App을 사용해야 하는 이유는 무엇입니까?아니다App
와 같은NextApp
같은 파일로부터 Import 되고 있기 때문에?
b) 베스트 프랙티스는,requires
코드 선두에 표시됩니다.하지만 나는 이미 그곳에 있다.import App from '../containers/App
'. 그래서:
import App from './containers/App'
const NextApp = require('./containers/App').default;
해선 안된다App
그리고.NextApp
똑같아?
c) 종료하기 위해 다음 코드 라인은 동등합니까?퓨어를 사용하는 것이 무슨 차이가 있습니까?require
및 arequire .default
?
const NextApp = require('./containers/App');
const NextApp = require('./containers/App').default;
기본적인 질문이라면 죄송합니다만, 이 코드를 이해하기 위해서는 어디로 가야 하는지 힌트가 필요합니다.
이를 보다 잘 이해하려면 다른 비반응 케이스에 대해 웹 팩이 핫모듈 로딩 기능을 제공하는 방법을 살펴봐야 합니다.
아이디어는 꽤 간단해 사실...웹 팩은 코드에 발생하는 변경을 감지하고 해당 모듈을 다시 컴파일합니다.단, 모듈 참조 자체를 안전하게 대체할 수는 없습니다.그렇기 때문에 HMR 인터페이스를 직접 실장해야 합니다.module.hot
예제 코드를 호출합니다.
새로운 버전의 모듈을 사용할 수 있게 되면 웹 팩은 모듈체인을 올라갑니다(즉, X가 Import한Y와 Y가 변경된 경우 웹 팩은 X > W > V...부터 시작하여 Y 또는 X 또는 W 또는 V 등에 대해 HMR을 구현한 모듈을 검출합니다).거기서부터 체인 전체를 다시 로드합니다.
HMR이 변경을 받아들이지 않고 루트에 도달하면 페이지 전체가 갱신됩니다.
이제 앱과 Next App에 대한 문제...App은 모듈의 정적으로 가져온 버전입니다.기본적으로 모듈은 한 번만 구문 분석되고 로드되므로 앱은 변경되지 않는 일정한 참조를 가리킵니다.이것이 HMR 코드 내에서 변경된 모듈을 수신하는 예에서 다른 변수 NextApp이 사용되는 이유입니다.
마지막으로 require 및 require.default...ES6 Import(내보내기 기본값 MyComponent)를 처리할 때 내보낸 모듈은 {"default" : MyComponent} 형식입니다.그import
스테이트먼트는 이 할당을 올바르게 처리하지만, 당신은 다음 작업을 수행해야 합니다.require("./mycomponent").default
자신을 변환합니다.HMR 인터페이스 코드는 사용할 수 없습니다.import
인라인으로 동작하지 않기 때문입니다.이 문제를 피하고 싶다면module.exports
export default
.
언급URL : https://stackoverflow.com/questions/43247696/javascript-require-vs-require-default
'programing' 카테고리의 다른 글
장고와 리액트 입수하는 방법JS가 같이 일한다고? (0) | 2023.03.12 |
---|---|
JSON 피드에서 선택한 드롭다운 목록을 AngularJS로 채우려면 어떻게 해야 합니까? (0) | 2023.03.07 |
Oracle - SQL 개발자로부터 스크립트를 생성하는 방법 (0) | 2023.03.07 |
Spring Reactor 웹 앱에서 일련의 작업을 수행하고 다음 작업을 완료하기 전에 하나의 작업을 완료하려면 어떻게 해야 합니까? (0) | 2023.03.07 |
AngularJS: ng-include에 각부하 스크립트를 작성하는 방법 (0) | 2023.03.07 |