JavaScript를 사용한 클린 아키텍처 방법(전편)
9221 단어 CleanArchitectureJavaScript
이른바 청결 구조
우선 아래의 보도를 미루다.
지속가능한 개발을 목표로 ~역례 구동(청결 구조) + 단방향 제한 처리 + FRP
제 개인적인 요점은 다음과 같습니다.
* 내부부터 Domain Model/Usecase/Interface Adapter/External Adapter
*Interface 어댑터 내외부의 단방향 파이프 변환
*외부에서 내부로의 입력은 Controller, 내부에서 외부로의 출력은Presenter, 분리되지 않은 입력과 출력은 Gateway
* 비즈니스 프로세스를 Usecase에 기재합니다.업무 절차를 명확하게 테스트할 수 있다는 것은 정말 대단하다
*Usecase에서는 Controller의 입력을 통해 DB-Gateway에서 데이터를 얻고Presenter에 출력하고 반영합니다.파이프를 다시 연결하는 인상을 주다
* 출력 파이프로서의 presenter는 다른 Usecase의 입력이 되지 않습니다.
* 출력이 분리된 경우 Usecase에서 분리됩니다.파이프는 무상태이기 때문에 완전히 단독으로 테스트할 수 있다.너무 좋아요.
실사를 통해서 이해하고 싶은 상황.
청정 구조의 오른쪽 하단도
static void Main(string[] args)
{
var outputPort = CreateOutputPort();
var interactor = CreateInputPort(outputPort);
var controller = new Controller(interactor);
controller.Execute(new[] {"source", "data", "foo", "bar"});
}
원작
클린 아키텍처
JavaScript로 실천
작업 실적 일람표
UI 이미지
당장 곤란한 일
class FilterUsecase {
changeDepartment(i, department){//まずは部門で絞込
this.cond = {department : (i < 1) ? null : department}
const 勤務実績表 = this.repository.q("勤務実績", this.cond);
this.oport["memberfilter"].update(勤務実績表, this)
}
// this.outport["memberfilter"]の実態は、Presenterとする
}
class Presenter
constructor(id){
this.node = document.getElementById(id)
}
update(table, usecase){
//勤務実績repositotyから得られたtableを変換してUIに反映する
//1. Table -> Arrayへ変換 -> domへの中間表現 vdomに変換
const arr = this.selectMember(table)
const vdom = this.toSelectBox(arr)
//2. vdomの内容を、DOMに反映
this.node.appendChild(toDom(vdom).addEventLister("change", (evt)=>{
const i = this.selectedIndex;
const member = this.options[i].text
usecase.changeMember(i, member)
}))
}
계속해서 Usecase 편.
Reference
이 문제에 관하여(JavaScript를 사용한 클린 아키텍처 방법(전편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Gatz/items/d6b0250bfab6e1e74d69텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)