1. NG-SHOW/NG-HIDE와 NG-IF의 차이점은 무엇입니까?
우리는 모두 ng-show/ng-hide 실제로 숨겨져 display 를 통해 표시된다는 것을 알고 있습니다. ng-if 실제로 dom 노드의 첨가 및 삭제를 제어하여이를 달성합니다. 따라서 다른 조건에 따라 dom 노드를로드하면 ng-if 의 성능이 ng-show 보다 낫습니다.
2. $ Rootscrope와 $ SCOPE의 차이가 무엇인지 설명하십시오.
Layman의 용어로 $rootScrope 페이지는 모두 $scope 의 아버지입니다.
$rootScope 및 $scope 생성하는 방법을 살펴 보겠습니다.
1 단계 : 각도 구문 분석 ng-app 및 메모리에 $rootScope 생성합니다.
2 단계 : Angular는 계속 구문 분석하고 {{}} 표현식을 찾고 변수로 구문 분석합니다.
3 단계 : ng-controller 사용한 DIV가 구문 분석되고 controller 기능을 가리 킵니다. 현재 controller 기능은 $scope 객체의 인스턴스가됩니다.
3. {{yourmodel}} 표현은 어떻게 작동합니까?
$interpolation 서비스에 따라 다릅니다. HTML 페이지를 초기화 한 후에는 이러한 표현식을 찾아 표시합니다. 따라서 {{}} 가 발생할 때마다 $watch 설정됩니다. $interpolation 컨텍스트 매개 변수가있는 함수를 반환합니다. 마지막으로, 함수는 실행되며 해당 범위에 대한 표현 $parse 으로 간주됩니다.
4. 각도의 다이제스트주기는 무엇입니까?
각 digest 주기에서 각도는 항상 scope 의 model 값을 비교합니다. 일반적으로 digest 사이클이 자동으로 트리거되며 수동 트리거링에 $apply 사용할 수도 있습니다.
5. $ 타임 아웃을 취소하고 $ watch ()를 중지하는 방법?
$timeout 중지 우리는 cancel 사용할 수 있습니다.
var customtimeout = $ timeout (function () {// code}, 1000); $ timeout.cancel (customtimeout);$ watch를 중지하십시오.
//. $ watch ()는 가변 var var var var deregisterwatchfn = $ rootscope에 저장하는 등록 함수를 중지하는 함수를 반환합니다. $ watch ( 'somegloballyavailableProperty', function (newVal) {if (newVal) {// 우리는 그 DereGisterWatchfn ();6. 각도 지시서에서 제한을 어떻게 설정할 수 있습니까? @, =, 그리고 범위의 차이점은 무엇입니까?
restrict 별도로 설정할 수 있습니다.
일치 속성
E 경기 태그
C 경기 클래스
M 경기 주석
물론 AEC 와 같은 여러 값을 설정하여 여러 경기를 할 수 있습니다.
scope , @, =, & & value 바인딩을 수행 할 때 각각 표현됩니다.
@ {{yourModel}} 사용하여 자체적으로 설정하거나 바인딩 할 수있는 세트 문자열을 가져옵니다.
= 양방향 결합, scope 의 일부 특성 결합;
& 부모 scope 에서 일부 표현식을 실행하는 데 사용됩니다. 우리는 실행 해야하는 일부 기능을 설정했습니다.
Angular.Module ( 'DocSisolationExample', []) .controller ( '컨트롤러', [ '$ scope', function ($ scope) {$ scope.alertname = function () {alert ( 'direct scope &');}}])). 지시 ( 'myCustomer', function () {click {e ', }, 템플릿 : '<button ng-click = "testClick ()"> 클릭 </button>', controller : function ($ scope) {$ scope.testClick = function () {$ scope.clickHandle (}}};<div ng-app = "docsisolationexample"> <div ng-controller = "컨트롤러"> <my-customer click-honle = "alertname ()"> </my-customer> </div> </div>
<단방향 바인딩을 수행하십시오.
7. 다른 모듈 간의 의사 소통을 실현하는 세 가지 방법을 나열합니까?
1. 서비스
2. 이벤트, 바운드 이벤트를 지정합니다
3. $ Rootscope를 사용하십시오
4. 컨트롤러 사이에 $ 부모, $$ childhead 등을 직접 사용하십시오
5. 지침 데이터 바인딩 속성을 지정합니다
8. 각도 성능을 향상시킬 수있는 조치
공식적으로 추천, 닫기 debug , $compileProvider
myapp.config (function ($ compileprovider) {$ compileprovider.debuginfoenabled (false);}); 하나의 바인딩 표현식을 사용하십시오. 즉 {{::yourModel}}
감시자 수를 줄입니다
무한 스크롤 로딩에서 ng-repeat 사용하지 마십시오
성능 테스트 가제트를 사용하여 각도 성능 문제를 탐색하십시오. 우리는 간단한 console.time() 사용하거나 개발자 도구와 Batarang 사용할 수 있습니다.
Console.time ( "Timername"); // codeconsole.timeend ( "timername");
9. Angular에서 jQuery를 사용하는 것이 좋다고 생각하십니까?
이것은 열린 질문이며, 인터넷에 그러한 논쟁이 많이 있지만 일반적으로 이것이 특히 좋은 시도는 아니라고 믿어집니다. 실제로, 우리가 각도를 배우면, 우리는 0에서 각도의 아이디어를 받아들이고, 데이터 바인딩, Angular가 제공하는 API를 사용하고, 합리적으로 경로를 정리하고, 관련 지침 및 서비스를 작성하는지를 사용해야합니다. Angular는 JQuery에서 일반적으로 사용되는 API를 완전히 대체 할 수있는 많은 API와 함께 제공됩니다. Angular.element, $ http, $ timeout, ng-init 등을 사용할 수 있습니다.
우리는 관점을 바꿀 수도 있습니다. 비즈니스 요구가 필요하고 신규 이민자 (jQuery에 익숙한)에게 jQuery를 도입하면 플러그인 사용과 같은 문제를 해결하는 데 도움이 될 수 있습니다. 물론 이는 코드 조직에 영향을 미침으로써 작업 효율성을 향상시키는 것입니다. 각도에 대한 이해가 심화되면서, 재건 중에 jQuery가 점차 포기 될 때 도입 된 일부 코드. (apo는 그런 사람입니다. 당신이 조롱하지 않기를 바랍니다. 그러나 사업이 사라졌습니다)
따라서 두 프레임 워크가 함께 사용할 수 없다고 말하는 것은 확실히 잘못이라고 생각하지만, 우리는 여전히 각도 설계를 따르기 위해 최선을 다해야합니다.
10. 각도 단위 테스트를 수행하는 방법
단위 테스트에 Karam + Jasmine을 사용할 수 있습니다. NGMock을 통해 각도 앱을 소개 한 다음 스스로 테스트 케이스를 추가합니다. 간단한 테스트 코드 :
설명 ( 'calculator', function () {prevereach (module ( 'calculatorApp')); var $ 컨트롤러; vereach (inject (inject (_ $ controller _) {$ controller = _ $ controller_;}); secipt ( 'sum', function () {it ( '1 + 1 with wort 2', function ({var $ scope = {var 컨트롤); $ 컨트롤러 (excope). $ scope.y = 2;11. 요약
위는이 기사의 전체 내용입니다. 모든 사람의 연구와 일에 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 두십시오.