angular中使用第三方庫

一如叼、TypeScript 模塊機(jī)制

javascript從es5之前都缺少一種模塊機(jī)制,無法通過js引入文件陨亡,于是requirejs等等的加載器應(yīng)運(yùn)而生舵稠。這些加載器的使用也并不統(tǒng)一,產(chǎn)生了amd嗓违,commonjs九巡,umd等等的規(guī)范,各有所長蹂季。直到es6的發(fā)布冕广,js自身引入的模塊機(jī)制,將會(huì)在以后逐漸被應(yīng)用起來乏盐。

Typescrit的模塊機(jī)制與es6的模塊基本類似佳窑。模塊是指在其自身作用域里執(zhí)行制恍,而不是在全局作用域里父能;模塊間是依靠 exportimport 建立關(guān)系。編譯器在編譯過程中净神,也是依賴這種關(guān)系來定位需要編譯的文件何吝。

TypeScript 依然還是以 JavaScript 文件的形式發(fā)布類庫,這會(huì)導(dǎo)致類型無法表述鹃唯,需要配合聲明文件對(duì)其進(jìn)行類型描述爱榕;因此聲明文件成了類庫一個(gè)必不可少的組成部分。

二坡慌、分類

Angular 使用 TypeScript 語言開發(fā)黔酥,要想讓一個(gè)類庫被運(yùn)用,最重要的是看有沒有聲明文件

有聲明文件

要分清類庫是否有聲明文件 *.d.ts跪者,可以從兩個(gè)方面來確認(rèn)這件事:

1棵帽、類庫自帶

從 Npm 安裝一個(gè)依賴包后,可以直接檢查其庫的 package.json 是否包含 typings 節(jié)點(diǎn)渣玲,例如 moment

"typings": "./moment.d.ts"

2逗概、TypeSearch檢索

TypeScript 提供了一個(gè)叫 TypeSearch 網(wǎng)站,可以直接輸入關(guān)鍵詞檢查是否包含該類庫的聲明文件忘衍。

例如 lodash 可以在列表中點(diǎn)擊會(huì)跳轉(zhuǎn)至 npm 網(wǎng)站逾苫,并且會(huì)看到這樣的一個(gè)命令:

npm install --save @types/lodash

無聲明文件

這類情況還蠻常見,這種情況下只能自行編寫聲明文件枚钓。

Angular Cli 創(chuàng)建的項(xiàng)目會(huì)包含一個(gè) src/typings.d.ts 聲明文件铅搓,它會(huì)自動(dòng)包含在全局聲明定義中,而把這些類庫的聲明信息寫在這里面再好不過搀捷。

一般而言自己很難對(duì)一個(gè)類庫寫一個(gè)完整的聲明文件狸吞,這對(duì)于成本來說太不合算,因此往往都是只對(duì)部分全局對(duì)象做一個(gè) any (表示忽略該靜態(tài)類型檢查)亦可指煎,例如:

// src/typings.d.ts
declare var $: any; 
declare var jQuery: any;

三蹋偏、如何使用?

有聲明文件

對(duì)于有聲明文件至壤,無需額外做什么威始,只需在需要模塊的地方使用 import 來導(dǎo)入即可,例如:

import * as moment from 'moment';

moment(); // 當(dāng)前時(shí)間

無聲明文件

重要來看無聲明文件時(shí)怎么做像街,前面說到使用 any 來表示忽略靜態(tài)類型檢查黎棠,意味者無法享受聲明文件帶來的智能提示快感。

// app.component.ts

const g2 = new G2();
g2. // 輸入 `.` 后是不會(huì)有任何方法或?qū)傩?

除此之外 TypeScript 編譯過程中也不會(huì)對(duì) jquery 做任何類型檢查镰绎,jquery 是否真的存在只能由自己把握脓斩。對(duì)于 Angular 而言,是需要額外在 .angular-cli.jsonscripts 節(jié)點(diǎn)上明確加載這些模塊畴栖。

// .angular-cli.json
"scripts": [
    "../node_modules/jquery/dist/jquery.min.js"
]

TypeScript 編譯后依然還是 JavaScript 代碼随静,假如不手動(dòng)加載 jquery 相關(guān) JavaScript 文件,自然在運(yùn)行過程中會(huì)提供未找到 jquery 的錯(cuò)誤吗讶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末燎猛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖慎框,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異昭卓,居然都是意外死亡愤钾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門候醒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绰垂,“玉大人,你說我怎么就攤上這事火焰【⒆埃” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵昌简,是天一觀的道長占业。 經(jīng)常有香客問我,道長纯赎,這世上最難降的妖魔是什么谦疾? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮犬金,結(jié)果婚禮上念恍,老公的妹妹穿的比我還像新娘。我一直安慰自己晚顷,他們只是感情好峰伙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著该默,像睡著了一般瞳氓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上栓袖,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天匣摘,我揣著相機(jī)與錄音,去河邊找鬼裹刮。 笑死音榜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的捧弃。 我是一名探鬼主播赠叼,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼塔橡!你這毒婦竟也來了梅割?” 一聲冷哼從身側(cè)響起霜第,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤葛家,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后泌类,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體癞谒,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡底燎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弹砚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片双仍。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖桌吃,靈堂內(nèi)的尸體忽然破棺而出朱沃,到底是詐尸還是另有隱情,我是刑警寧澤茅诱,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布逗物,位于F島的核電站,受9級(jí)特大地震影響瑟俭,放射性物質(zhì)發(fā)生泄漏翎卓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一摆寄、第九天 我趴在偏房一處隱蔽的房頂上張望失暴。 院中可真熱鬧,春花似錦微饥、人聲如沸逗扒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缴阎。三九已至,卻和暖如春简软,著一層夾襖步出監(jiān)牢的瞬間蛮拔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工痹升, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留建炫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓疼蛾,卻偏偏與公主長得像肛跌,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子察郁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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