웹 프론트엔드 JS 튜토리얼 seaJs_Seajs의 모듈 정의 및 모듈 로딩에 대한 간략한 분석

seaJs_Seajs의 모듈 정의 및 모듈 로딩에 대한 간략한 분석

May 16, 2016 pm 04:45 PM
기준 치수

SeaJS는 CommonJS 사양을 따르며 Yubo에서 개발한 모듈 로딩 프레임워크로, 모든 JavaScript 모듈과 CSS 모듈 스타일을 쉽고 즐겁게 로드하는 데 사용할 수 있습니다. SeaJS는 매우 작습니다. 압축 및 gzip 이후의 크기가 4K에 불과하고 SeaJS에는 모듈 정의와 모듈 로딩 및 종속성의 두 가지 코어가 있다는 사실에 있습니다. SeaJS는 매우 강력합니다. SeaJS는 모든 JavaScript 모듈을 로드할 수 있으며 SeaJS는 모듈을 사용할 때 해당 모듈이 의존하는 다른 모듈이 스크립트 실행 환경에 로드되도록 합니다. Yu 삼촌에 따르면 SeaJS를 사용하면 로딩 문제에 대해 걱정할 필요 없이 코드 작성의 즐거움을 누릴 수 있습니다. 너무 많은 js 및 css 참조에 지치셨나요? 저희 회사 웹사이트의 개인 홈페이지에서 39개의 css 및 js 참조를 확인했습니다.

1. 프론트엔드와 백엔드가 동일합니다.
2. 물론 병합으로 해결될 수는 있지만 직접 병합하지 않는 경우에는 문제가 됩니다. 백엔드를 병합하더라도 인건비가 매우 높을 것입니다. 유지 관리, 이렇게 긴 문자열은 눈에 헷갈릴 것입니다

SeaJS는 이러한 문제를 매우 잘 해결할 수 있습니다.

모듈 정의 정의

모듈을 정의하는 것은 상대적으로 간단합니다. 예를 들어, sayHello 모듈을 정의하고 sayHello.js 문서를 생성합니다.

코드 복사 코드는 다음과 같습니다.

define(function(require,exports,module){
imports.sayHello = function(eleID,text) {
document.getElementById (eleID).innerHTML=text;
};
});

먼저 내보내기 매개변수를 살펴보겠습니다. 내보내기 매개변수는 모듈의 API를 제공하는 데 사용됩니다. 즉, 다른 모듈은 이 내보내기 메서드를 통해 sayHello에 액세스할 수 있습니다.

모듈 로딩 용도

예를 들어, 페이지에 ID가 "out"인 요소가 있고 "Hello SeaJS!"를 출력하려고 합니다.
그런 다음 먼저 sea.js
를 도입한 다음 sayHello 모듈을 사용할 수 있습니다. :

코드 복사 코드는 다음과 같습니다.

seajs.use("sayHello/sayHello ",function(say){
say.sayHello("out","Hello SeaJS!");
});

여기서 사용하는 방법은 모듈을 사용하는 방법입니다.

첫 번째 매개변수는 sea.js에 대한 상대 경로로 표현되는 모듈 표현입니다. sayHello.js 뒤의 ".js" 접미사는 생략될 수 있습니다. 물론 이 모듈을 식별하는 방법은 많습니다. 자세한 내용은 공식 지침을 확인하세요. :http://seajs.com/docs/zh-cn/module-identifier.html
첫 번째 매개변수는 콜백 함수입니다. say.sayHello()는 sayHello 모듈의 imports.sayHello 메소드를 호출하는 것입니다. 물론 콜백 함수에는 say 매개변수가 있습니다.

모듈 종속성

모듈 종속성은 모듈이 정의될 때 실제로 존재해야 합니다. 예를 들어 위의 sayHello 모듈을 다시 작성해 보겠습니다. 요소를 가져오고 스타일을 설정하는 등의 일부 메소드와 같은 일반 DOM 모듈이 이미 있다고 가정합니다. 예를 들어 이러한 DOM 모듈의 경우 다음과 같이 DOM.js를 작성합니다.

코드 복사 코드는 다음과 같습니다.

