很多開(kāi)發(fā)者到我這里來(lái)抱怨說(shuō)伏穆,在 Windows 平臺(tái)上安裝 @angular/cli 會(huì)報(bào)很多 error,那是因?yàn)?@angular/cli 在 Windows 平臺(tái)上面依賴(lài) Python 和 Visual Studio 環(huán)境纷纫,而很多開(kāi)發(fā)者的機(jī)器上并沒(méi)有安裝這些東西枕扫。
node-sass 模塊被墻的問(wèn)題,強(qiáng)烈推薦使用 cnpm 進(jìn)行安裝辱魁,可以非常有效地避免撞墻烟瞧。
- 一些開(kāi)發(fā)者來(lái)抱怨說(shuō) @angular/cli 在打包的時(shí)候加上 --prod 參數(shù)會(huì)報(bào)錯(cuò),無(wú)法編譯商叹。這是一個(gè)很常見(jiàn)的問(wèn)題燕刻,因?yàn)?@angular/cli 最新的版本經(jīng)常會(huì)有 bug,只要在你項(xiàng)目的 package.json 里面降低一個(gè)小版本號(hào)就OK剖笙。
@angular/cli 默認(rèn)生成的 karma.conf.js 配置文件里面采用了一個(gè)有 bug 的 html 報(bào)告生成器,導(dǎo)致 ng test 運(yùn)行報(bào)錯(cuò)请唱,我們需要把這個(gè) reporter 改成 mocha(摩卡)弥咪。
有一些朋友說(shuō),本地開(kāi)發(fā)的時(shí)候運(yùn)行得很好十绑,上線之后所有請(qǐng)求404聚至。這也是一個(gè)常見(jiàn)的坑,因?yàn)槟阈枰o Web 容器配置一下處理 http 請(qǐng)求的規(guī)則本橙,把前端路由扔回去交給 Angular 處理扳躬,請(qǐng)參考這份文檔。
集中回答一些常見(jiàn)的問(wèn)題
瀏覽器兼容性
關(guān)于 Angular 的瀏覽器兼容性,請(qǐng)看下圖:
有一些國(guó)內(nèi)的開(kāi)發(fā)者會(huì)來(lái)爭(zhēng)論兼容 IE8 的問(wèn)題贷币,我想給你兩個(gè)事實(shí):
第一個(gè)事實(shí)是:截至2017年7月底击胜,Chrome 的全球市場(chǎng)份額已經(jīng)接近60%,加上 Firefox的12.28%役纹,真的沒(méi)有那么多人用 IE 了偶摔。
數(shù)據(jù)來(lái)源
第二個(gè)事實(shí)是:天貓已經(jīng)于2016年4月宣布放棄支持 IE6、7促脉、8辰斋。而根據(jù)百度流量研究院的統(tǒng)計(jì),IE8目前的整體市場(chǎng)份額已經(jīng)下降到了9.31%:
數(shù)據(jù)來(lái)源
不值得為了這么少的市場(chǎng)份額付出那么多的研發(fā)和維護(hù)成本瘸味。
你完全可以以上兩點(diǎn)事實(shí)去說(shuō)服你的客戶宫仗。
命名約定
老版本使用 AngularJS 指代,所有新版本都叫做 Angular旁仿。原因很好理解锰什,因?yàn)槔习姹臼怯?JS 開(kāi)發(fā)的,所以帶一個(gè) JS 后綴丁逝,而新版本是基于 TypeScript 的汁胆,帶 JS 后綴不合適。
關(guān)于 TypeScript
這個(gè)系列的文章不會(huì)單獨(dú)講 TypeScript霜幼,正如我一直強(qiáng)調(diào)的:TypeScript 不難剑逃,JavaScript 才難。你跟著我的思路亚茬,TypeScript 絕對(duì)不會(huì)成為你學(xué)習(xí) Angular 的障礙汇在。相反,一旦你寫(xiě)熟練了之后琢感,TypeScript 可以非常有效地提升編碼效率和程序可讀性丢间。
關(guān)于版本號(hào)
根據(jù)官方的解釋?zhuān)珹ngular 從2.0之后會(huì)保證向下兼容,每隔半年會(huì)升級(jí)一個(gè)大版本驹针,只有升級(jí)大版本的時(shí)候才會(huì)做一些 breaking change烘挫。
所以這個(gè)系列文章里面不再?gòu)?qiáng)調(diào)版本號(hào),涉及到的所有實(shí)例代碼都基于目前(2017-10)最新的4.x版本柬甥。