면접 문제

2492 단어

두 개의 평급 인터페이스 블록 a와 b, 만약 a에서 하나의 사건을 촉발한다면 어떤 방식으로 b에게 알릴 수 있습니까?원리를 상술하다


이 문제는 어떻게 평급 인터페이스 모듈 간에 통신을 하는가로 바꾸는 것이다.두 가지 방법이 있는데 하나는 공용 서비스이고 하나는 이벤트 기반이다.
공용 서비스는 Angular에서factory를 통해 하나의 단일 대상을 생성할 수 있으며 통신이 필요한 모듈 a와 b에 이 대상을 주입하면 된다.이벤트에 기초해서 이거는 두 가지 방식으로 나뉘어요.
첫 번째는 아버지 controller。을 빌려 아들 controller에서 아버지 controller에게 사건을 촉발($emit)한 다음에 아버지 controller에서 ($on)사건을 감청하고 ($broadcast)을 아들 controller에게 방송한다. 이렇게 사건이 가지고 있는 파라미터를 통해 데이터가 아버지 controller을 거쳐 동급 controller사이에 전파된다.두 번째는 $rootScope입니다.각 Angular 애플리케이션에는 기본적으로 루트 도메인 $rootScope 이 있으며 루트 도메인은 최상위 수준에서 하단 영역에 걸쳐 있습니다.따라서 하위 컨트롤러가 $rootScope를 사용하여 이벤트를 방송하고 수신하면 동급 간의 통신을 실현할 수 있습니다.

하나의angular 응용은 어떻게 양호하게 층을 나누어야 합니까?


디렉터리 구조의 구분
소규모 프로젝트의 경우 다음과 같은 파일 유형으로 구성할 수 있습니다.
css
js
  controllers
  models
  services
  filters
templates  

그러나 규모가 큰 프로젝트에 대해서는 업무 모듈에 따라 나누는 것이 좋다. 예를 들어 다음과 같다.
 css
modules
  account
  controllers
  models
  services
  filters
  templates
disk
 controllers
 models
 services
 filters
 templates

modules 아래에 공통적인 물건을 저장하기 위해common 디렉터리가 있는 것이 좋습니다.
논리 코드 분할
MVVM 프레임워크로서 Angular 응용 프로그램 자체는 모델, 보기 모델(컨트롤러), 보기에 따라 구분해야 한다.
여기 논리 코드의 분리는 주로 컨트롤러라는 층을 최대한 얇게 하는 것을 가리킨다.공용의 논리를 서비스(예를 들어 백엔드 데이터의 요청, 데이터의 공유와 캐시, 이벤트 기반 모듈 간 통신 등)에 추출하고, 공용의 인터페이스를 추출하여directive에 조작한다(예를 들어 날짜 선택, 페이지 나누기 등을 구성 요소로 봉함), 공용의 격식화 조작을 필터에 추출하는 등).
복잡한 응용에서 실체에 대응하는 구조 함수를 구축할 수 있다. 예를 들어 하드디스크(Disk) 모듈은 목록, 새로 만들기, 상세 정보 등 몇 개의 보기가 있을 수 있고 각각 대응하는 controller가 있을 수 있다. 그러면 Disk 구조 함수를 만들 수 있다. 그 안에 데이터의 삭제 수정과 검증 조작을 완성할 수 있고 Disk와 관련된 controller가 있으면 Disk 구조기를 주입하고 실례를 생성할 수 있다.이 실례는 증감 개찰과 검증 방법을 갖추고 있다.이렇게 하면 차원이 명확할 뿐만 아니라 복용도 실현할 수 있다.

서로 다른 팀에 속하여 개발한angular 응용 프로그램을 통합하려면 어떤 문제에 부딪힐 수 있는지 어떻게 해결해야 합니까?


서로 다른 모듈 간의 충돌이 발생할 수 있습니다.예를 들어 한 팀의 모든 개발은 모듈A에서 진행되고 다른 팀의 개발 코드는 모듈B에서 이루어진다.
angular.module('myApp.moduleA', [])
.factory('serviceA', function(){
    ...
})

angular.module('myApp.moduleB', [])
.factory('serviceA', function(){
    ...
})    

angular.module('myApp', ['myApp.moduleA', 'myApp.moduleB'])    

두 모듈의 서비스 A가 덮어쓰일 수 있습니다.
Angular 1에 있는 것 같아요.x에서 좋은 해결 방법이 없기 때문에 초기에 통일된 계획을 하고 약속을 잘 하며 약속에 따라 엄격하게 개발하고 모든 개발자는 특정한 블록 코드만 쓰는 것이 좋다.

좋은 웹페이지 즐겨찾기