[quickhybrid] 구성 요소 (사용자 정의) API의 실현
4269 단어 프런트엔드hybrid-appandroidios
앞에서 API를 기획할 때 이미 구성 요소 API라는 개념을 언급한 적이 있으므로 본고는 그 원리와 실현을 소개할 것이다
어셈블리 API 개념 이해
quick.ui.xxx
quick.page.xxx
quick hybrid에서 API는 모듈에 따라 구분된다. 예를 들어
ui
10page
등은 모두 다른 모듈이고 모듈의 또 다른 명칭은
이다.왜 구성 요소라고 합니까?이렇게 이해할 수 있다. 모듈은 H5 전단의 명칭(전단에서 볼 때 서로 다른 API는 각각 다른 모듈 아래에 속하기 때문)이고 구성 요소는 원생 쪽에서 강화된 이해 개념이다. (모든 구성 요소는 프로젝트에 단독으로 존재할 수 있기 때문이다. 예를 들어 프로젝트 A에 구성 요소
pay
이 있지만 프로젝트 B는 반드시 집적되어 있지 않기 때문이다)프레임 API 및 구성 요소 API
처음으로quick hybrid의 사명은 N개 프로젝트에 서비스하는 것이다. 그러면 문제가 발생할 것이다-N개 프로젝트에서 API 방식으로 제공해야 할 수요가 매우 많을 수 있지만 부피와 유니버설성을 고려하면 모든 것이 프레임에 직접 집적하기에 적합한 것은 아니다
이때 프레임 내용과 프로젝트 내용을 구분해야 하기 때문에 프레임 API와 구성 요소 API의 개념이 생겼다. (이때 원본에서 프레임 파일은 프로젝트에 인용된 정적 패키지로 만들어져 프로젝트가 직접 수정할 수 없다고 볼 수 있다)
프레임 API
quick.native.js
, 기본 프레임의 API 포함) quick.xx .xx
을 사용하여 바로 호출할 수 있습니다(프런트엔드에서 프레임 API를 기본적으로 봉인하기 때문). config
구성 시 별도로 등록할 필요가 없음(기본값은 등록되기 때문) quick.callAPi(...)
을 사용하고 적당한 매개 변수를 전달해야 한다(프레임이 통합되지 않기 때문에 이 만금유 방법을 통해 호출해야 한다) config
구성 시 등록해야 함(새 구성 요소를 프레임 내부에 모르므로 구성 요소 별칭 등록이 필요함) 프로젝트에서 기본적으로 프레임워크 API만 패키지화할 수 있지만 프레임워크의 기능은 유한하다(가장 자주 사용하는 기능만 통합된다). 만약에 개성화된 수요(예를 들어 지불, 음성 등)가 발생하면 프로젝트는 구성 요소 API를 확대해야 한다. 전체적인 절차는 다음과 같다.
config
, 등록할 구성 요소의 별칭 callAPi
을 통해 새로 등록된 구성 요소 API 기본 API 인터페이스
API의 기본 정의는 다음과 같습니다(pay 어셈블리의 예).
안드로이드
public class PayApi implements IBridgeImpl {
public static void payCustom(..., JSONObject param, final Callback callback) {
// ,
...
callback.apply(...);
}
}
iOS
@implementation PayApi
- (void)registerHandlers {
[self registerHandlerName:@"payCustom" handler:^(id data, WVJBResponseCallback responseCallback) {
// ,
...
responseCallback(...);
}];
}
별명과 경로의 관계 선언
주의해야 할 것은 안드로이드와 iOS의 별명은 일치해야 하며 일반적으로 키 값이 맞아도 된다는 것이다
예를 들어 예시 항목을 예로 들면
app
모듈의 assets/modules.properties
pay = com.quick.quickhybrid.api.PayApi
...
같은 이치의 iOS에서도 유사하지만 오른쪽의 경로 값은 iOS의 것으로 바꿀 수 있다. 예를 들어
pay = PayApi
보시다시피 안드로이드와 iOS의 별명 이름은 같지만 경로가 일치하지 않습니다. (여러 패키지 메커니즘이 다르기 때문입니다.)
H5에서 config 등록
H5에서는 config에 확장된 구성 요소를 등록하고 별명을 입력해야 합니다. (별명은 대응하는 문서 설명이 있습니다. - 일반적인 상황에서 같은 유형의 구성 요소의 별명은 고정적입니다.)
quick.config({
jsApiList: ['pay']
});
// error
quick.error(...);
// ready
quick.ready(...);
기본 컨테이너 등록 구성 요소 API
원본 용기가 config 요청을 받은 후 구성 요소를 등록하기 시작합니다. 아래와 같습니다.
// RegisterName: ui,page,pay ( )
// RegisterNclass: ,Android iOS
// RegisterNclass: com.quick.quickhybrid.api.PayApi
JSBridge.register(RegisterName, RegisterNclass);
// RegisterNclass: PayApi
[self registerHandlersWithClassName:@"RegisterNclass" moduleName:@"RegisterName"];
H5에서 어셈블리 API 호출
등록이 완료되면 H5에서 특정 메소드를 통해 호출됩니다.
quick.callApi({
name: 'testPay',
mudule: 'pay',
//
data: {...},
success: function(result) {
quick.ui.toast(JSON.stringify(result));
},
error: function(error) {},
});
끝말
실제 상황에서 프로젝트가 충분할 때 구성 요소 API를 확대하는 것은 매우 흔히 볼 수 있는 장면이기 때문에 규범을 제정하는 것이 필요하다.
또한 일반적인 상황에서 많은 같은 기능의 구성 요소는 함께 축적되고 여러 항목을 복용할 수 있다(예를 들어 지불, 특정 업무 구성 요소 등)
루트 디렉토리로 돌아가기
github
에서 이 틀의 실현quickhybrid/quickhybrid
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ionic 상용 플러그인 tipsionic 플러그인 설치 방법: ionic plugin add pluginName 플러그인은 각종 원본 코드로 작성된 것이기 때문에ionic 개발자들은 틈이 나면 원생을 많이 볼 수 있고 구덩이에 부딪히면 스스로 고...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.