웹 프론트엔드 JS 튜토리얼 THREE.JS 시작하기 튜토리얼(5) 꼭 알아야 할 10가지_기본지식

THREE.JS 시작하기 튜토리얼(5) 꼭 알아야 할 10가지_기본지식

May 16, 2016 pm 05:42 PM

Three.js는 WebGL을 통해 JavaScript가 GPU를 작동하고 브라우저 측에서 진정한 3D를 구현할 수 있게 해주는 훌륭한 오픈 소스 WebGL 라이브러리입니다. 하지만 이 기술은 아직 개발 단계이고 정보가 극히 부족합니다. 매니아들은 기본적으로 Demo 소스 코드와 Three.js 자체의 소스 코드를 통해 배워야 합니다.
0. 소개
안녕하세요, 좋은 코드를 작성하는 방법에 대한 첫 글입니다. 많은 개발자들처럼 나도 직접 해 보면서 배웠지만 경험이 더 많은 다른 개발자들에게서도 배웠습니다. 나는 지난 몇 달 동안 캔버스 태그와 함께 많은 시간을 보냈고, 이 기간 동안 WebGL과 JavaScript에 대해 배운 모든 작은 트릭을 적어 보는 것이 흥미로울 것이라고 생각했습니다. 일부는 매우 구체적이고 일부는 매우 일반적입니다.
1. 최대한 빨리 프로토타입을 작성하세요.
간단하게 시작해 보세요. 이제 훌륭한 아이디어가 생겼으므로 프로그램의 가장 복잡한 부분의 프로토타입을 빠르게 작성하여 기술이 아이디어를 구현할 수 있는지 확인해야 합니다. WebGL은 그래픽 카드의 GPU를 직접 조작할 수 있기 때문에 매우 강력하지만, 그래픽 카드의 내부 컴퓨팅에 비해 효율성이 훨씬 떨어지는 JavaScript를 통해 그래픽 카드에 액세스해야 한다는 점을 잊지 마십시오. 사실, 당신의 천재적인 아이디어는 이처럼 단순한 것에 의해 좌절될 가능성이 높습니다.
2. 3D 처리를 위해 THREE.JS를 사용하세요
저도 친구인 하킴처럼 우리가 사용하는 기술의 낮은 수준의 세부 사항을 완전히 이해하고 있습니다. 표면 아래에 무엇이 있는지 이해하는 것이 중요하지만 three.js를 사용하면 많은 수고를 덜 수 있습니다. Canvas, WebGL, SVG와 함께 사용할 수 있으며, 필요에 맞는 방법을 찾아야 합니다.
3. SetInterval을 피하세요
이것은 JavaScript를 사용하여 애니메이션을 만드는 모든 사람에게 중요한 사항입니다. 왜? 20밀리초마다 실행되도록 함수를 설정하고 이 함수를 실행하는 데 20밀리초 이상이 걸리면 20ms 후에 브라우저는 신경 쓰지 않고 다음 실행을 직접 시작한다고 가정합니다. 최소한 SetTimeout을 사용하여 함수가 실행된 후 다시 실행할 수 있습니다.

사실 더 현대적이지만 아직 완성되지 않은 requestAnimationFrame이라는 함수가 있는데, 정말 훌륭합니다. 이는 탭이 포커스를 잃으면 더 이상 실행되지 않는다는 점을 제외하면 setTimeOut 함수와 매우 유사합니다. 이제 이 함수는 여전히 브라우저에 종속되며 표준은 나중에 변경될 수 있습니다. 더 많은 정보를 원하시면 Paul Irish의 블로그를 방문해 보세요.
4. 역순 루프 사용
이것은 루프를 더 빠르게 만들 수 있는 작은 트릭입니다. 역순을 사용하고 while 루프를 사용하십시오. 예를 들어, 다음 루프는 다음과 같습니다.

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

for(var a = 0; a < arr.length; a ) {
// 뭔가를 수행하세요
}

다음 루프만큼 효율적이지 않습니다.
// 배열 arr이 존재한다고 가정
var aLength = arr. length;
while(aLength --) {
// 뭔가를 하세요
}


실행 효율성은 주로 무엇을 하느냐에 달려 있기 때문에 오버헤드를 많이 절약할 수는 없습니다. 루프 본문에서 수행하십시오. 그러나 프로그램의 불필요한 오버헤드를 마지막 바이트까지 줄이고 싶다면 후자의 루프가 확실히 승리할 것입니다.

