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

创建一个网站 站点根文件夹为为什么要进行网络整合营销?

创建一个网站 站点根文件夹为,为什么要进行网络整合营销?,谷歌seo推广服务,韩国男女直接做视频网站一、装饰器核心作用与启用 1. ​​本质与定位​​ ​​元编程工具​​#xff1a;在编译阶段动态修改类/方法/属性的行为#xff08;不改变源码#xff09;​​启用配置​​#xff1a;需在 tsconfig.json 中开启#xff1a; {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 */ } } 三、开发实践建议 ​​组合优于继承​​ 通过装饰器叠加功能如日志权限缓存避免深度继承链。 ​​元数据反射​​ 结合 reflect-metadata 库实现高级场景如类型序列化。 ​​调试技巧​​ 使用 descriptor.value 保留原始方法引用避免在装饰器内直接修改 target 原型破坏封装性 ​​框架选择​​ ​​框架​​​​装饰器应用重点​​Angular依赖注入、组件生命周期挂钩NestJS控制器路由、中间件拦截器TypeORM实体字段映射、数据库关系定义 ​​总结​​ 装饰器通过 ​​非侵入式增强​​ 解决了代码重复问题如日志/验证在框架开发、AOP 编程、元数据管理等场景优势显著。需注意其仍为实验性特性建议在严格类型约束下使用避免过度抽象。
http://www.w-s-a.com/news/742475/

相关文章:

  • 阜阳做网站的公司阳江招聘网最新消息
  • 织梦可以做哪些类型型网站wordpress 融资
  • 建设银行手机银行官方网站下载安装腾讯企点账户中心
  • 品牌设计网站有哪些商务网站建设平台
  • 新增网站备案时间什么是软件外包产业
  • 张家界做网站买了网站模版怎么做
  • 六安品牌网站建设怎么样知名商城网站建设报价
  • 怎么上传自己做的网站杭州网站建设公司平台
  • 网站开发程序是什么知名的电子商务网站
  • 做pc端网站好么平台推广是什么意思
  • 农业信息网站建设意义淘宝官网首页网址
  • 重庆网站设计公司价格贵阳网站建设app开发
  • dw做网站怎么换图片编写网页所用的语言是
  • 外贸网站收录工具个人网站的备案
  • 正规的网站建设工作室海外高延迟服务器做网站
  • 网站设计确认函合肥做网站维护的公司
  • 小说网站推荐网站开发语言怎么查
  • 网页制作基础教程慕课版电子版那种登录才能查看的网站怎么做优化
  • 制作网站用的域名网站域名注册信息查询
  • 公司域名查询官方网站女教师遭网课入侵直播录屏曝
  • 网站开发社交网络功能的作用腾讯公司网站
  • 网站建设需要微信账号和密码网站建设工作汇报
  • 国家城乡住房和建设部网站西安私人网站
  • 天津高端网站定制seo实战教程
  • 网站文章怎么做才能被快速收录网站备案核验系统
  • 子网站建设方案l建设银行网站
  • 免费看舆情网站网站备案用户名忘了怎么办
  • 地方门户网站的分类网站的方案
  • 沧州哪里做网站网站的建设是什么
  • 设计公司海报秦皇岛seo网站推广