Heim  >  Artikel  >  Web-Frontend  >  Angular 5-Neulinge müssen es wissen

Angular 5-Neulinge müssen es wissen

php中世界最好的语言
php中世界最好的语言Original
2018-04-16 10:42:041405Durchsuche

Dieses Mal bringe ich Ihnen, was Angular 5-Neulinge wissen müssen. Welche Vorsichtsmaßnahmen sind für Angular 5-Neulinge zu beachten? Hier sind praktische Fälle, werfen wir einen Blick darauf.

Obwohl es Angular5 heißt, ist es eigentlich nur die vierte Version dieses Frontend-Frameworks, das 2012 geboren wurde:

Angular-Geschichte

Es scheint, dass in fast einem halben Jahr eine neue Version veröffentlicht wird, aber tatsächlich haben sich die Entwicklungsschnittstelle und die Kernideen ab der neu geschriebenen Version 2 stabilisiert und bleiben im Wesentlichen mit der vorherigen Version kompatibel.

In dieser neuen Version von 5 konzentriert sich das Angular-Team auf Verbesserungen auf die folgenden Funktionen:

  1. Einfachere Erstellung progressiver Web-Apps – Progressive Web-App

  2. Verwenden Sie den Build-Optimierer, um nutzlosen Code für kleinere Apps und schnellere Netzwerkladezeiten zu entfernen

  3. Machen Sie sie materialisiert Designkomponenten, die mit serverseitigem Rendering kompatibel sind

PWA ist ein von Google vorgeschlagener Standard, der darauf abzielt, Webanwendungen ein Benutzererlebnis zu bieten, das mit nativen Anwendungen auf mobilen Endgeräten vergleichbar ist. Eine PWA-Anwendung nutzt hauptsächlich Service Worker und Browser-Cache, um das interaktive Erlebnis zu verbessern. Sie kann nicht nur direkt auf dem mobilen Desktop bereitgestellt, sondern auch offline verwendet werden:

2. Einführung in die Winkelumgebung

Angular empfiehlt die Verwendung von TypeScript zum Entwickeln von Anwendungen. Dies erfordert die Verwendung eines Online-Compilers (JIT), um den Code in Echtzeit zu kompilieren, oder die Verwendung eines Pre-Compilers (AOT), um den Code vorab während der Entwicklung zu kompilieren.

Um zu vermeiden, dass dieser umständliche Prozess das Denken über das Wesentliche des Angular-Frameworks beeinträchtigt, haben wir diese Notwendigkeiten so konfiguriert und verpackt, dass sie sich an Online-Schreiben und -Experimente anpassen. Jetzt müssen Sie nur noch einen Bibliotheks-A5-Loader einführen.

Möglicherweise stellen Sie fest, dass das Angular-Framework nicht blau ist. Tatsächlich haben wir es nicht in einen a5-Loader gepackt, sondern es vom Modullader (SystemJS) automatisch laden lassen entsprechend den Anforderungen der Anwendung. Der Zweck besteht darin, den Anwendungscode mit der in nachfolgenden Kursen verwendeten Backend-Konstruktion-Methode in Einklang zu bringen.

Wenn Sie an dieser Bibliothek interessiert sind, können Sie das http://github.com/hubwiz/a5-loader-Repository auf Github besuchen.

3. Winkelkomponenten erstellen

Angular ist ein

komponentenorientiertes Front-End-Entwicklungsframework. Wenn Sie sich mit der Entwicklung grafischer C/S-Anwendungen beschäftigt haben, sollten Sie die Bedeutung des Wortes Komponente kennen. Grundsätzlich stellen Komponenten einige Programmeinheiten mit einer grafischen Oberfläche und inhärenten logischen Fähigkeiten dar. Die folgende Abbildung listet drei Komponenten auf, die zur Implementierung der Ping-Pong-Umschaltung verwendet werden: Bauteilprobe

Komponenten bieten eine gute Wiederverwendbarkeit. Basierend auf einer Reihe von Komponenten können wir mit einfachem Glue-Code recht komplexe interaktive Funktionen implementieren.

Jetzt erstellen wir die Angular-Komponente. Der Code ist ganz einfach:

