亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Typescript裝飾器AOP示例詳解

 更新時間:2022年12月14日 09:40:46   作者:魚露  
這篇文章主要為大家介紹了Typescript裝飾器AOP示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

在Typescript中使用裝飾器

上文中講了裝飾模式,今天來來介紹一些Typescript里面的裝飾器,以及如何用裝飾器來實現(xiàn)之前提及裝飾模式,裝飾器只是實現(xiàn)裝飾模式的一種方式,并非唯一

配置

在Typescript要使用裝飾器需要在tsconfig打開裝飾器的語法

"compilerOptions": {
  "experimentalDecorators": true
}

類裝飾器

在Typescript中我們可以對一個class用裝飾器進行拓展,比如下面的例子, 會打印出'target is class A'的log日志;

const injectable = () =>
  (target: { new (...args: any[]): {} }) => {
    console.log('target is ',target)
  };
@injectable()
class A {}

在類裝飾器中我們可以獲取到這個類,從而對他進行拓展

比如我們可以為這個類實現(xiàn)拓展

const AddName =  (name: string) => (cls: { new (...args: any[]): {} }) => {
   cls.prototype.name = name
}
@AddName('name')
class A {
    age = 18
}
const a = new A()
console.log(a.name)
console.log(a.age)

方法裝飾器

方法裝飾器的語法如下,你可以獲取到當前類,方法名,以及該屬性的描述符

