摘要:所以,如果你也考慮開(kāi)始使用,不妨也看一下。使用模塊中,模塊的使用方法與一致。安裝好定義文件之后,如果使用等對(duì)支持較好的編輯器,則會(huì)提供更加強(qiáng)大的代碼提示功能。如果使用配合的,則可以方便地構(gòu)建瀏覽器可以運(yùn)行的代碼。
TypeScript所做的,是在JavaScript的基礎(chǔ)上加入了類(lèi)型,TypeScript編譯器將TypeScript編譯成JavaScript,可以在瀏覽器或者nodejs平臺(tái)上運(yùn)行。最新版本的TypeScript語(yǔ)法根ES6標(biāo)準(zhǔn)已經(jīng)十分接近,而且因?yàn)槭荍S的超集,TS代碼中夾雜普通JS代碼也是可以的。所以,如果你也考慮開(kāi)始使用Bable+ES6,不妨也看一下TypeScript。
TypeScript項(xiàng)目和tsconfig.json首先安裝TypeScript編譯器
npm i -g typescript
進(jìn)入項(xiàng)目目錄,新建一個(gè)hello.ts
function sayHello(name: string) { return "Hello, " + name; } let myName = "Cheng Wang"; console.log(sayHello(myName));
然后執(zhí)行
tsc hello.ts
編譯器會(huì)生成 hello.js
function sayHello(name) { return "Hello, " + name; } var myName = "Cheng Wang"; console.log(sayHello(myName));
為了方便編譯器和編輯器識(shí)別TypeScript項(xiàng)目,TypeScript約定了tsconfig.json文件來(lái)存儲(chǔ)項(xiàng)目配置,如果運(yùn)行tsc時(shí)不指定輸入文件,編譯器則會(huì)查找項(xiàng)目目錄中的這個(gè)文件,如果找不到則會(huì)依次向父級(jí)目錄查找。比如這樣:
{ "compilerOptions": { "outFile": "dist/app.js", "sourceMap": true }, "files": [ "src/app.ts" ] }
直接運(yùn)行tsc,會(huì)自動(dòng)把src/app.ts編譯到dist/app.js。
關(guān)于這個(gè)配置文件的更多選項(xiàng),可以看官方文檔。
使用模塊TypeScript中,模塊的使用方法與ES6一致。
src/modules/utilities.ts:
function getUrlParam(key: string) { const REG_PATTERN = new RegExp("(^|&)" + key + "=([^&]*)(&|$)", "i"); let result: string[] = location.search.substr(1).match(REG_PATTERN); if (result !== null) { return decodeURIComponent(result[2]); } else { return null; } } export { getUrlParam }
src/app.ts:
import { getUrlParam } from "./modules/utilities"; let deviceType: string = getUrlParam("deviceType"); console.log(deviceType);
編譯后的app.js(TypeScript編譯器在輸出單個(gè)文件時(shí),只能使用AMD或System模塊規(guī)范):
define("modules/utilities", ["require", "exports"], function (require, exports) { "use strict"; function getUrlParam(key) { var REG_PATTERN = new RegExp("(^|&)" + key + "=([^&]*)(&|$)", "i"); var result = location.search.substr(1).match(REG_PATTERN); if (result !== null) { return decodeURIComponent(result[2]); } else { return null; } } exports.getUrlParam = getUrlParam; }); define("app", ["require", "exports", "modules/utilities"], function (require, exports, utilities_1) { "use strict"; var deviceType = utilities_1.getUrlParam("deviceType"); console.log(deviceType); });使用NPM庫(kù)
我們開(kāi)發(fā)JS程序的時(shí)候,要用到NPM上的第三方的庫(kù),比如jQuery、Lodash等,但是絕大多數(shù)庫(kù)都是用JS寫(xiě)的,沒(méi)有類(lèi)型提示,我們也不能在在代碼中將這些庫(kù)作為模塊引入。
比如我們需要在項(xiàng)目中使用Lodash:
npm i --save lodash
然后在代碼中引入:
import * as _ from "lodash"; console.log(_.camelCase("helloworld"))
運(yùn)行 tsc 則報(bào)錯(cuò):
src/app.ts(1,20): error TS2307: Cannot find module "lodash".
如果想在TypeScript代碼中直接使用npm上的JS庫(kù),需要借助Typings這個(gè)工具。
Typings也是一個(gè)包管理器,它管理的是JS代碼“定義文件”,用Typings安裝相應(yīng)的定義文件后,編輯器和編譯器就可以去node_modules目錄中找到相應(yīng)的JS庫(kù),并編譯到最終的JS代碼中。
先安裝Typings工具:
npm i -g typings
然后安裝Lodash的定義文件:
typings install --save lodash
Typings會(huì)去NPM、Bower上尋找?guī)斓淖髡呒拥亩x文件,但是有的庫(kù)如jQuery并沒(méi)有官方的定義文件,則需要從社區(qū)維護(hù)的DefinitelyTyped目錄下安裝:
typings install --save --ambient jquery
然后再tsconfig.json中的files配置中加入一條:
"files": [ "src/app.ts", "typings/main.d.ts" ]
此時(shí)編譯就不會(huì)提示找不到模塊了。
安裝好定義文件之后,如果使用Visual Studio Code等對(duì)TypeScript支持較好的編輯器,則會(huì)提供更加強(qiáng)大的代碼提示功能。
使用Webpack構(gòu)建TypeScript編譯器支持很多模塊組織規(guī)范,如ES6、commonJS、AMD等,但是如果想要將多個(gè)ts文件打包成一個(gè)文件,TypeScript只支持AMD和System,對(duì)于瀏覽器應(yīng)用來(lái)說(shuō),還需要引入第三方的模塊加載器。如果使用Webpack配合TypeScript的loader,則可以方便地構(gòu)建瀏覽器可以運(yùn)行的JS代碼。
首先安裝Webpack和ts-loader:
npm i webpack -g npm i ts-loader --save-dev
然后配置項(xiàng)目目錄中的webpack.config.js:
module.exports = { entry: "./src/app.ts", output: { filename: "app.js", path: "./dist" }, resolve: { extensions: ["", ".webpack.js", ".web.js", ".ts", ".js"] }, module: { loaders: [ { test: /.ts$/, loader: "ts-loader" } ] } }
然后就可以通過(guò)運(yùn)行webpack來(lái)構(gòu)建了,構(gòu)建生成的代碼自帶了webpack的模塊加載器,可以直接在瀏覽器中運(yùn)行。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/79450.html
摘要:和類(lèi)似的預(yù)處理器還有等。的用處非常多,包括給自動(dòng)加前綴使用下一代語(yǔ)法等,目前越來(lái)越多的人開(kāi)始用它,它很可能會(huì)成為預(yù)處理器的最終贏家。 webpack實(shí)戰(zhàn) 查看所有文檔頁(yè)面:全棧開(kāi)發(fā),獲取更多信息。快馬加鞭,加班加點(diǎn),終于把這個(gè)文檔整理出來(lái)了,順便深入地學(xué)習(xí)一番,鞏固知識(shí),就是太累人,影響睡眠時(shí)間和質(zhì)量。極客就是想要把事情做到極致,開(kāi)始了就必須到達(dá)終點(diǎn)。 原文鏈接:webpack實(shí)戰(zhàn),原...
摘要:前端每周清單第期現(xiàn)狀分析與優(yōu)化策略單元測(cè)試爬蟲(chóng)作者王下邀月熊編輯徐川前端每周清單專(zhuān)注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開(kāi)發(fā)教程工程實(shí)踐深度閱讀開(kāi)源項(xiàng)目巔峰人生等欄目。 showImg(https://segmentfault.com/img/remote/1460000011008022); 前端每周清單第 29 期:Web 現(xiàn)狀分析與優(yōu)化策略...
摘要:為了便于您更清晰的理解的體系架構(gòu),在這里我將為您展示年開(kāi)發(fā)者知識(shí)圖譜,它包含了所有開(kāi)發(fā)過(guò)程中的關(guān)鍵部分。在數(shù)據(jù)展示前端導(dǎo)入導(dǎo)出圖表面板數(shù)據(jù)綁定等場(chǎng)景無(wú)需大量代碼開(kāi)發(fā)和測(cè)試,可極大節(jié)省企業(yè)研發(fā)成本并降低交付風(fēng)險(xiǎn)。 作為 Vue 的初學(xué)者,您或許已經(jīng)聽(tīng)過(guò)很多關(guān)于它的專(zhuān)業(yè)術(shù)語(yǔ)了,例如:?jiǎn)雾?yè)面應(yīng)用程序、異步組件、服務(wù)器端呈現(xiàn)等,您可能還聽(tīng)過(guò)和Vue經(jīng)常一起被提到的工具和庫(kù),如Vuex、Webp...
摘要:年前端有哪些領(lǐng)域,技術(shù)值得關(guān)注,哪些技術(shù)會(huì)興起,哪些技術(shù)會(huì)沒(méi)落。自從谷歌提出后,就持續(xù)的獲得了業(yè)界的關(guān)注,熱度可見(jiàn)一斑。就在今年,谷歌也宣布將獲得與安卓原生應(yīng)用同等的待遇與權(quán)限。但是無(wú)論都值得關(guān)注。 1.前言 2017悄然過(guò)去,2018已經(jīng)來(lái)到。人在進(jìn)步,技術(shù)在發(fā)展。2018年前端有哪些領(lǐng)域,技術(shù)值得關(guān)注,哪些技術(shù)會(huì)興起,哪些技術(shù)會(huì)沒(méi)落。下面就我個(gè)人的判斷進(jìn)行一個(gè)預(yù)測(cè)判斷,希望能對(duì)大家...
摘要:年前端有哪些領(lǐng)域,技術(shù)值得關(guān)注,哪些技術(shù)會(huì)興起,哪些技術(shù)會(huì)沒(méi)落。自從谷歌提出后,就持續(xù)的獲得了業(yè)界的關(guān)注,熱度可見(jiàn)一斑。就在今年,谷歌也宣布將獲得與安卓原生應(yīng)用同等的待遇與權(quán)限。但是無(wú)論都值得關(guān)注。 1.前言 2017悄然過(guò)去,2018已經(jīng)來(lái)到。人在進(jìn)步,技術(shù)在發(fā)展。2018年前端有哪些領(lǐng)域,技術(shù)值得關(guān)注,哪些技術(shù)會(huì)興起,哪些技術(shù)會(huì)沒(méi)落。下面就我個(gè)人的判斷進(jìn)行一個(gè)預(yù)測(cè)判斷,希望能對(duì)大家...
閱讀 2237·2021-09-24 10:31
閱讀 3888·2021-09-22 15:16
閱讀 3410·2021-09-22 10:02
閱讀 1025·2021-09-22 10:02
閱讀 1839·2021-09-08 09:36
閱讀 1986·2019-08-30 14:18
閱讀 617·2019-08-30 10:51
閱讀 1880·2019-08-29 11:08