웹 프론트엔드 JS 튜토리얼 JS 모듈성을 구현하는 방법은 무엇입니까? js 모듈화 설명

JS 모듈성을 구현하는 방법은 무엇입니까? js 모듈화 설명

Aug 11, 2018 pm 03:30 PM
프런트 엔드

이 기사에서 제공하는 내용은 JS 모듈화 구현 방법이 무엇인지입니다. js 모듈화에 대한 설명은 특정 참조 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. CommonJS
배경: 처음에는 모두가 JS가 케이크 조각이고 쓸모가 없다고 생각했습니다. CommonJS는 더 이상 브라우저 기반 애플리케이션을 구축할 수 없습니다. API는 일반 애플리케이션(주로 브라우저가 아닌 애플리케이션)에서 사용되는 많은 API를 정의하여 이러한 격차를 해소합니다. 궁극적인 목표는 Python, Ruby 및 Java와 유사한 표준 라이브러리를 제공하는 것입니다. 이 경우 개발자는 CommonJS를 사용할 수 있습니다. 다양한 JavaScript 인터프리터와 다양한 호스트 환경에서 실행될 수 있는 애플리케이션을 작성하는 API입니다. 2009년 미국 프로그래머 라이언 Dahl은 서버 측 프로그래밍에 JavaScript 언어를 사용하는 node.js 프로젝트를 만들었습니다. 이는 "Javascript 모듈러 프로그래밍"의 공식적인 탄생을 의미합니다. 솔직히 말해서 브라우저 환경에서는 모듈이 없어도 큰 문제가 되지 않습니다. 결국 웹 프로그램의 복잡성은 제한적이지만 서버 측에서는 운영 체제 및 기타 응용 프로그램과 상호 작용할 수 있는 모듈이 있어야 합니다. 그렇지 않으면 프로그래밍 방법이 없습니다.

특정 대표: nodeJs, webpack
Principle: 브라우저가 CommonJS와 호환되지 않는 근본적인 이유는 4가지 Node.js 환경 변수(모듈, 내보내기, 요구, 전역, 긴)가 부족하기 때문입니다. 4개의 변수를 제공할 수 있으므로 브라우저는 CommonJS 모듈을 로드할 수 있습니다.
간단한 구현:

var module = {  
exports: {}
};
(function(module, exports) {  
exports.multiply = function (n) { 
return n * 1000 
};
}(module, module.exports))
var f = module.exports.multiply;
f(5) // 5000
로그인 후 복사


위 코드는 즉시 실행 기능에 두 개의 외부 변수인 모듈과 내보내기를 제공하며 모듈은 다음과 같습니다. 이 즉시 실행 함수 안에 출력 값이 배치되어 모듈 로딩이 구현됩니다.

2. AMD
Background: commonJS 사양을 기반으로 한 nodeJS가 나온 후 그러나 CommonJS는 큰 한계로 인해 서버사이드 모듈이라는 개념이 형성되었습니다. 해당 사양은 브라우저 환경에는 적용되지 않습니다. var 수학 = require('math'); 3);require는 동기식입니다. 모든 모듈이 로컬 하드 디스크에 저장되고 동기식으로 로드될 수 있기 때문에 이는 서버 측에서는 문제가 되지 않습니다. 대기 시간은 하드 디스크를 읽는 시간입니다. 그러나 브라우저의 경우 모듈이 서버 측에 배치되고 대기 시간은 네트워크 속도에 따라 시간이 오래 걸릴 수 있으며 브라우저가 "일시 중단" 상태에 있기 때문에 이는 큰 문제입니다. 상태. 브라우저 측 모듈은 "동기 로딩"(동기)을 사용할 수 없고 "비동기 로딩"(비동기)만 사용할 수 있습니다. 이것이 AMD 스펙 탄생의 배경이다.

특정 표현: RequireJS
사용 예: require([종속성], function(){});
require() 함수는 두 개의 매개변수를 허용합니다.
첫 번째 매개변수는 모든 종속 모듈을 나타내는 배열입니다.
두 번째 매개변수는 콜백 함수로, 이전에 지정한 모듈이 모두 성공적으로 로드되면 호출됩니다. 로드된 모듈은 함수에 매개변수로 전달되므로 이 모듈은 콜백 함수 내에서 사용할 수 있습니다