const log = () => {
    return  (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {
        console.log(target, propertyKey, descriptor)
    };
}
class A {
    @log
    say() {}
}

打印如下

A: {},  "say",  {
  "writable": true,
  "enumerable": false,
  "configurable": true

那么方法裝飾器可以用來做什么呢?
AOP就是其中一個例子

AOP(面向切面編程)

在軟件業(yè),AOP為Aspect Oriented Programming的縮寫,意為:[面向切面編程],通過[預編譯]方式和運行期間動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(shù)。

AOP是[OOP]的延續(xù),是軟件開發(fā)中的一個熱點,也是[Spring]框架中的一個重要內(nèi)容,是[函數(shù)式編程]的一種衍生范型。利用AOP可以對業(yè)務(wù)邏輯的各個部分進行隔離,從而使得業(yè)務(wù)邏輯各部分之間的[耦合度]降低,提高程序的可重用性,同時提高了開發(fā)的效率。

這貼一段百科對AOP的簡介
下面給一個簡單的例子,我們可以對函數(shù)執(zhí)行過程進行

const log = () => {
    return  (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {
        const oldFn = descriptor.value
        descriptor.value = function (...args:any[]) {
            console.log('在函數(shù)執(zhí)行前');
            const res = oldFn.apply(this, args);
            console.log('在函數(shù)執(zhí)行后', res);
            return res;
        }
    };
}
class A {
    @log()
    say() {
        return 'Hello world'
    }
}
new A().say()

執(zhí)行結(jié)果如下

[LOG]: "在函數(shù)執(zhí)行前"  

* * *

[LOG]: "在函數(shù)執(zhí)行后", "Hello world"

以上就是Typescript裝飾器AOP示例詳解的詳細內(nèi)容,更多關(guān)于Typescript裝飾器AOP的資料請關(guān)注腳本之家其它相關(guān)文章!

運行結(jié)果如下,可以看到下面的數(shù)據(jù)和上方使用mysql客戶端查出來結(jié)果一致

The solution is:  [{"name":"jym","age":"1"},{"name":"jym2","age":"2"},{"name":"jym3","age":"3"},{"name":"jym4","age":"4"}]

通過mysql2這個包,我們就可以用node.js連接數(shù)據(jù)庫了,可以使用一些基礎(chǔ)的API來直接操作mysql數(shù)據(jù)庫;比如上面的代碼中就執(zhí)行了'SELECT * FROM user'這個sql語句

除了使用這種基礎(chǔ)庫之外,我們還可以使用ORM(對象關(guān)系映射器)框架來連接數(shù)據(jù)庫,直接用OOP的方式來編寫模型和方法,ORM框架會幫助你生成對應(yīng)的sql語句,這樣就可以把關(guān)注點放在業(yè)務(wù)上面,而不用編寫SQL語句。這可以讓你的代碼更加簡潔和可維護

目前在nodejs中常用的ORM有prisma,sequlize,typeorm等等,下回我們就來嘗試一下如何用ORM來連接數(shù)據(jù)庫

以上就是Node.js連接數(shù)據(jù)庫實現(xiàn)過程詳解的詳細內(nèi)容,更多關(guān)于Node.js連接數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • TypeScript實現(xiàn)類型安全的EventEmitter

    TypeScript實現(xiàn)類型安全的EventEmitter

    這篇文章主要為大家介紹了TypeScript實現(xiàn)類型安全的EventEmitter示例詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • postman數(shù)據(jù)加解密實現(xiàn)APP登入接口模擬請求

    postman數(shù)據(jù)加解密實現(xiàn)APP登入接口模擬請求

    對于Postman的使用,一般情況下只要發(fā)發(fā)確定的請求與參數(shù)就可以的了,然而,在使用的時候,尤其是接口測試時,請求接口的設(shè)計里面都有數(shù)據(jù)加密,參數(shù)驗簽,返回數(shù)據(jù)也有進行加密的,這個時候就需要使用一些腳本做處理,模擬app登入請求的操作
    2021-08-08
  • 開發(fā)typescript項目tsconfig.json配置及選項使用解析

    開發(fā)typescript項目tsconfig.json配置及選項使用解析

    這篇文章主要為大家介紹了tsconfig.json配置及選項使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • TypeScript使用strictnullcheck實戰(zhàn)解析

    TypeScript使用strictnullcheck實戰(zhàn)解析

    這篇文章主要為大家介紹了TypeScript使用strictnullcheck實戰(zhàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • TypeScript實現(xiàn)十大排序算法之歸并排序示例詳解

    TypeScript實現(xiàn)十大排序算法之歸并排序示例詳解

    這篇文章主要為大家介紹了TypeScript實現(xiàn)十大排序算法之歸并排序示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • typescript難學嗎?前端有必要學?該怎么學typescript

    typescript難學嗎?前端有必要學?該怎么學typescript

    TypeScript代碼與?JavaScript?代碼有非常高的兼容性,無門檻,你把?JS?代碼改為?TS?就可以運行。TypeScript?應(yīng)該不會脫離?JavaScript?成為獨立的語言。學習?TypeScript?應(yīng)該主要指的是學習它的類型系統(tǒng)。
    2022-12-12
  • ThreeJS?入門如何渲染出第一個3D圖形

    ThreeJS?入門如何渲染出第一個3D圖形

    這篇文章主要為大家介紹了ThreeJS?入門之如何渲染出第一個3D圖形實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • js 獲取今天以及過去日期

    js 獲取今天以及過去日期

    這篇文章主要介紹了js獲得當前系統(tǒng)日期時間以及過去系統(tǒng)日期時間的方法,涉及javascript操作日期時間的相關(guān)技巧,示例代碼如下,需要的朋友可以參考下
    2017-04-04
  • jsf實現(xiàn)微信小程序簡潔登錄頁面(附源碼)

    jsf實現(xiàn)微信小程序簡潔登錄頁面(附源碼)

    這篇文章主要介紹了實現(xiàn)微信小程序簡潔登錄頁面?,對于正在學習的小伙伴都有一定的參考價值,需要的小伙伴可以參考一下
    2022-01-01
  • TypeScript手寫一個簡單的eslint插件實例

    TypeScript手寫一個簡單的eslint插件實例

    這篇文章主要為大家介紹了TypeScript手寫一個簡單的eslint插件實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02

最新評論