NG-IF와 NG-SHOW/HIED의 차이점은 무엇입니까?
첫 번째 차이점은 NG-IF가 DOM 노드 후 표현식이 True 일 때만 생성되며, NG-SHOW는 처음에 생성되고 디스플레이 : 블록 및 디스플레이 : 디스플레이가 디스플레이를 제어하는 데 사용됩니다.
두 번째 차이점은 NG-IF가 (암시 적으로) 새로운 범위를 생성한다는 것입니다. NG 스위치, ng-include 등은 인터페이스를 동적으로 생성하는 것도 마찬가지입니다.
이로 인해 NG- 모델이 NG-IF의 기본 변수와 결합 되고이 모델을 외부 디스플레이의 다른 디스플레이 영역에 바인딩합니다. 내부 층이 변경되면 이미 두 개의 변수가 있기 때문에 외부 층이 동기식으로 변경되지 않습니다.
<p> {{name}} </p> <div ng-if = "true"> <input type = "text"ng-model = "name"> </div>NG-SHOW는 자체 1 단계 범위를 갖지 않기 때문에이 문제가 없습니다.
이러한 종류의 문제를 피하는 방법은 기본 변수 (x)에 직접 바인딩하는 대신 페이지의 요소를 객체의 속성 (data.x)에 항상 바인딩하는 것입니다.
자세한 내용은 AngularJS의 범위를 참조하십시오
NG-Repeat가 배열을 반복 할 때 배열에 동일한 값이있는 경우 어떤 문제가 있고 어떻게 해결 하는가?
리피터의 복제는 허용되지 않습니다. $ index로 트랙을 추가하면 해결할 수 있습니다. 물론 배열에서 각 항목을 고유하게 식별 할 수있는 한 일반적인 값으로 추적 할 수도 있습니다 (DOM과 데이터 간의 연관성 생성).
ng-click로 작성된 표현식이 JS 네이티브 객체의 메소드를 사용할 수 있습니까?
NG 클릭의 표현식뿐만 아니라 페이지에 해당하는 컨트롤러의 $ 범위에 존재하지 않기 때문에 페이지에있는 한 직접 기본 JS 메소드 만 호출 할 수 없습니다.
밤나무를 가져 가십시오 :
<p> {{parseint (55.66)}} <p>
당신은 아무것도 표시되지 않는다는 것을 알게 될 것입니다.
그러나이 함수를 $ 범위로 추가하면 :
$ scope.parseint = function (x) {return parseint (x);}물론 이와 같은 문제는 없습니다.
이러한 종류의 요구 사항에 따라 필터를 사용하는 것이 좋습니다.
<p> {{13.14 | parseintfilter}} </p> app.filter ( 'parseintfilter', function () {return function (item) {return parseint (item);}}){{now | 'yyyy-mm-dd'}}이 표현식에서 어떻게 세로 선과 후속 매개 변수를 사용자 정의 할 수 있습니까?
필터, 데이터 형식 데이터, 입력을 수신하고 특정 규칙에 따라 처리하고 처리 결과를 반환합니다.
내장 필터
내장 필터에는 9 가지 유형이 있습니다.
날짜 (날짜)
통화
Limitto (Limits Array 또는 String Length)
Orderby (정렬)
소문자 (소문자)
대문자 (캡)
숫자 (숫자를 형식화하고, 분리기를 추가하고, 소수점 이하 자리 수를 제한하는 매개 변수를받습니다)
필터 (배열 처리 및 기판을 포함하는 요소를 필터링)
JSON (JSON 개체 포맷)
필터를 사용하는 두 가지 방법이 있습니다. 하나는 페이지에 직접 사용됩니다.
<p> {{지금 | 날짜 : 'yyyy-mm-dd'}} </p>
다른 하나는 JS에서 사용하는 것입니다.
// $ 필터 ( '필터 이름') (필터링 해야하는 개체, 매개 변수 1, 매개 변수 2, ...)
$ 필터 ( '날짜') (지금, 'yyyy-mm-dd hh : mm : ss');
사용자 정의 필터
// form app.filter ( '필터 이름', function () {return function (필터링 해야하는 객체, 필터 매개 변수 1, 필터 매개 변수 2, ...) {// ... 처리 후 객체를 반환하기 위해 무언가를하십시오;}}); // Chestnut app.filter ( 'timesfilter', function () {return function (item, times) {var result = ''; for (var i = 0; i <times; i ++) {result+= item;} return result;}})공장, 서비스 및 공급자의 관계는 무엇입니까?
공장
서비스 방법과 데이터를 객체에 넣고이 개체를 반환하십시오.
app.factory ( 'fooservice', function () {return {target : 'factory', sayhello : function () {return 'hello' + this.target;}}});서비스
생성자 메소드를 통해 서비스를 작성하고 인스턴스화 된 개체를 반환합니다.
app.service ( 'fooservice', function () {var self = this; this.target = 'service'; this.sayhello = function () {return 'hello' + self.target;}});공급자
구성을 통해 구성 할 수있는 서비스를 만듭니다. $ get에 반환 된 것은 Factory를 사용하여 서비스 컨텐츠를 작성하는 것입니다.
app.provider ( 'fooservice', function () {this.configdata = 'init data'; this.setconfigdata = function (data) {if (data) {that) {this.configdata = data;}} this. $ get = function () {var self = this; return {provider ', sayhello : return self.config -data'helly ' this.target;}}}}); // 여기에 주입되는 것은 fooservice providerapp.config (function (fooserviceProvider) {fooserviceProvider.setConfigData ( 'config data');});기본 구현 관점에서 서비스는 공장을 호출하고 인스턴스를 반환합니다. 공장은 제공자에게 전화를 걸어 $ get에 정의 된 컨텐츠를 반환합니다. 공장 및 서비스 기능은 공장이 모든 것을 반환 할 수있는 일반적인 기능이라는 점을 제외하고는 유사합니다 (반품에 액세스 할 수 있으므로 개인 변수를 작성하는 방법). 서비스는 생성자이며, 반환 할 수없는 생성자입니다 (이에 대한 바인딩 액세스 할 수 있음). 제공자는 강화 된 공장으로 구성 가능한 공장을 반환합니다.
AngularJS Factory vs Service vs 제공자를 참조하십시오
Angular의 데이터 결합에 어떤 메커니즘이 사용됩니까? 원리에 대한 자세한 설명
더러운 검사 메커니즘.
양방향 데이터 바인딩은 AngularJS의 핵심 메커니즘 중 하나입니다. 보기에 데이터가 변경되면 모델로 업데이트됩니다. 모델에 데이터가 변경되면보기도 동시에 업데이트됩니다. 분명히 이것은 모니터링이 필요합니다.
원리는 각도가 스코프 모델에서 청취 대기열을 설정하여 데이터 변경 및 업데이트보기를 청취하는 큐를 설정한다는 것입니다. 객체가보기에 바인딩 될 때마다 AngularJS는 $ watch 큐에 $ 시계를 삽입하여 모니터링 모델에 변경 사항이 있는지 여부를 감지합니다. 브라우저가 각도 컨텍스트로 처리 할 수있는 이벤트를 수신하면 $ 다이제스트 루프가 트리거되어 모든 $ 시계를 가로 지르고 마침내 DOM을 업데이트합니다.
밤나무를 줘
<버튼 ng-click = "val = val+1"> 증가 1 </button>
클릭하면 업데이트 작업이 생성됩니다 (최소 2 개의 $ 다이제스트 루프가 트리거됩니다)
버튼을 누릅니다
브라우저는 이벤트를 수신하고 각도 컨텍스트에 들어갑니다.
$ Digest 루프가 실행되기 시작하여 각 $ 시계가 변경되는지 여부를 쿼리합니다.
$ watch 모니터링 $ SCOPE .VAL은 변경 사항을보고 한 이후 $ Digest 루프가 시행됩니다.
새로운 $ 다이제스트 루프에서는 변경 사항이 감지되지 않았습니다
브라우저는 컨트롤러를 되돌리고 $ scope.val의 새 값에 해당하는 DOM을 업데이트합니다.
$ 다이제스트 루프의 상한은 10 배입니다 (무한 루프를 방지하기 위해 10 번 이상 예외가 발생합니다).
AngularJS의 데이터 바인딩을 참조하십시오
두 개의 수평 인터페이스 블록 A와 b. 이벤트가 A로 트리거되면 B를 알 수있는 방법은 무엇입니까? 원리에 대한 자세한 설명
다시 말해,이 문제는 수평 인터페이스 모듈간에 통신하는 방법입니다. 하나는 서비스를 공유하고 다른 하나는 이벤트를 기반으로하는 방법이 있습니다.
공유 서비스
각도에서, 싱글 톤 객체는 공장을 통해 생성 될 수 있으며,이 객체는 통신이 필요한 모듈 A와 B에 주입 될 수 있습니다.
이벤트를 기반으로합니다
이 작업을 수행하는 두 가지 방법이 있습니다
첫 번째는 상위 컨트롤러를 사용하는 것입니다. 어린이 컨트롤러에서는 이벤트 ($ Emit)를 부모 컨트롤러로 트리거 한 다음 부모 컨트롤러에서 ($ on) 이벤트를 듣고 하위 컨트롤러로 방송 ($ Broadcast)을 방송하십시오. 이러한 방식으로, 이벤트에 의해 운반되는 매개 변수를 통해, 데이터는 상위 컨트롤러와 동일한 레벨 컨트롤러를 통해 전파됩니다.
두 번째 유형은 $ Rootscope를 사용하는 것입니다. 각 각도 응용 프로그램에는 기본적으로 루트 범위 $ RootScope가 있습니다. 루트 범위는 최상위 레벨에 있으며 모든 레벨에 스코프가 있습니다. 따라서 서브 컨트롤러가 $ Rootscope를 직접 사용하여 이벤트를 방송하고받는 경우 동료 간의 커뮤니케이션을 달성 할 수 있습니다.
AngularJS의 컨트롤러 간의 통신을 참조하십시오
각도 적용은 어떻게 잘 겹쳐져야합니까?
디렉토리 구조를 분할
소규모 프로젝트의 경우 다음과 같은 파일 유형별로 구성 할 수 있습니다.
CSSJS 컨트롤러 모델 서비스 필터
그러나 대규모 프로젝트의 경우 다음과 같은 비즈니스 모듈에 따라 나누는 것이 가장 좋습니다.
CSSModules 계정 컨트롤러 모델 서비스 필터 템플릿 디스크 컨트롤러 모델 서비스 필터 템플릿
모듈 아래에 공개 디렉토리가 공개 물건을 저장하는 것이 가장 좋습니다.
논리 코드 분할
MVVM 프레임 워크로서 각도 응용 프로그램은 모델, 뷰 모델 (컨트롤러) 및 뷰에 따라 나누어야합니다.
여기서 논리 코드의 분할은 주로 컨트롤러 계층을 가능한 한 매우 얇게 만드는 것을 의미합니다. 공유 로직을 서비스에 추출합니다 (예 : 배경 데이터 요청, 데이터 공유 및 캐시, 이벤트 기반 모듈 통신 통신 등), 공유 인터페이스 작업을 지시어로 추출하여 (예 : 날짜 선택, 페이징 등), 공유 형식 작업을 필터 등으로 추출합니다. 등을 추출합니다.
복잡한 응용 분야에서, 해당 생성자는 하드 디스크 (디스크) 모듈과 같은 엔티티에 대해서도 목록, 새 생성 및 세부 사항 및 해당 컨트롤러와 같은 여러 뷰를 가질 수 있습니다. 그런 다음 데이터 첨가, 삭제, 수정 및 검증 작업을 완료하기 위해 디스크 생성자를 구축 할 수 있습니다. 디스크 관련 컨트롤러가있는 경우 디스크 생성자가 디스크 생성자에 주입되고 인스턴스가 생성됩니다. 이 인스턴스에는 추가, 삭제, 수정 및 검증 방법이 있습니다. 이것은 명확한 층뿐만 아니라 재사용 (컨트롤러 층을 얇게 만듭니다)을 실현합니다.
Suning Cloud Center에서 Angularjs의 심층적 인 연습을 참조하십시오.
각도 응용 분야에 일반적으로 사용되는 라우팅 라이브러리와 그 차이점은 무엇입니까?
ngroute 및 ui.router는 일반적으로 Angular1.x에서 사용되며 Angular2 용으로 설계된 새로운 라우터 (구성 요소 지향)도 있습니다. 뒤에있는 것은 실제 프로젝트에서 사용되지 않았으므로 그것에 대해 이야기하지 않을 것입니다.
프레임 워크의 추가 기능으로서 ngroute 또는 ui.router이든 모듈 종속성 형태로 도입되어야합니다.
차이
Ngroute 모듈은 각도 라우팅 모듈이며 UI.Router 모듈은 Ngroute 모듈을 기반으로 개발 된 타사 모듈입니다.
UI.Router는 상태 (상태)를 기반으로하며 Ngroute는 URL을 기반으로하며 UI.Router 모듈은 주로 뷰의 중첩 측면에 반영된 더 강력한 기능을 가지고 있습니다.
UI.router를 사용하여 명확한 부모-자식 관계가있는 경로를 정의하고 UI-View 지시문을 통해 부모 라우팅 템플릿의 <div ui-view> </div>에 어린이 라우팅 템플릿을 삽입하여보기 중첩을 실현합니다. 이것은 ngroute에서 정의 할 수 없습니다. <div ng-view> </div>가 동시에 부모-자식보기에서 사용되면 죽은 루프로 떨어집니다.
예
ngroute
var app = angular.module ( 'ngrouteApp', [ 'ngroute']); app.config (function ($ lourteprovider) {$ lourtepRovider .when ( '/main', {templateUrl : "main.html", 컨트롤러 : 'mainctrl'}).UI. 루터
var app = angular.module ( "uirouteapp", [ "ui.router"]); app.config (function ($ urlrouterprovider, $ stateprovider) {$ urlrouterprovider.otherwise ( "/index"); $ stateprovider .state ( "main", url : "/main" 'mainctrl'})Angular Directive를 통해 완전 구성 요소 시스템을 계획하는 경우 어떤 문제에 직면 할 수 있습니까?
나는 직접 지시를 통해 완전한 구성 요소 세트를 만든 적이 없으므로 설명 할 수 없습니다.
생각할 수있는 한 가지는 구성 요소가 외부 세계와 상호 작용하는 방법과 간단한 구성을 통해 어떻게 사용할 수 있는지입니다.
다른 팀이 개발 한 각도 응용 프로그램. 그것들을 통합하려면 어떤 문제가 발생하고 어떻게 해결해야합니까?
다른 모듈 간의 충돌이 발생할 수 있습니다.
예를 들어, 한 팀의 모든 개발은 모듈레아에서 수행되는 반면 다른 팀이 개발 한 코드는 ModuleB에 따라 수행됩니다.
Angular.Module ( 'myApp.Modulea', []) .Factory ( 'servicea', function () {...}) Angular.Module ( 'myApp.ModuleB', []) .Factory ( 'servicea', function () {...}) angular.module ( 'myapp', [ 'myapp.modulea')이로 인해 두 개의 모듈에서 Servicea가 덮어 쓰여질 것입니다.
Angular1.x에는 좋은 해결책이 없으므로 초기 단계에서 통합 계획을 세우고 계약을 체결하며 계약에 따라 엄격하게 개발하는 것이 가장 좋습니다. 각 개발자는 특정 블록 코드 만 작성합니다.
Angular의 단점은 무엇입니까?
강한 제약
이것은 학습 비용이 높고 프론트 엔드에 비우호적입니다.
그러나 AngularJS 규칙을 따를 때 생산성이 높고 Java 프로그래머 친화적이 될 것입니다.
SEO에게 도움이되지 않습니다
모든 콘텐츠가 동적으로 획득되고 렌더링되므로 검색 엔진은 크롤링 할 수 없습니다.
한 가지 솔루션은 정상적인 사용자 액세스의 경우 서버가 AngularJS 응용 프로그램의 내용에 응답한다는 것입니다. 검색 엔진 액세스의 경우 SEO에 대해 특별히 HTML 페이지에 응답합니다.
성능 문제
MVVM 프레임 워크로서 데이터의 양방향 바인딩이 구현되므로 큰 배열 및 복잡한 객체에 대한 성능 문제가 있습니다.
각도 응용 분야의 성능을 최적화하는 데 사용할 수있는 방법 :
모니터링 항목 감소 (예 : 변경되지 않는 데이터에 대한 일원 바인딩 등)
인덱스를 적극적으로 설정합니다 (트랙 지정, 간단한 유형은 기본적으로 인덱스로 자체를 사용하고 객체는 기본적으로 $$ Hashkey를 사용합니다.
렌더링 된 데이터의 양 (예 : 페이징 또는 매번 데이터의 작은 부분을 가져와 필요에 따라 검색)을 줄입니다.
데이터 플랫 텐팅 (예 : 트리 구조의 경우 평평한 구조를 사용하여 맵과 트리 데이터를 작성하십시오. 트리에서 작동 할 때는 평평한 데이터와 동일한 참조가 원래 플랫 데이터와 동기화됩니다).
또한 Angular1.x의 경우 더러운 검사 및 모듈 메커니즘에 문제가 있습니다.
이동하는
이온은 시도 될 수 있지만 완벽하지는 않습니다.
2015 년 1 월 Angular에 대한 Peter-Paul Koch의 견해를 보는 방법은 무엇입니까?
컨트롤러를 Angular 1.2에서 소개 된 구문으로 어떻게 보십니까?
가장 근본적인 이점
Angular 1.2 이전에,보기의 모든 바인딩은 $ 스코프에 직접 바인딩되었습니다.
함수 myctrl ($ scope) {$ scope.a = 'aaa'; $ scope.foo = function () {...}}ControlLeras를 사용하여 $ 범위를 다시 주입 할 필요가 없어 컨트롤러는보다 순수한 뷰 모델 인 POJO (Pojo)가됩니다.
function myctrl () {// vm을 사용하여 vm을 사용하여 내부 함수를 피하기 위해이 vm = this; vm.a = 'aaa';}원칙
소스 코드 구현 관점에서 Controlleras Syntax는 컨트롤러 개체의 AS 별칭과 함께 $ 범위에 속성을 만듭니다.
if (directive.controlleras) {locals. $ scope [directive.controlleras] = ControllerInstance;}그러나 컨트롤러를 위에서 언급 한 컨트롤러를 더 많이 사용하는 것 외에도 AngularJS 범위 (즉, NG-IF가 첫 번째 수준의 범위를 생성하는 구덩이, 실제로 Javascript 프로토 타입 체인의 중간 유형의 중간 유형의 구덩이 인 구덩이를 생성하는 구덩이를 피할 수 있습니다. 존재).
<div ng-controller = "testctrl as vm"> <p> {{name}} </p> <div ng-if = "vm.name"> <input type = "text"ng-model = "vm.name"> </div> </div> </div>질문
컨트롤 레라와 직면 할 문제 중 하나는 $ 스코프가 주입되지 않기 때문에 $ emit, $ broadcast, $ on, $ watch 등의 방법을 사용할 수 없다는 것입니다. 이 이벤트 관련 작업은 캡슐화 및 균일하게 처리 될 수 있거나 $ 스코프가 특수 처리를 위해 단일 컨트롤러에 도입 될 수 있습니다.
구문 대 범위로서 각도 컨트롤러를 참조하십시오
Angular의 "종속성 주입"의 세부 사항
밤나무
의존성 주입은 코드 간의 종속성을 처리하고 구성 요소 간의 커플 링을 줄이는 소프트웨어 설계 패턴입니다.
예를 들어, AngularJS를 사용하지 않는 경우 백그라운드에서 데이터를 쿼리하고 프론트 엔드에 표시하려면이 작업을 수행해야 할 수도 있습니다.
var animalbox = document.querySelector ( '. 동물-박스'); var httpRequest = {get : function (url, 콜백) {console.log (url + 'requested'); var 동물 = [ '고양이', '개', '토끼']; 콜백 (동물); }} var render = function (el, http) {http.get ( '/api/animals', function (동물) {el.innerhtml = 동물;})} render (httprequest, Animalbox);그러나 다음과 같이 렌더가 호출 될 때 매개 변수가 전달되지 않으면 EL 및 HTTP를 찾을 수 없기 때문에 오류가보고됩니다 (종속성이 정의되고 실행 중에는 종속성이 자동으로 찾을 수 없습니다).
세우다();
// TypeError : 정의되지 않은 속성 'get'을 읽을 수 없습니다
AngularJS를 사용하면 직접 수행 할 수 있습니다
function myctrl = ($ scope, $ http) {$ http.get ( '/api/animals'). success (function (data) {$ scope.animals = data})}다시 말해, Angular App이 실행될 때 MyCtrl이 호출되고 두 가지 종속성, $ SCOPE 및 $ HTTP가 자동으로 주입됩니다.
원칙
AngularJs는 생성자의 매개 변수 이름을 통해 종속성 서비스 이름을 주입하고 toString ()을 사용 하여이 정의 된 함수에 해당하는 해당 문자열을 찾은 다음 규칙적으로 매개 변수 (종속성)를 구문 분석 한 다음 종속성 맵에서 해당 종속성을 가져 와서 전달합니다.
그것을 단순화하려면 아마도 다음과 같습니다.
var inject = {// 스토리지 종속성 매핑 관계 저장소 : {}, // 종속성 레지스터 등록 : 함수 (이름, 자원) {this.storage [name] = resource; }, // 종속성을 구문 분석하고 호출 Resolve : function (target) {var self = this; var fn_args =/^function/s*[^/(]*/(/s*([^/)]*)/)/m; var strip_comments = /(////.*$)| (/////s/s개 ?/*//)/mg; fntext = target.toString (). 교체 (strip_comments, ''); argdecl = fntext.match (fn_args) [1] .split (/,?/g); var args = []; argdecl.foreach (function (arg) {if (self.storage [arg]) {args.push (self.storage [arg]);}}) return function () {target.apply ({}, args); }}}이 인젝터를 사용하여 AngularJS를 사용하지 않은 이전 밤은 수정 후 호출 할 수 있습니다.
inject.register ( 'el', 동물 박스); inject.register ( 'ajax', httprequest); reender = inject.resolve (render); reender ();
질문
AngularJS 인젝터는 함수의 매개 변수 이름이 종속성의 이름이라고 가정하고 종속성을 검색하기 때문에, 코드가 압축 된 후 (매개 변수의 이름이 바뀌 었음) 종속성이 주입되면 종속성을 찾을 수 없습니다.
// 함수 myctrl = ($ scope, $ http) {...} // function myctrl = (a, b) {...}따라서 다음 두 가지 방법은 일반적으로 종속성을 주입하는 데 사용됩니다 (종속성이 추가되는 순서에 대한 요구 사항이 있습니다).
배열 주석 방법
myapp.controller ( 'myctrl', [ '$ scope', '$ http', function ($ scope, $ http) {...}])))))명시 적 $ 주입
myapp.controller ( 'myctrl', myctrl); function myctrl = ($ scope, $ http) {...} myctrl. $ inject = [ '$ scope', '$ http'];다시 채우다
DI 컨테이너의 경우 종속성 등록, 종속성 선언 및 개체 획득의 세 가지 요소가 포함되어야합니다.
AngularJS에서는 모듈과 $ 제공이 모두 종속성 등록을 제공 할 수 있습니다. 내장 인젝터는 객체를 얻을 수 있습니다 (자동으로 의존성 주입). 의존성 선언은 이전 질문에서 언급 된 바와 같이입니다.
여기에 밤나무가 있습니다
// 모듈의 경우 하나 이상의 매개 변수가 전달됩니다. 즉, 새로운 모듈이 생성되고 빈 배열은 다른 모듈에 대한 의존성이 없음을 의미합니다. // 모듈을 얻는 모듈을 획득하는 것을 의미합니다. // myApp를 정의하고, myApp.services를 종속성 각도로 추가합니다 ( 'myApp', [ 'myApp.services'); Angular.Module ( 'MyApp.Services', []) // $ 제공 업체는 공장, 서비스, 제공자, 가치, 상수 // httpserviceAngular.Module ( 'MyApp.Services')을 정의합니다.
참조하십시오
[AngularJS] 직접 간단한 의존성 주입을 구현합니다
각도, 즉 종속성 주입의 모듈과 인젝터를 이해합니다
AngularJS의 종속성 주입 실용 응용 시나리오
Angular2를 보는 방법
Angular1.x와 비교할 때 Angular2는 큰 변화를 가져 왔으며 거의 새로운 프레임 워크입니다.
TypeScript (TypeScript를 사용하여 개발할 수 있음)를 기반으로하는 대규모 프로젝트 팀이 협력 할 때 강력한 언어 유형이 더 유리합니다.
구성 요소화는 개발 및 유지 보수의 효율성을 향상시킵니다.
동적 하중, 새로운 라우터, 약속에 대한 기본 지원 등을 지원하는 모듈도 있습니다.
미래의 표준을 충족시키고 기대할 가치가있는 다른 프레임 워크의 장점을 흡수하지만 더 많은 것을 배울 것들도 있습니다 (ES Next, TS, RX 등).
위의 것은 AngularJS 인터뷰 질문에 대한 정보를 편집 한 것입니다. 우리는 향후 관련 정보를 계속 추가 할 것입니다. 이 웹 사이트를 지원 해주셔서 감사합니다!