// 定义模块 myModule.js
define(['dependency'], function(){    
var name = 'Byron';    
function printName(){        
console.log(name);    
}
    return {        
    printName: printName    
    };
    });
// 加载模块
require(['myModule'], function (my){  
my.printName();
});
로그인 후 복사

3, CMD
배경 생성: CMD는 공통 모듈 정의입니다. CMD 사양은 국내에서 개발되었습니다. AMD에 requireJS가 있는 것처럼 CMD에도 SeaJS 브라우저 구현이 있습니다. SeaJS가 해결해야 할 문제는 requireJS와 동일하지만 모듈 정의 방법과 모듈 로딩(실행, 구문 분석) 타이밍에 차이가 있습니다.
특정 표현: Sea .js
사용 예: Factory는 세 개의 매개변수를 갖는 함수입니다. function(require,exports, module)
require는 모듈 ID를 다른 모듈을 얻기 위한 유일한 매개변수로 받아들이는 메소드입니다. 제공된 인터페이스: require(id)
내보내기는 외부 세계에 모듈 인터페이스를 제공하는 데 사용되는 개체입니다.
module은 현재 모듈과 관련된 일부 속성과 메서드를 저장하는 개체입니다.

// 定义模块  myModule.js
define(function(require, exports, module) {  
var $ = require('jquery.js')  
$('p').addClass('active');});
// 加载模块
seajs.use(['myModule.js'], 
function(my){
});
로그인 후 복사

AMD와 CMD의 차이점:
실행 메커니즘: 모듈에 대한 SeaJS의 태도는 다음과 같습니다. 게으른 실행, RequireJS의 모듈에 대한 태도는 실행 전입니다.
사양 준수: RequireJS는 AMD(Asynchronous Module Definition) 사양을 따르고 Sea.js는 CMD(Common Module Definition) 사양을 따릅니다. 사양의 차이로 인해 두

4, ES6 모듈

간의 API가 달라집니다.

세대 배경: Es6* 이전에는 JavaScript에 모듈 시스템이 없었습니다. 대규모 프로그램을 서로 의존하는 작은 파일로 분할한 다음 간단한 방법으로 조립하는 것은 불가능했습니다. 이는 크고 복잡한 프로젝트를 개발하는 데 큰 장벽이 됩니다. 모듈 종속성 로딩 문제를 해결하기 위해 AMD, CMD, COMMONJS가 등장했는데, AMD와 CMD(둘 사이에도 차이점이 있는데 나중에 설명하겠습니다)는 클라이언트에 사용되고 COMMONJS는 서버에 사용됩니다. es6 등장 이후 모듈은 기능으로 정의되었으며 구현이 매우 간단하여 기존 CommonJS 및 AMD 사양을 완전히 대체하고 브라우저 및 서버를 위한 범용 모듈 솔루션이 될 수 있습니다.
사용 예: 내보내기(던지기) 가져오기(소개) 내보내기 기본값(다른 모듈이 이 모듈을 로드할 때 가져오기 명령은 익명 함수의 이름을 지정할 수 있음)

# 🎜🎜#관련 권장 사항:

JS 모듈화-RequireJS

javascript 모듈러 프로그래밍(재인쇄) , javascript 모듈화_PHP 튜토리얼

위 내용은 JS 모듈성을 구현하는 방법은 무엇입니까? js 모듈화 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

Vue3에서 단위 테스트를 작성하는 방법 살펴보기 Vue3에서 단위 테스트를 작성하는 방법 살펴보기 Apr 25, 2023 pm 07:41 PM

Vue.js는 오늘날 프런트엔드 개발에서 매우 인기 있는 프레임워크가 되었습니다. Vue.js가 계속 발전함에 따라 단위 테스트는 점점 더 중요해지고 있습니다. 오늘은 Vue.js 3에서 단위 테스트를 작성하는 방법을 살펴보고 몇 가지 모범 사례와 일반적인 문제 및 솔루션을 제공하겠습니다.

