AngularJS、 Angular 2、Angular 4 的區別
序言
隨著Angular
版本的頻繁推出,有必要了解下AngularJS
、 Angular 2
、Angular 4
的區別。
字面上的區別
(1)我們常說的 Angular 1
是指 AngularJS
; 從Angular 2
開始已經改名了。不再帶有JS
,只是單純的 Angular
;
(2)還有一個不可思議的版本變化: 從 Angular 2
直接跳躍到了 Angular 4
, 咋不見 Angular 3
了呢?
架構上的差別
Angular 1
是一個典型的 MVC 架構 (Model - View - Controller
), 其架構如圖所示:
相比於 Angular 1
的MVC 架構, Angular 2
是一個典型的基於元件(component
) 架構。從這一點上來說,它與 React.js
結構相似。如下圖所示:
為何匆忙推出 Angular 2
?
照理說,Angular 1. x
版本已經足夠強大,為什麼還匆匆忙忙推出 Angular 2
呢?這是迫於 mobile apps
的需要。按照慣性的思維: Angular 2
應該是 Angular 1.x
的升級版本,其實不然, Angular 2
與 Angular 1.x
完全不同, 最基本的語法都不一樣。 Angular 1.x
是 基於 JavaScript
的框架,而Angular 2
是基於 TypeScript
的框架。
所以說,當你決定要學習 Angular
時,要想好是學 Angular 1
還是 Angular 2
。 那麼到底學哪個版本好呢? 這不好講,還得看專案需要。 如果單純地學習,當然是越高的版本越好,與時俱進嘛!
Angular 3 怎麼不見了?
Angular
團隊開發 Angular 3
時,在router
模組上出現了問題, 再三糾結,決定放棄 Angular 3
,直接奔向了 Angular 4
Angular 2 有什麼好?
相比 Angular 1.x, Angular 2 的體積更小,為什麼這麼做,說白了,一個字——快; 如果僅僅用於PC 端的WEB開發, Angular 1.x足以應對; 如果是用於 mobile app
,在使用者體驗方面,略顯捉襟見肘!
Angular 4 有什麼好?
Angular 4
是 Angular 2
的升級版本, 也就是說,從 Angular 2
之後,它們的版本一脈相承,是升級版本,而不是推到重來的版本。 Angular 4
比 Angular 2
更快。
所以說, 從 Angular 1.x
到 Angular 2
,再發展到 Angular 4
, 其路線就是為了更快一些。
Angular 1寫的程式碼無法用在Angular 2上,這是為什麼?
Angular 1
程式碼是基於 JavaScript
寫的, 程式碼示例:
var angular1 = angular
.module('uiroute', ['ui.router']);
angular1.controller('CarController', function ($scope) {
$scope.CarList = ['Audi', 'BMW', 'Bugatti', 'Jaguar'];
});
Angular 2
程式碼 是基於 TypeScript
寫的。 TypeScript
與JavaScript
的區別大了去了。 TypeScript
是 JavaScript
的超集 (superset
)。 看一段 Angular 2
程式碼:
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
import { AppModule } from "./app.module";
platformBrowserDynamic().bootstrapModule(AppModule);
import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { AppComponent } from "../app/app.component";
@NgModule({
imports: [BrowserModule],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { Component } from '@angular/core'
@Component({
selector: 'app-loader',
template: `
<div>
<div>
<h4>Welcome to Angular with ASP.NET Core and Visual Studio 2017</h4>
</div></div>
`
})
export class AppComponent{}
如果不熟悉 TypeScript
語法,上面這段程式碼不知所云! 既然差異這麼大,把 Angular 1
升級到 Angular 2
難度之大,可以預見!
這麼看來, Angular 1
與 2
的差別,並不是什麼框架上的差別,而是它們的語法完全不一樣, 一個用JavaScript
,一個用 TypeScript
。 那為什麼Angular 4
是 Angular 2
的升級版呢? 答案很簡單, 因為 4和2 用的都是 TypeScript
用法!
程式碼重用方法
在 Angular 1
中,最為常用的是 $scope
在 Angular 2
和4中被去掉了。在新版本中,更多推崇的是 directive
和 controller
, 通過對 component
元件的split
(分割),從而實現程式碼的複用。
對 Mobile app 的支援
Angular 1
的設計初衷是為了實現響應式網頁、雙向資料繫結的Web應用,如果從Html5的概念來看,Angular 1
算是一個很好的支援H5的前端框架了。 如果我們對Angular
有更高的期望,那就是希望Angular
能很好地支援 mobile app
,達到APP 原生的使用者體驗效果。 而這正是 Angular 1
的短板,鑑於詞,才推出了 Angular 2
及其後來的Angular 4
。
接下來,我們重點談談 Angular 2
的架構
Angular 2
架構
可以說, Angular 2
是面向 mobile app
的架構,為了達到APP 原生的效果, Angular 2
特有引入了 NativeScript
技術。
如何解決APP 跨平臺問題
Angular 2
解決了 mobile app 跨平臺的問題, 所謂跨平臺是指,用 Angular 2
編寫的 Web 在 iOS 和 Android 上能達到同等原生的使用者體驗效果,只需要編寫一套程式碼。
小結
如果你是剛接觸 Angular
開發,建議從 Angular 2
開始,相對要簡單些; 何況 Angular 4
還在持續更新中,帶版本穩定後,再向 Angular 4
進發!
相關文章
- Angular 2 升級 Angular 4 歷程Angular
- Angular之路–帶你來搭建Webpack 2 + Angular 4專案AngularWeb
- Angular之路--帶你來搭建Webpack 2 + Angular 4專案AngularWeb
- Angular2 VS Angular4 深度對比:特性、效能Angular
- Angular 4 系列(一)初識 AngularAngular
- angular4Angular
- 《揭祕Angular 2》-基本型別Angular型別
- 沒有Angular 3,下一個Angular主版本將是Angular 4Angular
- angular 2 by exampleAngular
- 指令Angular 4 - DirectivesAngular
- Angular4+路由Angular路由
- 忘記 Angular 3:Google 將釋出 Angular 4AngularGo
- 使用Angular cli升級AngularJS專案——(一)引導Angular混合應用AngularJS
- Angular RouterModule.forRoot(ROUTES) 和 forChild(ROUTES)的區別Angular
- angular attrs.$observe和$scope.$watch的區別Angular
- js框架---angular、vue、react的三者的區別?JS框架AngularVueReact
- Angular 2 Forward ReferenceAngularForward
- Angular 2 Decorators – 1Angular
- Angular 4.x InjectorAngular
- Angular 4.x LocationStrategyAngular
- Angular2是可怕的Angular
- Angular效能優化 – 再談Angular 4髒值檢測Angular優化
- Angular效能優化 - 再談Angular 4髒值檢測Angular優化
- 從 Angular 1 升級到 Angular 2 需要準備的步驟Angular
- Angular 2 Multi ProvidersAngularIDE
- Angular 2 constructor & ngOnInitAngularStructGo
- Angular2初識Angular
- angular2入門Angular
- angular 接入 IdentityServer4AngularIDEServer
- angular4 反向代理detailsAngularAI
- 使用Angular-cli搭建Angular2開發環境Angular開發環境
- Angular 2 + 折騰記 :(2)初步認識angular2,不一樣的開發模式Angular模式
- angular2 的邏輯控制Angular
- Angular2+去除url中的#Angular
- AngularJS-Learning ui-router angular-transitionsAngularJSUI
- angular的uiRouter服務學習(4)AngularUI
- Angular2+ 自定義Tree元件(參考Angular-material的CdkTree)Angular元件
- Angular 4環境準備與Angular cli建立專案詳解Angular