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

墨刀做网站上下滑动的交互个人怎么接外贸订单

墨刀做网站上下滑动的交互,个人怎么接外贸订单,做响应式网站的菜单栏,供应链管理八大流程Decorator 装饰器是一项实验性特性,在未来的版本中可能会发生改变 它们不仅增加了代码的可读性,清晰地表达了意图,而且提供一种方便的手段,增加或修改类的功能 若要启用实验性的装饰器特性,你必须在命令行或tsconfig…

Decorator 装饰器是一项实验性特性,在未来的版本中可能会发生改变

它们不仅增加了代码的可读性,清晰地表达了意图,而且提供一种方便的手段,增加或修改类的功能

若要启用实验性的装饰器特性,你必须在命令行或tsconfig.json里启用编译器选项

类装饰器  ClassDecorator

/*** 类装饰器  ClassDecorator* @param target  形参  target 是形参,可以是任何名字* @param  result  返回结果:构造函数* @param name* */
// const Base:ClassDecorator = (target)=>{
// 	target.prototype.heming  = "鹤鸣"
// 	target.prototype.fn = () =>{
// 		console.log('装饰器')
// 	}
// }// 如果用户要传参数可以使用(闭包 或者 函数柯里化 或者 工厂函数)
const Base = (name:string) => {const fn: ClassDecorator = (target) => {target.prototype.heming = nametarget.prototype.fn = () => {console.log('装饰器')}}return fn
}@Base('鹤鸣')
class Http {}const http = new Http() as any
console.log(http.heming)// 或者怕不兼容可以
class Http{}const http = new Http() as any
Base(Http)
http.fn()

方法装饰器 MethodDecorator 

/*** 方法装饰器 MethodDecorator 接受三个参数* @param target 原型对象 不再是构造函数* @param key 方法的名字* @param descriptor PropertyDescriptor 描述符* */
const Get = (url:string) => {const fn:MethodDecorator = (target:any, key , descriptor:PropertyDescriptor) => {axios.get(url).then((res) => {descriptor.value(res.data)})}return fn
}const Post = (url:string) => {const fn:MethodDecorator = (target:any,key, descriptor:PropertyDescriptor) => {axios.post(url).then((res)=>{descriptor.value(res.data)})}
}@Base('鹤鸣')
class Http {@Get('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')getList(@Result() data: any) {console.log(data.result.list, 'data')}@Post('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')create() {}
}

3.参数装饰器


/*** 参数装饰器 ParameterDecorator* @param  target 原型对象* @param  key 方法名* @param index 数据所在的位置* @param  reflect-metadata  数据的反射* */const Result = () => {const fn: ParameterDecorator = (target, key, index) => {Reflect.defineMetadata('key', 'result', target)}return fn
}@Base('鹤鸣')
class Http {@Nameheming: stringconstructor() {this.heming = '鹤鸣'}@Get('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')getList(@Result() data: any) {console.log(data, 'data')}// @Post('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')create() {}
}const http = new Http() as any

综合代码

// 1.类装饰器 ClassDecorator  target 返回的是一个构造函数
//2.属性装饰器 PropertyDecorator
//3.参数装饰器 ParameterDecorator
// 4.方法装饰器 MethodDecorator PropertyDescriptor
// 5.装饰器工长
// 6. import 'reflect-metadata'
// 7.axios
import axios from 'axios';
import 'reflect-metadata'/*** 类装饰器  ClassDecorator* @param target  形参  target 是形参,可以是任何名字* @param  result  返回结果:构造函数* @param name* */
// const Base:ClassDecorator = (target)=>{
// 	target.prototype.heming  = "鹤鸣"
// 	target.prototype.fn = () =>{
// 		console.log('装饰器')
// 	}
// }// 如果用户要传参数可以使用(闭包 或者 函数柯里化 或者 工厂函数)
const Base = (name: string) => {const fn: ClassDecorator = (target) => {target.prototype.heming = nametarget.prototype.fn = () => {// console.log('装饰器')}}return fn
}/*** 方法装饰器 MethodDecorator 接受三个参数* @param target 原型对象 不再是构造函数* @param key 方法的名字* @param descriptor PropertyDescriptor 描述符* */
const Get = (url: string) => {const fn: MethodDecorator = (target: any, _key: any, descriptor: PropertyDescriptor) => {let key = Reflect.getMetadata('key', target)axios.get(url).then((res) => {descriptor.value(key ? res.data[key] : res.data)})}return fn
}// const Post = (url:string) => {
// 	const fn:MethodDecorator = (target:any,key, descriptor:PropertyDescriptor) => {
// 		axios.post(url).then((res)=>{
// 			descriptor.value(res.data)
// 		})
// 	}
// }/*** 参数装饰器 ParameterDecorator* @param  target 原型对象* @param  key 方法名* @param index 数据所在的位置* @param  reflect-metadata  数据的反射* */const Result = () => {const fn: ParameterDecorator = (target, key, index) => {Reflect.defineMetadata('key', 'result', target)}return fn
}/*** 属性装饰器 PropertyDecorator* @param target 原型对象* @param key 属性* */
const Name: PropertyDecorator = (target, key) => {console.log(target, key)
}@Base('鹤鸣')
class Http {@Nameheming: stringconstructor() {this.heming = '鹤鸣'}@Get('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')getList(@Result() data: any) {console.log(data, 'data')}// @Post('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')create() {}
}const http = new Http() as any
// console.log(http.heming)// 或者怕不兼容可以
// class Http{
//
// }
//
// const http = new Http() as any
// Base(Http)
// http.fn()

http://www.ds6.com.cn/news/83232.html

相关文章:

  • wp网站做404线上销售平台都有哪些
  • 百度bch主机怎么做多个网站百度流量
  • wordpress建站模板名词解释seo
  • 中囯军事网googleseo排名公司
  • 网站建设服务那一个便宜绍兴seo推广公司
  • 北京考试学院网站首页宣传软文是什么意思
  • 贵州企业网站建设案例天津seo结算
  • 公司网站制作天强科技网络运营课程培训班
  • wordpress彩色内链seo网课培训
  • 网站建设大宇百度做广告怎么做
  • 学校网站查询学历个人网站怎么建立
  • 做网站的文案怎么写百度账号客服人工电话
  • 微友说是做网站维护让帮忙投注识图找图
  • 联想电脑网站建设策划书网站seo优化案例
  • 做微网站平台360优化大师官方下载最新版
  • 顺德网站建设多少钱活动推广文案
  • 怎么建公司网站账号如何宣传网站
  • dwcs5怎么做动态网站后台个人seo怎么赚钱
  • cms网站设计百度如何快速收录网站
  • 企业交易平台的网站制作多少钱网站站外优化推广方式
  • 手机网站左右滑动自动收录
  • 视频会议系统直播聊天网站开发百度网
  • 高薪招聘wordpress建站免费发布信息平台有哪些
  • 网站名称大全湖南网络优化服务
  • phpcms v9网站地图百度网盘账号登录入口
  • 开山云匠网seo网站关键词优化软件
  • 网站的标题优化怎么做茶叶网络推广方案
  • 安徽网站制作怎么创建自己的网站平台
  • 网站版式类型百度统计api
  • 哪个电商平台好做seo优化咨询