PHP와 Vue: 프런트엔드 개발 도구의 완벽한 조합 PHP와 Vue: 프런트엔드 개발 도구의 완벽한 조합 Mar 16, 2024 pm 12:09 PM

PHP와 Vue: 프론트엔드 개발 도구의 완벽한 조합 오늘날 인터넷이 빠르게 발전하는 시대에 프론트엔드 개발은 점점 더 중요해지고 있습니다. 사용자가 웹 사이트 및 애플리케이션 경험에 대한 요구 사항이 점점 더 높아짐에 따라 프런트 엔드 개발자는 보다 효율적이고 유연한 도구를 사용하여 반응형 및 대화형 인터페이스를 만들어야 합니다. 프론트엔드 개발 분야의 두 가지 중요한 기술인 PHP와 Vue.js는 함께 사용하면 완벽한 도구라고 볼 수 있습니다. 이 기사에서는 독자가 이 두 가지를 더 잘 이해하고 적용할 수 있도록 PHP와 Vue의 조합과 자세한 코드 예제를 살펴보겠습니다.

도메인 간 문제를 해결하는 방법은 무엇입니까? 일반적인 솔루션에 대한 간략한 분석 도메인 간 문제를 해결하는 방법은 무엇입니까? 일반적인 솔루션에 대한 간략한 분석 Apr 25, 2023 pm 07:57 PM

크로스 도메인은 개발 과정에서 자주 접하는 시나리오이며, 인터뷰에서도 자주 거론되는 문제이기도 합니다. 일반적인 크로스 도메인 솔루션과 그 뒤에 숨은 원칙을 익히면 개발 효율성이 향상될 뿐만 아니라 인터뷰에서도 더 나은 성과를 낼 수 있습니다.

프론트엔드 개발에 Go 언어를 사용하는 방법은 무엇입니까? 프론트엔드 개발에 Go 언어를 사용하는 방법은 무엇입니까? Jun 10, 2023 pm 05:00 PM

인터넷 기술이 발전하면서 프론트엔드 개발이 점점 더 중요해지고 있습니다. 특히 모바일 장치의 인기는 효율적이고 안정적이며 안전하고 유지 관리가 쉬운 프런트 엔드 개발 기술을 요구합니다. 빠르게 발전하는 프로그래밍 언어로서 Go 언어는 점점 더 많은 개발자가 사용하고 있습니다. 그렇다면 프론트엔드 개발에 Go 언어를 사용하는 것이 가능할까요? 다음으로 이 글에서는 프론트엔드 개발에 Go 언어를 사용하는 방법을 자세히 설명하겠습니다. 먼저 프론트엔드 개발에 Go 언어가 사용되는 이유를 살펴보겠습니다. 많은 사람들이 Go 언어가 언어라고 생각합니다.

프론트엔드 면접관이 자주 묻는 질문 프론트엔드 면접관이 자주 묻는 질문 Mar 19, 2024 pm 02:24 PM

프론트엔드 개발 인터뷰에서 일반적인 질문은 HTML/CSS 기초, JavaScript 기초, 프레임워크 및 라이브러리, 프로젝트 경험, 알고리즘 및 데이터 구조, 성능 최적화, 크로스 도메인 요청, 프론트엔드 엔지니어링, 디자인 패턴, 새로운 기술 및 트렌드. 면접관 질문은 후보자의 기술적 능력, 프로젝트 경험, 업계 동향에 대한 이해를 평가하기 위해 고안되었습니다. 따라서 지원자는 자신의 능력과 전문성을 입증할 수 있도록 해당 분야에 대한 충분한 준비를 갖추어야 합니다.

노드의 버퍼에 대해 자세히 알아보기 노드의 버퍼에 대해 자세히 알아보기 Apr 25, 2023 pm 07:49 PM

초기에 JS는 브라우저 측에서만 실행되었습니다. 유니코드로 인코딩된 문자열은 처리하기 쉬웠지만 바이너리 및 유니코드가 아닌 인코딩된 문자열을 처리하는 것은 어려웠습니다. 그리고 바이너리는 컴퓨터의 가장 낮은 데이터 형식인 비디오/오디오/프로그램/네트워크 패키지입니다.

See all articles