블록 정의 라이브러리를 제공하는 플러그인은 재사용 가능한 블록을 Blockly 커뮤니티와 공유하는 데 좋은 방법입니다. 블록 라이브러리를 하기 위해 Google은 이 가이드라인을 마련했습니다.
가이드라인
- 사용자가 모든 차단 기능을 쉽게 설치할 수 있도록 하고 사용자가 선택한 특정 차단 기능이나 차단 기능의 일부만 설치할 수 있도록 할 수 있습니다.
- 모든 것을 쉽게 설치할 수 있습니다. 이렇게 하려면 단일 블록 정의에 필요한 모든 부분(예: 변형자, 확장 프로그램, 믹스인, 필드 등)을 설치하는 함수를 제공하면 됩니다. 그 외에 게시자가 제공하는 모든 블록을 설치하는 함수를 설치할 수 있습니다.
- 특정 부분을 선택할 수 있게 하세요. 여러 개의 개별 블록 정의가 사용자는 자신의 고유 콘텐츠를 만들기 위해 필요한 조각만 가져와 유사 맞춤 블록을 찾아보세요.
- 플러그인에서 부작용을 사용하지 마세요.
- 블록, 필드, 확장 프로그램 및 기타 조각이 부작용을 방지할 수 있습니다 사용자는 무엇이 언제 설치되는지 계속 제어할 수 있어야 합니다. 이렇게 하면 사용자가 필요하지 않은 부분이 설치되지 않을까 걱정하지 않고 필요한 부분만 가져올 수 있습니다.
새 필드를 직접 인스턴스화하는 대신 JSON 필드 레지스트리를 사용하세요.
권장되지 않음 - 새 필드 직접 인스턴스화:
const myCustomBlock = { init: function() { this.appendDummyInput() .appendField(new Blockly.FieldNumber(123), 'NAME'); } }
권장 - JSON 필드 레지스트리:
export const myCustomBlock = { init: function() { this.appendDummyInput() .appendField(Blockly.fieldRegistry.fromJson({ name: 'field_number', value: 123, }), 'NAME'); } }
필드 레지스트리를 사용하면 사용자가 블록 정의를 변경하지 않고도 블록에 사용된 필드의 구현을 더 쉽게 대체할 수 있습니다.
사용자가 이미 설치한 항목에 관해 가정하지 마세요.
- 플러그인에 커스텀 필드나 다른 플러그인이 필요한 경우 등록하세요.
제공된
install
함수에서 직접 필드를 작성할 수 있습니다. - 곧 Blockly에서 이미 등록된 항목을 오류 없이 등록할 수 있는 도구를 제공할 예정입니다. 그때까지는 확장 프로그램, 변형자, 믹스인 또는 필드를 직접 등록하기 전에 이미 등록된 항목을 확인하는 것이 좋습니다.
- 플러그인 또는 블록 정의에 필요한 기본 요건 또는 종속 항목을 명확하게 설명합니다.
- 플러그인에 커스텀 필드나 다른 플러그인이 필요한 경우 등록하세요.
제공된
제공하는 각 블록에 생성기 함수를 제공하는 것이 좋습니다.
- 즉시 사용할 수 있는 생성기 함수를 제공하면 사용자가 차단 규칙을 이해하지 않고도 설계되어야 합니다. 자체 생성기 함수를 작성해야 한다면 각 사용자가 중복 작업을 하게 될 수 있습니다.
- JavaScript는 Blockly에서 가장 일반적으로 사용되는 언어이므로, 제공할 언어를 하나 선택하기만 하면 자바스크립트가 권장됩니다. Python 라이브러리 구현과 같은 특정 언어용으로 빌드됩니다.
- '지원 요청' 게시 고려 사용 중인 언어의 문제점 생성기 함수를 구현할 수 없고, 사용자가 후원하면 이러한 이미지가 표시됩니다.
블록에 설치 기능을 제공하면 선택적
generators
매개변수 사용자가 생성기 인스턴스를 전달하는 경우 블록 코드 생성기를 자동으로 설치하여 함수를 사용하고 예약어 추가와 같은 관련 작업을 수행합니다.// Your plugin's install function export const installMyCustomBlock(generators = {}) { Blockly.common.defineBlocks({my_custom_block: myCustomBlock}); if (generators.javascript) { generators.javascript.forBlock['my_custom_block'] = myCustomGeneratorFunction; generators.javascript.addReservedWords('specialReservedWord'); } } // How a user may install your block import {javascriptGenerator} from 'blockly/javascript'; import {installMyCustomBlock} from 'blockly-cool-blocks-plugin'; // installs the block definition and the javascript block-code generator installMyCustomBlock({javascript: javascriptGenerator});
의견
플러그인에서 이러한 가이드라인을 가장 잘 따르는 방법에 관해 궁금한 점이 있으면 포럼에 알려주세요. 여러분의 블록 라이브러리를 보고 의견을 제공할 수 있습니다.
현재 블록 정의를 제공하는 자사 플러그인 중 일부는 이러한 가이드라인을 따르지만 새로운 플러그인은 앞으로도 기존 플러그인을 있습니다.