솔직히 프로그램 실행 효율성에 영향을 미치는 주요 요인은 어레이 캐시의 길이입니다. JSPerf를 확인하여 이에 대한 내용과 JavaScript 성능에 영향을 미치는 기타 요소에 대해 알아볼 수 있습니다.

5. 텍스처 사용
WebGL에서 객체의 모든 세부 사항을 그리는 것이 매력적으로 보일 수 있지만 가능하다면 텍스처를 사용할 수 있는지 여부에 주의해야 합니다. 성능. 그림자나 흐림 효과와 같은 특정한 경우에는 텍스처를 사용해야 할 수도 있지만, 다른 경우에는 텍스처를 사용할 수 있는지 항상 주의해야 합니다.
6. 캐싱 사용
나는 내 실험에서 이것을 많이 시도했습니다. 프레임 루프에서는 변수, 개체 또는 기타 항목을 참조하지 않아야 합니다. 이러한 이유로 애니메이션을 렌더링할 때 빠르게 액세스할 수 있도록 모든 모델과 정점을 캐시하는 것이 좋습니다.
7. 비활성화 체크
저는 이 작은 코드 조각을 좋아해서 Canvas나 WebGL이 포함된 모든 페이지에 넣습니다.

// DOM 요소의 마우스 선택 비활성화
document.onselectstart = function() {
return false
};
캔버스 컨트롤에서만 선택을 비활성화할 수도 있습니다. 이것은 캔버스가 전체 화면을 차지하는 프로젝트에서 사용하는 코드입니다.
8. JavaScript에서 CSS를 정의하지 마세요
요즘에는 특히 JQuery를 사용할 때 JavaScript에서 CSS를 정의하는 것이 너무 편리합니다.
코드 복사 코드는 다음과 같습니다.

// 이렇게 하지 마세요
$("#someid").css({
위치: '상대적',
높이: '30px',
너비: '300px',
배경색상: '#A020F0'
})

문제는 이렇게 하면 JavaScript 코드가 곧 다양한 유형의 CSS 정의로 채워지고 *.css 파일을 사용하여 CSS를 정의하므로 잠재적인 문제를 감지하기 어렵게 됩니다. 더 나은 접근 방식은 클래스를 사용하여 CSS를 모듈화하고 JavaScript에서 예측할 수 없는 CSS 클래스만 정의하는 것입니다.
9. 객체에 콜백 함수를 정의합니다.
제가 생각해낸 코드는 아니지만 너무 깔끔하고 아름답습니다. 사용할 콜백 함수가 많은 경우에는 다음과 같이 사용할 수 있습니다.
코드 복사 코드는 다음과 같습니다. :

$("#someid").click(function() {
// 콜백 함수
// JQuery에서 false를 반환하면 메시지 전달과 릴리스가 방지됩니다. 기본 동작
return false;
});

또는 다음과 같이 코드의 다른 곳에 정의된 느슨한 함수를 콜백할 수도 있습니다.
코드 복사 코드는 다음과 같습니다.

$("#someid").click(mySuperFunction)
function mySuperFunction; (이벤트) {
// 여기서 많은 일을 합니다
return false
}

이 작업에는 몇 가지 문제가 있습니다. 첫 번째 코드에서는 익명 함수를 이벤트에 바인딩했으며 이벤트에서 함수 바인딩을 해제하기가 ​​어렵습니다. 물론 이벤트의 모든 함수를 언로드할 수 있지만 여러 함수가 바인딩되어 있고 하나만 언로드하고 싶을 수도 있습니다. 두 번째 경우에는 함수 이름이 전역 변수 공간을 오염시키고 코드 유지 관리 가능성이 떨어집니다. 따라서 다음을 수행해 보십시오.
코드 복사 코드는 다음과 같습니다.

$( "#someid" ).click(callbacks.mySuperFunction);
// 모든 콜백 함수는 콜백 객체에 있습니다.
var callbacks = {
mySuperFunction:function(event) {
// 추가 작업
return false;
}
}
// 함수 바인딩 해제
$("#someid").unbind('click', callbacks.mySuperFunction);
이것은 깔끔하고 깨끗하며 위에서 언급한 두 가지 문제를 방지합니다.

10. 연결 삼항 연산자
이 내용은 Paul Irish의 "JQuery, 11 Things You Should Know"에서 전적으로 배웠습니다. 이것은 매우 유용하며 당신도 좋아할 것입니다. 우리는 종종 이렇게 합니다:

// a의 값은 numberBasedOnA 할당
// a가 5보다 크면 200을 할당하고, 그렇지 않으면 38을 할당합니다.
var numberBasedOnA = a > 5 ? 200 : 38; >그런데 이렇게 하고 싶다면 예를 들어 값이 특정 값이면 어떻고, 값이 특정 값보다 크면 어떻고, 값이 더 크면 어떻습니까? 이 경우 연결된 삼항 연산자가 매우 유용합니다.