Im Angular-Framework verweist eine Komponente auf eine Klasse mit angewendetem Komponentendekorator. Die Funktion des Komponentendekorators besteht darin, Metadateninformationen an die dekorierte Klasse anzuhängen:
@Component({ selector: "ez-app", template: `<h1>Hello,angular5</h1>`})class EzComp{}

Anmerkungen

Wenn das Angular-Framework die Anwendung kompiliert und bootet, verwendet es diese Metadaten zum Erstellen von Ansichten. Zwei der Metadaten sind sehr wichtig

Selektor: der CSS-Selektor des Komponentenhostelements, der den Rendering-Ankerpunkt der Komponente im DOM-Baum deklariert

Vorlage: die Vorlage der Komponente, die das Framework verwenden wird diese Vorlage als Blueprint Build View

4. Angular-Modul erstellen Der Kern des Angular-Frameworks ist die Komponentisierung, und sein Designziel besteht darin, sich an die Entwicklung großer Anwendungen anzupassen. Daher wird in der Anwendungsentwicklung das Konzept des Moduls (NgModule) eingeführt, um verschiedene Komponenten (und Dienste) zu organisieren. Eine Angular-Anwendung muss mindestens ein Modul erstellen.

Um es vom Modulkonzept der

JavaScript

-Sprache selbst zu unterscheiden, wird in diesem Kurs das NG-Modul zur Darstellung eines Angular-Moduls verwendet. Ähnlich wie eine Komponente ist ein NG-Modul eine Klasse, auf die der NgModule-Dekorator angewendet wird. Der folgende Code erstellt beispielsweise ein NG-Modul EzModule:

In ähnlicher Weise wird der NgModule-Dekorator verwendet, um der dekorierten Klasse Modulmetadaten hinzuzufügen. Sie können das Anmerkungsattribut der dekorierten Klasse anzeigen, um das Ergebnis zu beobachten:
@NgModule({
 imports: [ BrowserModule ],
 declarations: [ EzComp ],
 bootstrap: [ EzComp ]
})
class EzModule{}

ngmodule annotations

NgModule装饰器声明了一些关键的元数据,来通知框架需要载入哪些NG模块、编译哪些组件以及启动引导哪些组件:

imports: 需要引入的外部NG模块

declarations:本模块创建的组件,加入到这个元数据中的组件才会被编译

bootstrap:声明启动引导哪个组件,必须是编译过的组件

需要强调的是,bootstrap元数据声明的组件必须是编译过的组件:它要么属于使用imports元数据引入的外部NG模块,要么是已经在declarations元数据中声明的本地组件。

NG模块BrowserModule定义于包@angular/platform-browser,它是Angular跨平台战略的重要组成部分。BrowserModule封装了浏览器平台下的核心功能实现,与之对应的其他平台实现还有:

  1. ServerModule:服务端实现

  2. WorkerAppModule:WebWorker实现

通常情况下开发Web应用时,我们都需要引入BrowserModule这一NG模块。

五、启动Angular应用

前面课程中,我们已经创建了一个组件和一个NG模块,不过似乎只是定义了一堆的元数据,几乎没有写太多有价值的代码。
但这就是Angular框架的一个特点:声明式开发。这些元数据是用来向框架声明如何引导启动应用程序的重要信息。

启动代码很简单,引入platformBrowserDynamic()工厂函数、创建平台实例、启动指定模块:

import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"
const pref = platformBrowserDynamic()
pref.bootstrapModule(EzModule)

√ 平台对象:PlatformRef

platformBrowserDynamic()函数返回一个PlatformRef对象(Angular对平台的抽象),这个函数最重要的作用,在于其内部创建了一个即时(Just In Time)编译器,可以在线实时编译NG模块和组件,这也是它被称为动态(Dynamic)的原因:dynamic bootstrap

平台对象的bootstrapModule()方法用来启动指定的NG模块,启动的绝大部分工作,在于利用JIT编译器编译NG模块和组件,当这些编译工作都完成后,则根据启动模块的bootstrap元信息,渲染指定的组件。

六、为什么这么复杂?

可能你已经感觉有点复杂了:只是为了写一个Hello,World,就要写这么多代码。

事实上这些复杂性是随着Angular的发展逐步引入的,从好的一方面说,是提供给开发者的可选项逐渐增多了,适用场景变多了。

