Angular2 項目,我是這樣入門的

開篇廢話

這個Angular2 ,其實入門的教程已經(jīng)有很多很多人寫過了,但,我覺得最好的仍然是官方的文檔。我英語一般般,看原檔比較吃力,是從Angular.cn這里開始的。
寫這篇的原因是想記錄一下入門過程中的一些坑,防止下次又遇到又得查半天。同時為了能給其他有緣人也看看,就寫全一點吧。

開發(fā)環(huán)境篇

  1. angular2 依賴于node.js ,我電腦上安裝的node如下:
C:\Users\MidWong>node -v
v11.3.0

2、需要npm 包管理

C:\Users\MidWong>npm -v
6.4.1

Mac平臺可以用homebrew安裝nodejs,Windows平臺可用chocolatey, 在安裝nodejs時會安裝npm, 檢查即可。如果手動安裝記得配置環(huán)境變量。

工具篇

  1. 我用的WebStorm ,當(dāng)然這個沒限制,看個人習(xí)慣。vscode等一眾編輯器都可以。
  2. 由于需要用到http請求,官方用mooc數(shù)據(jù)測試的,而我直接用Spring Boot搭了一個restfulAPI 服務(wù)端,mooc這一步略了。服務(wù)端的內(nèi)容不在本篇討論,有機會補充。Spring Boot真是神器啊,幾分鐘就能做出來一個簡單的API接口。

準備工作

安裝angular cli 。我把這個理解為模板了,不知道合不合適。總之安裝之后,好多操作都可以用簡單的命令來實現(xiàn)。

npm install -g @angular/cli

安裝完成之后,就可用ng命令來創(chuàng)建項目了。這一步操作,可以在終端(Windows上的命令提示符),也可以在編輯器里面的Terminal(也叫終端)里。

我比較懶,喜歡在編輯器里打開Terminal來創(chuàng)建,不用cd到我要的文件夾了。
image.png
ng new 項目名稱

就可以創(chuàng)建一個angular項目了。這些步驟都可以參考文章開頭的 Angular.cn 快速入門,寫的更詳細。

我踩的坑

1. 創(chuàng)建組建后,不想要了

雖然有創(chuàng)建組建的命令,但是沒有刪除的呀!這時需要刪除組建文件夾/文件,然后在 app.module.ts 中刪除import。
這里贊一下WebStorm,刪了組建文件夾后,無用import的會有提示,選中刪除就ok.

2. ts語法

一開始好不習(xí)慣這個“新語種”。但了解了它的由來后,一下就容易理解了。它是JavaScript的超集,因為JavaScript沒有像諸多后端語言一樣強制類型,容易寫,但也容易出現(xiàn)一些不容易發(fā)現(xiàn)的Bug。ts解決了這個問題。在我看來,它就是用Java的語法寫JavaScript。
怎么入門呢?我反正沒去單獨的學(xué)它,就只是看angular官網(wǎng)的代碼,照貓畫虎,寫著寫著就會了。

3. WebStorm 中的紅色波浪線

好頭大哦!明明和官網(wǎng)上的代碼一模一樣,就算復(fù)制過來也有些下邊劃紅色波浪線提示這里出錯。代碼也能正常運行,憑啥報錯呢?! 終于偶然發(fā)現(xiàn),Ctrl+Alt+K 格式化一下代碼,干干凈凈的頁面,真舒服了!WebStorm 有自己的格式要求,那些代碼里沒用的空格/換行,在編輯器里幫助我們更容易閱讀代碼。這樣挺好的,培養(yǎng)良好的編程習(xí)慣。

4. 內(nèi)網(wǎng)穿透

大部分時間調(diào)試用Chrome,偶爾需要在真機上測試下觸摸/滑動是否正常,這時候需要用到內(nèi)網(wǎng)穿透工具了,如阿里釘釘內(nèi)網(wǎng)穿透工具。此時需要在 ng serve 后面加一個參數(shù) --disable-host-check

ng serve --disable-host-check

這樣啟動后,控制臺會有個warning,忽略它,可以在手機上通過互聯(lián)網(wǎng)訪問你的項目了,就不需要手機和電腦接入同一局域網(wǎng)這么麻煩啦。

5.項目結(jié)構(gòu)

這一部分我就不寫這么快了,畢竟剛剛?cè)腴T,不知道什么樣的結(jié)構(gòu)是合理的。但是有一點能感受到的是,能用組建就用組建,然后組裝,這樣容易在其他地方復(fù)用。一些至負責(zé)數(shù)據(jù)處理的,例如http請求,盡量寫成通用的服務(wù),同樣為了方便以后重復(fù)使用。

6.UI框架

官方推薦的有兩個,一個是大名鼎鼎的Material Design,動畫效果簡直舒服的不要不要的,上手也很快。另一個是阿里的NG ZORRO,組件豐富,還有現(xiàn)成的ng-admin中后端解決方案。如果不太在意前端設(shè)計,只是想完成該有的功能,這個ng-admin很適合,完成度很好,只要按著你的需求去改就可以。

當(dāng)然,其他的前端UI框架也是可以用的,比如bootstrap,像傳統(tǒng)的html網(wǎng)頁里一樣,在index.html中引用即可。
jQuery這個庫,在html網(wǎng)頁里特別好用,但是在這,至少我覺得是無用武之地了。

7.跨域

Angular是個前端框架,勢必會前后端分離,此時會有跨域的問題。前后端都可以去解決這個問題,我選擇在Spring Boot里解決,只需要一個注解即可搞定

@CrossOrigin(origins = "http://example.com", maxAge = 3600)

在控制器上加這一句注解,把安全的域名寫進去。當(dāng)然也可以寫*號,但是不推薦。

8.打包發(fā)布

打包命令如下:

ng build

這是項目文件夾中會多出一個dist文件夾,只需要把里邊的文件全部復(fù)制到tomcat中的webapps目錄下,就發(fā)布完成了。

然后,問題來了。
首先,如果按照頁面目錄,訪問下來看起來沒啥區(qū)別,但是在某個路由下刷新一下頁面就404了。解決方案是配置app.module.ts,添加這一行:

providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}]

像這樣:

import {HashLocationStrategy , LocationStrategy} from '@angular/common';
@NgModule({  
  declarations: [AppComponent],  
  bootstrap: [AppComponent], 
  imports: [BrowserModule, routes],  
  providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}]
});

再訪問時,會發(fā)現(xiàn)在tomcat的發(fā)布路徑后,會有個# 錨點,刷新不會404了

如果,此時去瀏覽器F12調(diào)試,到network 標簽頁里觀察,清除緩存并強制刷新頁面(長按地址欄前面的刷新),會看到加載的文件巨大,好幾M,體驗不太好。
我的辦法是,打包時添加參數(shù)

ng build --prod --aot 

這樣,壓縮打包出來的文件一班會在1M以內(nèi),訪問快很多了。

總結(jié)

還沒到總結(jié)的時候,先挖個坑,這篇還需要回來修改/補充內(nèi)容的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容