define(함수(요구, 내보내기, 모듈) {
    var DOM = {
        /**
* 요소의 id 속성을 통해 DOM 객체를 가져옵니다. 매개변수는 문자열이거나 여러 문자열입니다.
* @id getById
* @method getById
* @param {String} id the id 속성
* @return {HTMLElement | Object} ID가 있는 HTMLElement 또는 아무것도 발견되지 않은 경우 null입니다.
*/
        getById: function() {
            var els = [];
            for (var i = 0; i < 인수.길이; i ) {
               var el = 인수[i];
               if (typeof el == "string") {
> 🎜>                }
                els.push(el);
}
            return els;
        },
        /**
* get이 객체를 가져옵니다. 객체나 문자열을 전달할 수 있습니다. 문자열이 전달되면 document.getElementById()를 통해 객체를 얻습니다.
* @id get
* @param { String} el html 요소
* @return {Object} HTMLElement 개체.
*/
        get: function(el) {
            if (el & amp; amp; & amp; amp ; amp; (el.tagName || el.item)) {
               return el;
            return this.getById(el);
        }
    };
    DOM 반환 ;
});


那么sayHello模块可以这样编写,为了不影响原来的데모페이지,所以我定一个新的sayHelloA模块,我们可这样编写sayHelloA.js:



复aze代码
代码如下:define(함수(요구, 내보내기, 모듈) { var DOM = require("DOM/DOM");    require("sayHelloA/sayHello.css");
   exports.sayHello = function(eleID, text) {
        DOM.get(eleID). innerHTML = text;
    };
});


函数就是用来建立模块的依赖关系,比如上面sayHelloA模块,就是依赖DOM模块,因为용到了DOM模块的get방법.
注意这里的var DOM=require("DOM/DOM"),这句是将应用进来的DOM模块赋值给DOM;require("sayHelloA/sayHello.css")是直接应用sayHello .css css模块或者说文件。这样页面上会引用这个css文件。

最近这几天一直捣腾SeaJS, 越捣腾越喜欢,感谢玉伯!感谢SeaJS!例没必要这么做。确实如果js文件少的小项目感觉不错模块化优势,但是,更多更了更势就体现来了。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

WLAN 확장 모듈이 중지되었습니다. [수정] WLAN 확장 모듈이 중지되었습니다. [수정] Feb 19, 2024 pm 02:18 PM

Windows 컴퓨터의 WLAN 확장 모듈에 문제가 있는 경우 인터넷 연결이 끊어질 수 있습니다. 이러한 상황은 종종 좌절감을 주지만 다행히도 이 문서에서는 이 문제를 해결하고 무선 연결이 다시 제대로 작동하도록 하는 데 도움이 될 수 있는 몇 가지 간단한 제안 사항을 제공합니다. WLAN 확장성 모듈 복구가 중지되었습니다. Windows 컴퓨터에서 WLAN 확장성 모듈의 작동이 중지된 경우 다음 제안에 따라 문제를 해결하십시오. 네트워크 및 인터넷 문제 해결사를 실행하여 무선 네트워크 연결을 비활성화했다가 다시 활성화하십시오. WLAN 자동 구성 서비스 다시 시작 전원 옵션 수정 수정 고급 전원 설정 네트워크 어댑터 드라이버 재설치 일부 네트워크 명령 실행 이제 자세히 살펴보겠습니다.

WLAN 확장성 모듈을 시작할 수 없습니다. WLAN 확장성 모듈을 시작할 수 없습니다. Feb 19, 2024 pm 05:09 PM

이 문서에서는 무선 LAN 확장 모듈을 시작할 수 없음을 나타내는 이벤트 ID10000을 해결하는 방법을 자세히 설명합니다. 이 오류는 Windows 11/10 PC의 이벤트 로그에 나타날 수 있습니다. WLAN 확장성 모듈은 IHV(독립 하드웨어 공급업체) 및 ISV(독립 소프트웨어 공급업체)가 사용자에게 맞춤형 무선 네트워크 기능을 제공할 수 있도록 하는 Windows의 구성 요소입니다. Windows 기본 기능을 추가하여 기본 Windows 네트워크 구성 요소의 기능을 확장합니다. WLAN 확장성 모듈은 운영 체제가 네트워크 구성 요소를 로드할 때 초기화의 일부로 시작됩니다. 무선 LAN 확장 모듈에 문제가 발생하여 시작할 수 없는 경우 이벤트 뷰어 로그에 오류 메시지가 표시될 수 있습니다.

Python에서 일반적으로 사용되는 표준 라이브러리 및 타사 라이브러리 2-sys 모듈 Python에서 일반적으로 사용되는 표준 라이브러리 및 타사 라이브러리 2-sys 모듈 Apr 10, 2023 pm 02:56 PM

1. sys 모듈 소개 앞서 소개한 os 모듈은 주로 운영 체제용이지만, 이 글의 sys 모듈은 주로 Python 인터프리터용입니다. sys 모듈은 Python과 함께 제공되는 모듈입니다. Python 인터프리터와 상호 작용하기 위한 인터페이스입니다. sys 모듈은 Python 런타임 환경의 다양한 부분을 처리하기 위한 많은 함수와 변수를 제공합니다. 2. sys 모듈에서 일반적으로 사용되는 메서드 dir() 메서드를 통해 sys 모듈에 어떤 메서드가 포함되어 있는지 확인할 수 있습니다. import sys print(dir(sys))1.sys.argv-get 명령줄 매개변수 sys. argv는 프로그램 외부에서 명령을 구현하는 데 사용됩니다. 프로그램에 매개변수가 전달되고 명령줄 매개변수 열을 얻을 수 있습니다.

Python 프로그래밍: 네임드 튜플 사용의 핵심 사항에 대한 자세한 설명 Python 프로그래밍: 네임드 튜플 사용의 핵심 사항에 대한 자세한 설명 Apr 11, 2023 pm 09:22 PM

서문 이 기사에서는 계속해서 Python 컬렉션 모듈을 소개합니다. 이번에는 그 안에 있는 명명된 튜플, 즉 명명된 튜플의 사용을 주로 소개합니다. 더 이상 고민할 필요 없이 시작하겠습니다. 좋아요, 팔로우 및 전달을 기억하세요~ ^_^네임드 튜플 생성하기 Python 컬렉션의 네임드 튜플 클래스인 Tuples는 튜플의 각 위치에 의미를 부여하고 코드의 가독성을 향상시킵니다. 일반 튜플이 사용되는 모든 곳에서 사용할 수 있으며 위치 인덱스가 아닌 이름으로 필드에 액세스하는 기능을 추가합니다. 이는 Python 내장 모듈 컬렉션에서 나옵니다. 사용되는 일반 구문은 다음과 같습니다. import collections XxNamedT

Python의 가져오기는 어떻게 작동하나요? Python의 가져오기는 어떻게 작동하나요? May 15, 2023 pm 08:13 PM

안녕하세요. 제 이름은 somenzz입니다. Zheng 형제라고 불러주세요. Python의 가져오기는 매우 직관적이지만 그럼에도 불구하고 패키지가 거기에 있음에도 불구하고 여전히 ModuleNotFoundError가 발생하는 경우가 있습니다. 상대 경로는 분명히 매우 정확하지만 ImportError:attemptedrelativeimportwithnoknownparentpackage 오류는 동일한 디렉터리에서 모듈을 가져오고 이 글은 가져오기를 사용할 때 자주 발생하는 몇 가지 문제를 분석하여 가져오기를 쉽게 처리하는 데 도움이 됩니다.

Python에서 DateTime을 사용하는 방법 Python에서 DateTime을 사용하는 방법 Apr 19, 2023 pm 11:55 PM

모든 데이터에는 처음에 "DOB"(생년월일)가 자동으로 할당됩니다. 따라서 어느 시점에서는 데이터를 처리할 때 날짜와 시간 데이터를 마주치는 것이 불가피합니다. 이 튜토리얼에서는 Python의 datetime 모듈과 pandas 및 pytz와 같은 일부 주변 라이브러리를 사용하는 방법을 안내합니다. Python에서 날짜 및 시간과 관련된 모든 것은 datetime 모듈에 의해 처리되며, 이 모듈은 모듈을 5개의 다른 클래스로 더 나눕니다. 클래스는 단순히 객체에 해당하는 데이터 유형입니다. 다음 그림은 일반적으로 사용되는 속성 및 예제와 함께 Python의 5개 날짜/시간 클래스를 요약합니다. 3가지 유용한 조각 1. datet를 사용하여 문자열을 날짜/시간 형식으로 변환합니다.

Ansible 작동 방식에 대한 자세한 설명 Ansible 작동 방식에 대한 자세한 설명 Feb 18, 2024 pm 05:40 PM

Ansible의 작동 원리는 위 그림에서 이해할 수 있습니다. 관리 측에서는 관리 측에 연결하기 위해 로컬, SSH 및 zeromq의 세 가지 방법을 지원합니다. 기본값은 SSH 기반 연결을 사용하는 것입니다. 위의 아키텍처 다이어그램에서는 HostInventory(호스트 목록) 분류가 다른 방식으로 수행될 수 있습니다. 관리 노드는 단일 모듈 및 단일 명령의 일괄 실행을 구현합니다. -hoc; 관리 노드는 플레이북을 통해 웹 서비스 설치 및 배포, 데이터베이스 서버 일괄 백업 등과 같은 여러 작업 모음을 구현할 수 있습니다. 우리는 플레이북을 시스템이 통과하는 것으로 간단히 이해할 수 있습니다.

Ansible Ad-Hoc(피어 투 피어 모드) Ansible Ad-Hoc(피어 투 피어 모드) Feb 18, 2024 pm 04:48 PM

공식 문서: https://docs.ansible.com/ansible/latest/command_guide/intro_adhoc.html 소개 Ad-hoc 명령은 일시적으로 입력되고 실행되는 명령으로, 일반적으로 테스트 및 디버깅에 사용됩니다. 간단히 말해서 임시 명령은 "즉시 명령"입니다. 일반적으로 사용되는 모듈 1. 명령 모듈(기본 모듈) 기본 모듈은 쉘만큼 강력하지 않습니다. 기본적으로 쉘 모듈은 명령 모듈의 기능을 지원할 수 있습니다. 【1】Ansible-doccommand# 도움말 다음 ansible-doccomm을 사용하는 것이 좋습니다.

See all articles