比如,在Angular2正式版之前,都没有NG模块的概念,你只要写一个组件就可以直接启动应用了。Angular团队的预期应用场景是大规模前端应用开发,因此显式的NG模块声明要求也是容易理解的。不过即使是小型的应用,由于可以只使用一个NG模块,因此这一点的复杂性增加倒也不多,只是增加了学习和运用这个新概念的成本。

另一个显而易见的复杂性,在于多平台战略的引入。Angular希望让应用可以跨越浏览器、服务器等多个平台(基本)直接运行。因此免不了抽象一个中间层出来,我们需要在应用中显式地选择相应的平台实现模块:multiple platform

第三个复杂性来源于对预编译(AOT:Ahead Of Time)的支持。在早期,Angular只有即时编译(JIT:Just In Time),也就是说应用代码是在运行时编译的。即时编译的第一个问题是在应用中需要打包编译器代码,这增加了最终发布的应用代码的
大小;另一个问题在于编译需要时间,这增加了用户打开应用的等待时间。因此现在的Angular是同时支持JIT和AOT的,但启动JIT编译的应用,和启动AOT编译的应用,在目前需要显式地进行选择:aot vs. jit

对于Angular而言,编译将入口NG模块定义转换为NG模块工厂(NgModuleFactory)。对于JIT而言,这一步是隐含在bootstrapModule()中的。而对于AOT而言,生成模块工厂就结束了,应用启动时使用bootstrapModuleFactory()调用生成的模块工厂即可。

尽管AOT编译通常在构建阶段运用,我们可以在浏览器里模拟这个分两步的过程。

7. Verstehen Sie die ursprüngliche Absicht von Angular

Neben der Komplexität, die durch die leistungsstarken Funktionen des Frameworks selbst verursacht wird, liegt eine weitere Komplexitätsquelle von Angular in seiner stark gekapselten deklarativen API, die es für Entwickler schwierig macht, den Implementierungsmechanismus des Frameworks herauszufinden und Einblick in ihn zu gewinnen Sobald Probleme auftreten, sind sie schwer zu analysieren und zu beheben: Winkelfehler

Sie können Angular nicht als Blackbox verwenden.

Der Grund dafür ist einerseits, dass Angular API-Entwicklungsschnittstellen mit seiner deklarativen Vorlagensyntax als Kern bereitstellt. Die von Entwicklern geschriebenen Vorlagen durchlaufen eine recht komplexe Kompilierungsverarbeitung durch das Framework, bevor sie das endgültige Ansichtsobjekt rendern. Wenn Sie nicht versuchen zu verstehen, was im Prozess von der Vorlage bis zum Ansichtsobjekt passiert, werden Sie meiner Meinung nach immer das Gefühl haben, außer Kontrolle zu sein.

Andererseits liegt der Grund darin, dass Angular ein Framework ist, das das Anwendungs-Framework aufbaut und einige Lücken für Entwickler lässt, die es zu schließen gilt. Es ist schwierig, die Vorteile eines Frameworks voll auszuschöpfen, ohne möglichst viel über seine Funktionsweise zu wissen.

Der Ausgangspunkt für die Entwicklung von Angular ist die Verwendung von HTML zum Schreiben von Benutzeroberflächen. Denken Sie darüber nach, wie einfach es ist, eine statische Webseite zu entwickeln, und Sie werden wissen, was für eine gute Idee das ist: HTML-Herausforderung

Das Problem mit nativem HTML besteht darin, dass es erstens JavaScript benötigt, um eine angemessene Benutzerinteraktion zu erreichen, und zweitens nur eine begrenzte Anzahl von Tags zur Verfügung stehen, was es schwierig macht, die Aufgabe der Entwicklung einer Benutzeroberfläche zu übernehmen.

Da der Browser Tags wie nicht direkt interpretieren kann, hat das Angular-Team das Konzept eines Compilers eingeführt:
Bevor es an den Browser gesendet wird, übersetzt es zunächst den HTML-Code mit Erweiterungs-Tags in das von der unterstützte native Format Browser. HTML: HTML-Compiler

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:



Das obige ist der detaillierte Inhalt vonAngular 5-Neulinge müssen es wissen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn