RequireJS : "requirejs"와 "require"함수의 차이점


80

requireJS 2.x를 사용하고 있습니다. 일부 튜토리얼 (및 공식 문서)에서 가끔

requirejs.config({ [...] });
requirejs(["module"]) ...

그리고 때때로

require.config({ [...] });
require(["module"]) ...

이 두 함수 (require 및 requirejs)간에 차이점이 있습니까? 문서에서 그것에 대한 단어를 찾을 수 없습니다. :(

답변:


86

그들은 똑같습니다.

그 이유는 일부 환경에 이미.이있을 수 있으며 require,이 경우 RequireJS가이를 덮어 쓰지 않고requirejs

이 커밋을 참조하십시오-https: //github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39


15
감사합니다 :) 문서에 기록되어야합니다. 코드의 주석은 이것을 명확하게하지 않습니다.
Matthias Bayer

동의합니다. 혼란 스럽습니다 (그리고 "공식"requirejs 페이지조차도 사용법과 예제 사이에 불일치가 있습니다). 그들이 같은 사람이라는 것을 아는 것이 좋습니다.
Bil Simser

브라우저에서 CommonJS를 사용하면 (webpack 또는 browserify를 통해) 상황에서 이미 로컬 변수 인 requirejs그대로 액세스 할 수 있습니다 require. .NET Framework에서 추가 스크립트를로드하기 위해 React 구성 요소에서 유용하다는 것을 알았습니다 componentDidMount.
사이먼 스미스

1
좋은 라이브러리, 혼란스러운 문서. "API"섹션조차도 API가 아니라 "요리 책"에 가깝습니다. 공식 문서보다 시작하기에 더 좋은 튜토리얼이 많이 있습니다.
Hal50000 2015

20

인가 requirejsrequire동일한?

RequireJS 2.1.15로, require그리고 requirejs콘솔에서 수행 할 수있는이 시험에 의해 입증 할 수있는 글로벌 공간에서, 참으로 "동일"입니다 :

> require === requirejs
true

테스트 반환 true은 그들이 정확히 동일한 함수 객체 임을 알려줍니다 . 코드가 비슷하거나 동일한 두 가지 기능이 아닙니다. 그들은 같은 대상, 기간입니다.

그러나 실행할 때 함수에 전달되는 define(['require'], function (require) {The require는 일반적으로 global 과 다릅니다require .

require또는 사용해야합니까 requirejs?

때에 따라 다르지. RequireJS는 AMD 로더이지만 마을에서 유일한 로더는 아닙니다. AMD 사양 을 100 % 준수하는 코드를 작성 하여 코드를 사용하는 누군가가 코드를 수정하지 않고도 원하는 로더를 사용할 수 있도록 하려면 RequireJS에 한정되어 있으므로 require글로벌 수준에서 requirejs사용해야합니다. 다른 AMD 로더는이를 정의하지 않습니다. AMD의 스펙을 정의 require하지만 requirejs.

전역 require을 정의하는 다른 것을로드하는 경우 requirejs충돌을 피하기 위해 전역 수준에서 사용해야 합니다.

모듈 내에서 항상를 사용 define하여 require. 전역 공간에 충돌이 있는지 여부에 관계없이이 작업을 수행해야합니다.


2

좋습니다. 그들은 실제로 "정확히 동일"할 수 있습니다. 그런 다음 하나와 다른 것을 사용하는 이유에 중점을 둡니다.

명확하지 않은 것은 "모범 사례"로 간주되어야하는 것입니다. requirejs가 "일부 환경에 이미 요구 사항이있을 수있는 경우"추가 보증을 제공한다면, 요구 구성을 정의하기 위해 항상 requirejs 함수를 사용하는 것이 좋지 않을 것입니다. 필수 기능보다?

Also, what happens if the unthinkable happens and the environment in question not only already has a "require" defined but also has a "requirejs" defined? Does that mean we should have a requirejsjs too? And so on...?


1
기술적으로도, 마찬가지로 동일 $하고 jQuery있습니다. 환경에서 이미 require. 그것은 매우 가장자리 사건과 사용을 권장 require하지만, 필요하지 - github.com/amdjs/amdjs-api/blob/master/AMD.md#global-variables-
사이먼 스미스

0

이미로드 된 동일한 오픈 웹 사이트입니다.

그런 다음 Chrome 콘솔을 엽니 다.

콘솔에 require를 입력하고 Enter를 누르십시오.

콘솔에 requirejs를 입력하고 Enter 키를 누릅니다.

이름이 다른 동일한 기능임을 알 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.