Blockly API 사용

소개

이 페이지에서는 함수를 호출하고 함수에 액세스하기 위한 권장사항을 설명합니다. 핵심 Blockly의 속성입니다. 이 원칙은 웹 브라우저, 애플리케이션 환경, Blockly를 사용하거나 Blockly를 독립형 애플리케이션에 통합할 수 있습니다.

서브클래스 생성 및 확장

Blockly에는 다음과 같은 기능 추가를 위한 여러 패러다임이 있습니다.

  • 서브클래스 (예: 새 렌더기 생성)
  • 믹스인 (예: 블록 확장 또는 뮤테이터 추가)
  • 블록 정의 (예: 프러시저 블록 정의)

이 문서의 목적상 세 가지 경우는 모두 다음과 동일합니다. 서브클래스화입니다.

서브클래스 삽입

Blockly.inject 메서드를 통해 특정 클래스의 교체를 지원합니다. 이러한 서브클래스는 기본 클래스를 확장하거나 해당하는 기본 클래스를 구현해야 합니다. 인터페이스에 추가되었습니다.

서브클래스를 삽입 메서드에 전달할 수 있습니다.

Blockly.inject('blocklyDiv', {
  plugins: {
    'metricsManager': CustomMetricsManagerClass
  }
}

또는 Blockly.registry를 사용하여 클래스를 등록하고 레지스트리 이름을 사용하여 클래스를 삽입합니다. 이것은 주사제를 보관하거나 순수 JSON으로 변환할 수 있습니다

Blockly.registry.register(Blockly.registry.Type.METRICS_MANAGER, 'YOUR_NAME', SubClass);

Blockly.inject('blocklyDiv', {
  plugins: {
    'metricsManager': 'YOUR_NAME'
  }
}

다음 클래스를 대체할 수 있습니다.

등록 이름 인터페이스/기본 클래스
blockDragger Blockly.IBlockDragger
connectionChecker Blockly.IConnectionChecker
connectionPreviewer Blockly.IConnectionPreviewer
flyoutsVerticalToolbox Blockly.IFlyout
flyoutsHorizontalToolbox Blockly.IFlyout
metricsManager Blockly.IMetricsManager
renderer Blockly.blockRendering.Renderer
toolbox Blockly.IToolbox

인터페이스 사용에 관한 자세한 내용은 인터페이스 섹션을 확인하세요. 참조하세요.

공개 상태

TypeScript 액세스 수정자를 사용합니다. 코어 라이브러리의 공개 상태를 public, private 또는 protected로 표시합니다. 일부 속성은 @internal TsDoc 주석

모든 publicprotected 속성은 Blockly 웹사이트의 참조 섹션 그 외에 코드를 읽고 가시성을 확인할 수 있습니다

공개

public로 표시된 모든 항목은 공개 API의 일부입니다. 모듈의 모든 속성 공개 상태 수정자가 없는 경우 공개 상태로 간주됩니다.

공개 API를 자주 또는 정당한 이유 없이 변경하려고 시도하지 않으며 있습니다. 예외: 하나의 출시에서 새 API를 공개할 수 있고 다음 출시에서 초기 의견을 수렴하여 수정하세요. 그런 다음 공개 함수나 속성을 안정적인 것으로 간주하세요

공개 함수는 어디서나 호출할 수 있으며, 서브클래스에서 서명이 변경되지 않는 한

protected

보호되는 함수 및 속성은 정의하는 클래스나 서브클래스이기 때문입니다

서브클래스는 보호된 함수와 속성을 재정의하는 것이 허용되며 서체 서명을 변경할 수 있습니다.

예를 들어 기본 렌더기 클래스를 확장하는 맞춤 렌더기는 참조해야 합니다.

각각의 경우 함수 또는 속성이 어떻게 작동하는지 이해해야 합니다. 사용됩니다.

비공개

이는 정의와 동일한 파일의 코드로만 액세스할 수 있습니다. 직접 이러한 속성에 액세스하면 정의되지 않은 동작이 발생할 수 있습니다.

서브클래스는 비공개 함수와 속성을 재정의할 수 없습니다.

사유지는 다음과 같이 경고 없이 변경될 수 있습니다. Blockly의 공개 API의 일부로 간주됩니다.

Blockly의 일부 함수는 공개 상태 주석이 없습니다. 해당 모듈에서 내보내지 못합니다 이러한 함수는 기본적으로 로컬 변수입니다. 정의하는 모듈 외부에서 사용할 수 없습니다. 인코더-디코더는 개인 부동산에 해당합니다.

내부

내부 함수 및 속성은 핵심 애플리케이션 내에서 사용하기 위한 용도입니다. 외부에서는 허용하지 않습니다. TsDoc에 의해 지정됩니다. @internal 주석을 추가합니다.

내부 속성은 Blockly의 공개 API의 일부로 간주됩니다.

내부 속성은 코어 내의 어디에서나 액세스할 수 있으며 하위 클래스만 처리할 수 있습니다. 허용되지 않습니다. 핵심 라이브러리 외부에서 액세스할 수 있습니다.

지원 중단됨

@deprecated로 표시된 것은 사용해서는 안 됩니다. 대부분의 지원 중단에는 다음이 포함됩니다. 원하는 코드에 대한 지침을 콘솔 경고 또는 TSDoc에서 확인하세요.

가능한 경우 지원 중단된 함수는 삭제할 대체 함수 호출에 대한 권장사항이 있어야 합니다.

FAQ

사용하려는 함수가 공개 함수가 아닌 경우 어떻게 해야 하나요?

기능 요청 제출 사용 사례에 대한 설명과 확인할 수 있습니다.

YouTube는 이 기능을 사용하여 공개 여부를 논의하거나 같은 정보를 얻을 수 있는 다른 방법이 있는지 확인하는 것이 중요합니다.

Google에서 공개하기로 결정하면 귀하 또는 Blockly팀이 다음 Blockly 버전에 적용될 것입니다.

플러그인에서 비공개 멤버를 사용하도록 선택한 경우 플러그인을 베타로 제공하고 README에 정보를 포함합니다.

monkeypatching은 어떨까요?

monkeypatching에 대해 읽어보세요.

Monkeypatching은 Blockly API의 비공개 부분을 사용하는 것입니다. 플러그인의 패치는 특히 위험할 수 있습니다. 왜냐하면 코드가 다른 애플리케이션과 제대로 상호 작용하지 않을 수 있기 때문입니다. monkeypatch를 실행하는 플러그인입니다. 따라서 Google에서는 반드시 애플리케이션 및 서드 파티 플러그인의 monkeypatching을 권장하지 않습니다. 자사 플러그인에서 허용하지 않습니다.

공개 함수를 재정의할 수 있나요?

서브클래스화 시: 예. 그렇지 않다면 원숭이 패치입니다

보호된 함수를 재정의할 수 있나요?

서브클래스화 시: 예. 그렇지 않다면 원숭이 패치입니다

내부 함수나 비공개 함수를 재정의할 수 있나요?

아니요, 몽키패칭입니다.

속성에 직접 액세스할 수 있는 때는 언제인가요? getter 또는 setter는 언제 사용해야 하나요?

getter 또는 setter를 게시하는 경우 확인할 수 있습니다. 속성이 공개 상태가 아니면 getter를 사용해야 합니다. setter를 사용합니다.

속성에 주석이 없으면 어떻게 되나요?

기본적으로 공개되어 있지만 getter/setter 쌍을 대신 사용합니다.

함수에 주석이 없으면 어떻게 해야 할까요?

기본적으로 공개 상태입니다.

그래도 확실하지 않으면 어떻게 해야 하나요?

포럼에서 질문하기 일반적으로 영업일 기준 1일 이내에 연락드리겠습니다.