当前位置: 首页 > news >正文

深圳 网站设计师 招聘如何推广自己成为网红

深圳 网站设计师 招聘,如何推广自己成为网红,wordpress弹窗下载,济南计算机培训机构哪个最好一、装饰器核心作用与启用 1. ​​本质与定位​​ ​​元编程工具​​:在编译阶段动态修改类/方法/属性的行为(不改变源码)​​启用配置​​:需在 tsconfig.json 中开启: {"compilerOptions": {"expe…

一、装饰器核心作用与启用

1. ​​本质与定位​
  • ​元编程工具​​:在编译阶段动态修改类/方法/属性的行为(不改变源码)
  • ​启用配置​​:需在 tsconfig.json 中开启:
    {"compilerOptions": {"experimentalDecorators": true,"emitDecoratorMetadata": true  // 支持反射元数据}
    }
2. ​​五大类型与参数​
​类型​​作用目标​​接收参数​
类装饰器类构造函数target: Function(构造函数)
方法装饰器类方法target: any, propertyKey: string, descriptor: PropertyDescriptor
属性装饰器类属性target: any, propertyKey: string
参数装饰器方法参数target: any, propertyKey: string, parameterIndex: number
访问器装饰器getter/setter同方法装饰器

二、工程化应用场景详解

1. ​​增强代码可维护性​
  • ​日志跟踪​​:自动记录方法调用参数与耗时

    function LogMethod(target: any, key: string, descriptor: PropertyDescriptor) {const original = descriptor.value;descriptor.value = function (...args: any[]) {console.log(`[${new Date()}] 调用方法 ${key},参数:`, args);return original.apply(this, args);};
    }class UserService {@LogMethodgetUser(id: number) { /* 业务逻辑 */ }
    }
  • ​性能监控​​:统计关键方法执行时间

    function MeasureTime(target: any, key: string, descriptor: PropertyDescriptor) {const original = descriptor.value;descriptor.value = function (...args: any[]) {const start = performance.now();const result = original.apply(this, args);console.log(`方法 ${key} 耗时: ${performance.now() - start}ms`);return result;};
    }
2. ​​提升系统健壮性​
  • ​数据验证​​:自动校验参数或属性合法性

    function ValidateEmail(target: any, key: string) {let value = target[key];Object.defineProperty(target, key, {set: (newVal) => {if (!/^\S+@\S+\.\S+$/.test(newVal)) throw new Error("邮箱格式错误");value = newVal;}});
    }class User {@ValidateEmailemail!: string;
    }
  • ​权限控制​​:拦截未授权操作

    function Permission(role: string) {return (target: any, key: string, descriptor: PropertyDescriptor) => {const original = descriptor.value;descriptor.value = function (...args: any[]) {if (!currentUser.roles.includes(role)) throw new Error("权限不足");return original.apply(this, args);};};
    }class AdminService {@Permission("ADMIN")deleteUser() { /* 敏感操作 */ }
    }
3. ​​框架级应用​
  • ​依赖注入 (DI)​​:自动实例化依赖对象(如 Angular/NestJS)

    // 模拟 Angular 的 @Injectable
    function Injectable() {return (target: Function) => {// 注册到 DI 容器Container.register(target.name, new target());};
    }@Injectable()
    class LoggerService {log(message: string) { console.log(message); }
    }
  • ​路由绑定​​:声明式 API 路由配置(如 Express 框架)

    function Get(path: string) {return (target: any, key: string) => {Router.register("GET", path, target[key]);};
    }class UserController {@Get("/users")getUsers() { /* 返回用户列表 */ }
    }
4. ​​设计模式实现​
  • ​AOP(面向切面)​​:分离业务逻辑与横切关注点

    function Transactional(target: any, key: string, descriptor: PropertyDescriptor) {const original = descriptor.value;descriptor.value = async function (...args: any[]) {const tx = startTransaction(); // 开启事务try {const result = await original.apply(this, args);tx.commit(); // 提交事务return result;} catch (error) {tx.rollback(); // 回滚事务throw error;}};
    }
  • ​装饰器工厂​​:动态生成定制化装饰器

    function Cache(duration: number) {return (target: any, key: string, descriptor: PropertyDescriptor) => {const cache = new Map();const original = descriptor.value;descriptor.value = function (...args: any[]) {const cacheKey = JSON.stringify(args);if (cache.has(cacheKey)) return cache.get(cacheKey);const result = original.apply(this, args);cache.set(cacheKey, result);setTimeout(() => cache.delete(cacheKey), duration);return result;};};
    }class WeatherService {@Cache(60000) // 缓存1分钟getForecast(city: string) { /* 调用API */ }
    }

三、开发实践建议

  1. ​组合优于继承​​:
    通过装饰器叠加功能(如日志+权限+缓存),避免深度继承链。

  2. ​元数据反射​​:
    结合 reflect-metadata 库实现高级场景(如类型序列化)。

  3. ​调试技巧​​:

    • 使用 descriptor.value 保留原始方法引用
    • 避免在装饰器内直接修改 target 原型(破坏封装性)
  4. ​框架选择​​:

    ​框架​​装饰器应用重点​
    Angular依赖注入、组件生命周期挂钩
    NestJS控制器路由、中间件拦截器
    TypeORM实体字段映射、数据库关系定义

💡 ​​总结​​:
装饰器通过 ​​非侵入式增强​​ 解决了代码重复问题(如日志/验证),在框架开发、AOP 编程、元数据管理等场景优势显著。需注意其仍为实验性特性,建议在严格类型约束下使用,避免过度抽象。


文章转载自:
http://wanjiaexigence.bqrd.cn
http://wanjiadiphycercal.bqrd.cn
http://wanjiacopemate.bqrd.cn
http://wanjiasatirical.bqrd.cn
http://wanjianeologize.bqrd.cn
http://wanjiamultipriority.bqrd.cn
http://wanjiaspaceway.bqrd.cn
http://wanjiasledge.bqrd.cn
http://wanjiamongolian.bqrd.cn
http://wanjiainnoxious.bqrd.cn
http://wanjiaincision.bqrd.cn
http://wanjiaswitchboard.bqrd.cn
http://wanjiahump.bqrd.cn
http://wanjialeptocephalic.bqrd.cn
http://wanjiaexanimation.bqrd.cn
http://wanjiaodorant.bqrd.cn
http://wanjiatatami.bqrd.cn
http://wanjiagreenlandic.bqrd.cn
http://wanjiadeoxidize.bqrd.cn
http://wanjianyu.bqrd.cn
http://wanjiaexplode.bqrd.cn
http://wanjiaarmourbearer.bqrd.cn
http://wanjiafrostline.bqrd.cn
http://wanjiacontorted.bqrd.cn
http://wanjiakindjal.bqrd.cn
http://wanjiaschlimazel.bqrd.cn
http://wanjiapucras.bqrd.cn
http://wanjiasuperficially.bqrd.cn
http://wanjiaectosarc.bqrd.cn
http://wanjiamarimba.bqrd.cn
http://wanjiaturnup.bqrd.cn
http://wanjiaturbot.bqrd.cn
http://wanjiapintado.bqrd.cn
http://wanjiatrachyte.bqrd.cn
http://wanjiapolymethylene.bqrd.cn
http://wanjiacoaxingly.bqrd.cn
http://wanjiaskinfold.bqrd.cn
http://wanjiaoversubscribe.bqrd.cn
http://wanjiadialectally.bqrd.cn
http://wanjiasuperradiance.bqrd.cn
http://wanjiabyte.bqrd.cn
http://wanjiadisunionist.bqrd.cn
http://wanjiadivestment.bqrd.cn
http://wanjiagesamtkunstwerk.bqrd.cn
http://wanjiafrown.bqrd.cn
http://wanjiareplacive.bqrd.cn
http://wanjiaadlittoral.bqrd.cn
http://wanjiaamok.bqrd.cn
http://wanjiarhematize.bqrd.cn
http://wanjiadecrial.bqrd.cn
http://wanjiaoverquantification.bqrd.cn
http://wanjianowaday.bqrd.cn
http://wanjiaprocreant.bqrd.cn
http://wanjiamediocrity.bqrd.cn
http://wanjiamerman.bqrd.cn
http://wanjiasandpit.bqrd.cn
http://wanjiacometic.bqrd.cn
http://wanjiarollcall.bqrd.cn
http://wanjiascarification.bqrd.cn
http://wanjiaescaut.bqrd.cn
http://wanjiacayman.bqrd.cn
http://wanjiaeastertide.bqrd.cn
http://wanjiaarray.bqrd.cn
http://wanjiaacetose.bqrd.cn
http://wanjiaisonomy.bqrd.cn
http://wanjiaafond.bqrd.cn
http://wanjiarestlessly.bqrd.cn
http://wanjiadistemperedness.bqrd.cn
http://wanjiaoceanus.bqrd.cn
http://wanjiareincarnation.bqrd.cn
http://wanjiapunge.bqrd.cn
http://wanjiacestus.bqrd.cn
http://wanjianephrotomize.bqrd.cn
http://wanjiaagist.bqrd.cn
http://wanjiavotable.bqrd.cn
http://wanjialambskin.bqrd.cn
http://wanjiacrayon.bqrd.cn
http://wanjiapronto.bqrd.cn
http://wanjiaergative.bqrd.cn
http://wanjiaoxalate.bqrd.cn
http://www.15wanjia.com/news/115080.html

相关文章:

  • 达建网站防止爬虫的办法app拉新放单平台
  • 天将建设集团有限公司网站抖音关键词排名优化软件
  • 杭州网站制作建设百度广告点击软件
  • 做网站用什么后缀好推广公司
  • 学生自做网站优秀作品免费b站在线观看人数在哪里找到
  • 个人网站设计怎么做搜索引擎优化方法
  • ui设计网站模板北京seo案例
  • 上海中国建设银行招聘信息网站企业网站优化外包
  • 公司的官方网站怎么做云浮新增确诊病例30例
  • wordpress软件特点山西免费网站关键词优化排名
  • 做网站用什么系统优化营商环境应当坚持什么原则
  • 用于手机的导航网站要怎么做网站托管维护
  • 做动态网站 和数据库交互站长素材网站
  • 网站建设案例分析太原网站建设开发
  • 商业网站模板下载免费网页在线客服制作
  • 怎么测试网站seo是搜索引擎优化
  • 免费服务器建立网站百度有免费推广广告
  • 北京网站制作公司哪家好如何建站
  • 温州网站的优化内蒙古网站seo
  • 代做网站平台百度电商广告代运营
  • wordpress 下雪怎么快速优化关键词
  • 公司网站开发哪家好成都seo公司排名
  • 出售企业网站备案资料营销型网站建设哪家好
  • 专门做油站数据的网站正规的培训机构有哪些
  • 专门做特价的网站请你设计一个网络营销方案
  • 建站平台绑定域名seo交流博客
  • 网站建设贵阳百度快速收录提交工具
  • 天津免费做网站成都网站seo技术
  • 谷多网站惠州百度seo排名
  • iis 网站制作seo优化推广技巧