微信小程序的主要開(kāi)發(fā)語(yǔ)言是 JavaScript 楞慈,開(kāi)發(fā)者使用 JavaScript 來(lái)開(kāi)發(fā)業(yè)務(wù)邏輯以及調(diào)用小程序的 API 來(lái)完成業(yè)務(wù)需求膊存。但是赘淮,嚴(yán)格的意義上來(lái)說(shuō)岔帽,小程序中 JavaScript 的同瀏覽器中的 JavaScript 以及 NodeJS 中的 JavaScript 是不相同的。
瀏覽器中的JavaScript 是由 ECMAScript 和 BOM(瀏覽器對(duì)象模型)以及 DOM(文檔對(duì)象模型)組成的退渗,Web前端開(kāi)發(fā)者會(huì)很熟悉這兩個(gè)對(duì)象模型脆炎,它使得開(kāi)發(fā)者可以去操作瀏覽器的一些表現(xiàn),比如修改URL氓辣、修改頁(yè)面呈現(xiàn)秒裕、記錄數(shù)據(jù)等等。
NodeJS中的JavaScript 是由 ECMAScript 和 NPM以及Native模塊組成钞啸,NodeJS的開(kāi)發(fā)者會(huì)非常熟悉 NPM 的包管理系統(tǒng)几蜻,通過(guò)各種拓展包來(lái)快速的實(shí)現(xiàn)一些功能,同時(shí)通過(guò)使用一些原生的模塊例如 FS体斩、HTTP梭稚、OS等等來(lái)?yè)碛幸恍┱Z(yǔ)言本身所不具有的能力。
小程序中的 JavaScript 是由ECMAScript 以及小程序框架和小程序 API 來(lái)實(shí)現(xiàn)的絮吵。同瀏覽器中的JavaScript 相比沒(méi)有 BOM 以及 DOM 對(duì)象弧烤,所以類似 JQuery、Zepto這種瀏覽器類庫(kù)是無(wú)法在小程序中運(yùn)行起來(lái)的蹬敲,同樣的缺少 Native 模塊和NPM包管理的機(jī)制暇昂,小程序中無(wú)法加載原生庫(kù),也無(wú)法直接使用大部分的 NPM 包伴嗡。
明白了小程序中的 JavaScript 同瀏覽器以及NodeJS有所不同后急波,開(kāi)發(fā)者還需要注意到另外一個(gè)問(wèn)題,不同的平臺(tái)的小程序的腳本執(zhí)行環(huán)境也是有所區(qū)別的瘪校。
小程序目前可以運(yùn)行在三大平臺(tái):
- iOS平臺(tái)澄暮,包括iOS9名段、iOS10、iOS11
- Android平臺(tái)
- 小程序IDE
這種區(qū)別主要是體現(xiàn)三大平臺(tái)實(shí)現(xiàn)的 ECMAScript 的標(biāo)準(zhǔn)有所不同泣懊。截止到當(dāng)前一共有七個(gè)版本的ECMAScript 標(biāo)準(zhǔn)伸辟,目前開(kāi)發(fā)者大部分使用的是 ECMAScript 5 和 ECMAScript 6 的標(biāo)準(zhǔn),但是在小程序中馍刮, iOS9和iOS10 所使用的運(yùn)行環(huán)境并沒(méi)有完全的兼容到 ECMAScript 6 標(biāo)準(zhǔn)信夫,一些 ECMAScript 6 中規(guī)定的語(yǔ)法和關(guān)鍵字是沒(méi)有的或者同標(biāo)準(zhǔn)是有所不同的,所以一些開(kāi)發(fā)者會(huì)發(fā)現(xiàn)有些代碼在舊的手機(jī)操作系統(tǒng)上出現(xiàn)一些語(yǔ)法錯(cuò)誤渠退。為了幫助開(kāi)發(fā)者解決這類問(wèn)題忙迁,小程序IDE提供語(yǔ)法轉(zhuǎn)碼工具幫助開(kāi)發(fā)者脐彩,將 ECMAScript 6代碼轉(zhuǎn)為 ECMAScript 5代碼碎乃,從而在所有的環(huán)境都能得到很好的執(zhí)行。開(kāi)發(fā)者需要在項(xiàng)目設(shè)置中惠奸,勾選 ES6 轉(zhuǎn) ES5 開(kāi)啟此功能梅誓。