코드 복사
코드는 다음과 같습니다. var numberBasedOnA = a < 7 ? 38 : a < 15 ;
// 이렇게 하는 것보다 더 효율적입니다
// a >=15

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

내 자신의 JavaScript 라이브러리를 어떻게 작성하고 게시합니까? 내 자신의 JavaScript 라이브러리를 어떻게 작성하고 게시합니까? Mar 18, 2025 pm 03:12 PM

기사는 JavaScript 라이브러리 작성, 게시 및 유지 관리, 계획, 개발, 테스트, 문서 및 홍보 전략에 중점을 둡니다.

브라우저에서 성능을 위해 JavaScript 코드를 최적화하려면 어떻게해야합니까? 브라우저에서 성능을 위해 JavaScript 코드를 최적화하려면 어떻게해야합니까? Mar 18, 2025 pm 03:14 PM

이 기사는 브라우저에서 JavaScript 성능을 최적화하기위한 전략에 대해 설명하고 실행 시간을 줄이고 페이지로드 속도에 미치는 영향을 최소화하는 데 중점을 둡니다.

프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? 프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? Apr 04, 2025 pm 02:42 PM

프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

브라우저 개발자 도구를 사용하여 JavaScript 코드를 효과적으로 디버그하려면 어떻게해야합니까? 브라우저 개발자 도구를 사용하여 JavaScript 코드를 효과적으로 디버그하려면 어떻게해야합니까? Mar 18, 2025 pm 03:16 PM

이 기사는 브라우저 개발자 도구를 사용하여 효과적인 JavaScript 디버깅, 중단 점 설정, 콘솔 사용 및 성능 분석에 중점을 둡니다.

Java의 컬렉션 프레임 워크를 효과적으로 사용하려면 어떻게해야합니까? Java의 컬렉션 프레임 워크를 효과적으로 사용하려면 어떻게해야합니까? Mar 13, 2025 pm 12:28 PM

이 기사는 Java의 컬렉션 프레임 워크의 효과적인 사용을 탐구합니다. 데이터 구조, 성능 요구 및 스레드 안전을 기반으로 적절한 컬렉션 (목록, 세트, ​​맵, 큐)을 선택하는 것을 강조합니다. 효율적인 수집 사용을 최적화합니다

소스 맵을 사용하여 조정 된 JavaScript 코드를 디버그하는 방법은 무엇입니까? 소스 맵을 사용하여 조정 된 JavaScript 코드를 디버그하는 방법은 무엇입니까? Mar 18, 2025 pm 03:17 PM

이 기사는 소스 맵을 사용하여 원래 코드에 다시 매핑하여 미니어링 된 JavaScript를 디버그하는 방법을 설명합니다. 소스 맵 활성화, 브레이크 포인트 설정 및 Chrome Devtools 및 Webpack과 같은 도구 사용에 대해 설명합니다.

Chart.js : Pie, Donut 및 Bubble Charts를 시작합니다 Chart.js : Pie, Donut 및 Bubble Charts를 시작합니다 Mar 15, 2025 am 09:19 AM

이 튜토리얼은 Chart.js를 사용하여 파이, 링 및 버블 차트를 만드는 방법을 설명합니다. 이전에는 차트 유형의 차트 유형을 배웠습니다. JS : 라인 차트 및 막대 차트 (자습서 2)와 레이더 차트 및 극지 지역 차트 (자습서 3)를 배웠습니다. 파이 및 링 차트를 만듭니다 파이 차트와 링 차트는 다른 부분으로 나뉘어 진 전체의 비율을 보여주는 데 이상적입니다. 예를 들어, 파이 차트는 사파리에서 남성 사자, 여성 사자 및 젊은 사자의 비율 또는 선거에서 다른 후보자가받는 투표율을 보여주는 데 사용될 수 있습니다. 파이 차트는 단일 매개 변수 또는 데이터 세트를 비교하는 데만 적합합니다. 파이 차트의 팬 각도는 데이터 포인트의 숫자 크기에 의존하기 때문에 원형 차트는 값이 0 인 엔티티를 그릴 수 없습니다. 이것은 비율이 0 인 모든 엔티티를 의미합니다

누가 더 많은 파이썬이나 자바 스크립트를 지불합니까? 누가 더 많은 파이썬이나 자바 스크립트를 지불합니까? Apr 04, 2025 am 12:09 AM

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.

See all articles