<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      VonaJS AOP編程:魔術方法

      在VonaJS框架中,AOP編程包括三方面:控制器切面內部切面外部切面內部切面包括兩個能力:AOP Method魔術方法。這里我們簡要介紹一下魔術方法的用法。

      魔術方法

      魔術方法,允許我們在 Class 內部通過__get____set__切入動態屬性或方法

      舉例:Module Scope

      為了讓 IOC 容器的使用更加簡潔和直觀,VonaJS 推薦優先使用依賴查找策略,從而使用更少的裝飾器函數,使用更少的類型標注。通過Module Scope對象訪問模塊提供的資源,就是踐行依賴查找策略的機制之一

      比如,模塊 demo-student 中有一個 model student,用于 crud 操作。可以這樣使用 model:

      import { ModelStudent } from '../model/student.ts';
      
      async findMany(params) {
        const model = this.bean._getBean(ModelStudent);
        return await model.selectAndCount(params);
      }
      

      使用魔術方法:

      async findMany(params) {
        return await this.scope.model.student.selectAndCount(params);
      }
      
      • this.scope.model.xxx: 通過魔術方法動態獲取當前模塊中的 model 實例

      舉例:CRUD(魔術方法)

      Vona ORM 采用魔術方法的機制進一步簡化操作數據的代碼

      比如,通過字段id查詢學生信息,代碼如下:

      async findOne(id) {
        return await this.scope.model.student.get({ id });
      }
      

      使用魔術方法:

      async findOne(id) {
        return await this.scope.model.student.getById(id);
      }
      
      • 系統自動從 method name getById中解析出參數id,然后調用實際的 CRUD 方法,這里就是: get({ id })

      創建Class

      可以在任何 Class 中實現魔術方法。下面,以 Service 為例,在模塊 demo-student 中創建一個 Service color,代碼如下:

      • 如何創建 Service,參見: Service
      import { BeanBase } from 'vona';
      import { Service } from 'vona-module-a-bean';
      
      @Service()
      export class ServiceColor extends BeanBase {}
      

      __get__

      然后,通過__get__實現顏色值的獲取

      1. 添加代碼骨架

      在 VSCode 編輯器中,輸入代碼片段aopmagicget,自動生成代碼骨架:

      @Service()
      export class ServiceColor extends BeanBase {
      + protected __get__(prop: string) {}
      }
      

      2. 實現自定義邏輯

      @Service()
      export class ServiceColor extends BeanBase {
      + private _colors = {
      +   red: '#FF0000',
      +   green: '#00FF00',
      +   blue: '#0000FF',
      + };
      
        protected __get__(prop: string) {
      +   return this._colors[prop];
        }
      }
      

      3. 添加類型合并

      通過接口類型合并的機制為顏色提供類型定義

      export interface ServiceColor {
        red: string;
        green: string;
        blue: string;
      }
      

      4. 使用魔術方法

      async test() {
        console.log(this.scope.service.color.red);
        console.log(this.scope.service.color.green);
        console.log(this.scope.service.color.blue);
      }
      

      __set__

      然后,通過__set__實現顏色值的設置

      1. 添加代碼骨架

      在 VSCode 編輯器中,輸入代碼片段aopmagicset,自動生成代碼骨架:

      @Service()
      export class ServiceColor extends BeanBase {
      + protected __set__(prop: string, value: any): boolean {
      +   return false;
      + }
      }
      

      2. 實現自定義邏輯

      @Service()
      export class ServiceColor extends BeanBase {
        private _colors = {
          red: '#FF0000',
          green: '#00FF00',
          blue: '#0000FF',
      +   black: '',
        };
      
        protected __set__(prop: string, value: any): boolean {
      +   if (this._colors[prop] === undefined) return false;
      +   this._colors[prop] = value;
      +   return true;
        }
      }
      
      • 如果為prop設置了值,返回true,否則返回false

      3. 添加類型合并

      通過接口類型合并的機制為顏色提供類型定義

      export interface ServiceColor {
        red: string;
        green: string;
        blue: string;
      + black: string;
      }
      

      4. 使用魔術方法

      async test() {
        this.scope.service.color.black = '#000000';
        console.log(this.scope.service.color.black);
      }
      

      資源

      posted @ 2025-10-23 09:04  濮水大叔  閱讀(68)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产午夜福利视频第三区| 精品人妻系列无码一区二区三区| 精品无码久久久久久尤物 | 国产精品国产精品一区精品| 亚洲av成人无码天堂| 欧美疯狂xxxxbbbb喷潮| 国产精品老熟女一区二区| 怡红院一区二区三区在线| 久久精品免视看国产成人| 超碰伊人久久大香线蕉综合| 亚洲va成无码人在线观看天堂| 亚洲人妻精品一区二区| 亚洲一区二区三区蜜桃臀| 在线日韩一区二区| 狠狠色狠狠色综合日日不卡| 黄瓜一区二区三区自拍视频| 人人妻人人做人人爽| 亚洲午夜无码久久久久小说| 日韩av片无码一区二区不卡| 少妇大叫太大太爽受不了| 无码av岛国片在线播放| A级毛片免费完整视频| 亚洲国产中文字幕精品| 丰满少妇特黄一区二区三区| 日本少妇被黑人xxxxx| 国产精品久久久久7777| 亚洲免费成人av一区| 国产免费一区二区不卡| 亚洲精品www久久久久久| 日韩AV高清在线看片| 色窝窝免费播放视频在线| 国产精品综合色区在线观| 国产精品久久久久鬼色| 国产又爽又黄又无遮挡的激情视频 | 亚洲人成人网站色www| 三级网站视频在在线播放| 亚洲高潮喷水无码AV电影| 亚洲自拍偷拍福利小视频| 中国亚洲女人69内射少妇| 搡老女人老妇女老熟妇| 久久国产精品77777|