溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ThinkJS2.1支持TypeScript的示例分析

發(fā)布時(shí)間:2021-10-19 10:03:42 來(lái)源:億速云 閱讀:147 作者:小新 欄目:web開(kāi)發(fā)

這篇文章主要為大家展示了“ThinkJS2.1支持TypeScript的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“ThinkJS2.1支持TypeScript的示例分析”這篇文章吧。

一:支持TypeScript

TypeScript 是一種由微軟開(kāi)發(fā)的自由和開(kāi)源的編程語(yǔ)言。它是 JavaScript 的一個(gè)超集,向這個(gè)語(yǔ)言添加了可選的靜態(tài)類型,在大型項(xiàng)目里非常有用。ThinkJS 2.1 開(kāi)始支持了創(chuàng)建 TypeScript 類型的項(xiàng)目,并且開(kāi)發(fā)時(shí)會(huì)自動(dòng)編譯、自動(dòng)更新,無(wú)需手工編譯等復(fù)雜的操作。細(xì)則如下:

1、創(chuàng)建 TypeScript 項(xiàng)目

2、.d.ts 文件

3、已有項(xiàng)目升級(jí)為 TypeScript 項(xiàng)目

  • 修改入口文件

  • 修改 package.json

  • 修改 .thinkjsrc

  • 下載 think.d.ts 描述文件

  • 修改文件后綴

  • 項(xiàng)目文件里添加描述文件

二:性能提升

評(píng)價(jià)一個(gè)框架是否出色,一方面看支持的功能,另一方面也要看性能。雖然 ThinkJS 更適合大型項(xiàng)目,功能和復(fù)雜度遠(yuǎn)遠(yuǎn)超過(guò) Express 和 Koa,但性能上并不比 Express 和 Koa 遜色多少,具體的測(cè)試數(shù)據(jù)請(qǐng)見(jiàn)下圖。

ThinkJS2.1支持TypeScript的示例分析

注:以上數(shù)據(jù)使用分布式壓力測(cè)試系統(tǒng)測(cè)試。

從上圖中測(cè)試數(shù)據(jù)可以看到,雖然 ThinkJS 比 Express 和 Koa 性能要差一些,但差別并不大。ThinkJS 和 Sails.js 都更符合大型項(xiàng)目,但 ThinkJS 的性能要比 Sails.js 高很多。

具體測(cè)試代碼請(qǐng)見(jiàn):https://github.com/thinkjs-team/thinkjs-performance-test,可以下載代碼在本機(jī)測(cè)試,如果使用 ab 測(cè)試工具,請(qǐng)注意該工具在 Mac 系統(tǒng)下很不穩(wěn)定,多次測(cè)試結(jié)果會(huì)相差很大。

三:更多特性

ThinkJS 2.1版本除了上述兩個(gè)較為突出的特性以外,更多特性如下:

  • Controller 支持子目錄的形式

  • 支持 PostgreSQL 數(shù)據(jù)庫(kù)

  • Model schema 支持默認(rèn)值

  • Hook 里的 middleware 返回 null 可以阻止后續(xù)的 middleware 執(zhí)行

  • http 和 controller 添加 display 的別名方法 render

  • 添加串行執(zhí)行方法 think.waterfall

  • Validate 支持正則

  • fetch 支持傳數(shù)據(jù)

  • Logic 支持判斷請(qǐng)求類型

  • 定時(shí)任務(wù)里支持直接調(diào)用 action

  • Babel 升級(jí)到 6

  • 國(guó)際化語(yǔ)言對(duì)大小寫不再敏感

  • 將獲取模板文件內(nèi)容改為異步

  • http 對(duì)象不在繼承自 EventEmitter 類

  • 去除 think.mode_mini 模式,controller 支持子目錄

  • 數(shù)據(jù)庫(kù)配置 name 改為 database

  • 修改現(xiàn)在的 fields 為 schema

  • 數(shù)據(jù)庫(kù)配置 pwd 改為 password

  • 優(yōu)化 http 對(duì)象生成方式,不用每次都復(fù)制

  • 過(guò)濾 .svn, .git 等隱藏類型的文件

  • 將文件 bin/index.js 移動(dòng)為 src/command.js

  • runtime 目錄移動(dòng)到項(xiàng)目根目錄下,添加 think.RUNTIME_PATH 路徑常量

  • adapter type 增加自動(dòng)轉(zhuǎn)為小寫的功能,并給出提示

  • 增加 thinkData,用于緩存系統(tǒng)常用數(shù)據(jù)

  • 合并 think.locale 和 controller.locale 方法

  • 修復(fù) nunjucks 模板繼承文件找不到的問(wèn)題

  • 修復(fù) pathname 里含有轉(zhuǎn)義的 / 導(dǎo)致識(shí)別錯(cuò)誤的問(wèn)題

  • 修復(fù) http.file 方法返回的數(shù)據(jù)遭到修改導(dǎo)致源數(shù)據(jù)也修改的問(wèn)題

  • 修復(fù)路徑中 / 在 windows 下需要替換為 \\ 的問(wèn)題

  • 修復(fù) nunjucks 下模板文件在不在根目錄導(dǎo)致報(bào)錯(cuò)的問(wèn)題

  • 修復(fù) production 環(huán)境下,頁(yè)面上可能輸出敏感數(shù)據(jù)的問(wèn)題

  • 修復(fù) development 模式下,JSON 數(shù)據(jù)解析失敗后沒(méi)有報(bào)錯(cuò)信息不好定位的問(wèn)題

  • 修復(fù) view root_path 修改后,創(chuàng)建模塊時(shí)視圖路徑?jīng)]更新的問(wèn)題

  • 修復(fù) required|int 規(guī)則校驗(yàn)不正確的問(wèn)題

  • 修復(fù) redis cache 解析配置的問(wèn)題

  • 修復(fù) REST API 不支持 logic 的問(wèn)題

  • 修復(fù) count 方法如果傳入字段名是關(guān)鍵字會(huì)出錯(cuò)的問(wèn)題

以上是“ThinkJS2.1支持TypeScript的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI