[FE] Hello Angular

AngularJS 1.x是Angular的上一代框架,
Angular團(tuán)隊(duì)做了規(guī)范,老框架為AngularJS 1.x,新框架統(tǒng)稱為Angular,
Angular使用了TypeScript進(jìn)行開發(fā),與AngularJS 1.x不兼容,而且采用了語義化的版本號(hào),以后是向下兼容的。

1. 安裝Angular

(1)全局安裝Angular CLI

npm install -g @angular/cli

(2)創(chuàng)建樣板工程

ng new my-app

(3)打開服務(wù)

cd my-app
ng serve --open

ng serve會(huì)打開服務(wù),監(jiān)控文件的變更,并自動(dòng)重新構(gòu)建,
--open選項(xiàng)(或簡(jiǎn)寫為-o),會(huì)自動(dòng)打開瀏覽器,并訪問http://localhost:4200/。

注:
執(zhí)行ng serve --open的時(shí)候可能會(huì)報(bào)錯(cuò),

getaddrinfo ENOTFOUND localhost
Error: getaddrinfo ENOTFOUND localhost
    at errnoException (dns.js:50:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)

可以通過iHosts綁定域名localhost到本機(jī)IP來解決,

127.0.0.1 localhost

2. 應(yīng)用目錄

2.1 構(gòu)建產(chǎn)品代碼

Angular應(yīng)用位于src文件夾中,我們可以使用如下命令進(jìn)行構(gòu)建,

ng build --env=prod

它將生成產(chǎn)品代碼到./dist目錄中,訪問http://localhost:4200/dist/index.html可以進(jìn)行查看。

2.2 目錄結(jié)構(gòu)

src
├── app
│   ├── app.component.css
│   ├── app.component.html
│   ├── app.component.spec.ts
│   ├── app.component.ts
│   └── app.module.ts
├── assets
├── environments
│   ├── environment.prod.ts
│   └── environment.ts
├── favicon.ico
├── index.html
├── main.ts
├── polyfills.ts
├── styles.css
├── test.ts
├── tsconfig.app.json
├── tsconfig.spec.json
└── typings.d.ts

2.3 文件介紹

(1)index.html
index.html是首頁,CLI工具會(huì)自動(dòng)添加js和css文件進(jìn)去,
所以并沒有包含<script><link>標(biāo)簽,而是直接包含了一個(gè)html5自定義標(biāo)簽<app-root></app-root>。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>MyApp</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>
</body>
</html>

(2)main.ts
main.ts是應(yīng)用的入口,

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);

它根據(jù)environments/environment.ts中的配置,來切換開發(fā)環(huán)境和生產(chǎn)環(huán)境,
AppModule是當(dāng)前的應(yīng)用模塊,由app/app.module.ts中導(dǎo)出。

(3)app/app.module.ts
app/app.module.ts文件中使用AppComponent注冊(cè)了AppModule模塊,

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

其中,AppComponentapp/app.component.ts導(dǎo)出,
@NgModuleAppModule類的裝飾器。

(4)app/app.component.ts
app/app.component.ts創(chuàng)建了<app-root>組件,指定了它的模板和樣式,

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app';
}

其中,@ComponentAppComponent類的裝飾器。


參考

Angular - QuickStart
build modulesError: getaddrinfo ENOTFOUND localhost

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容