首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于发布-订阅原生 JS 插件封装

用原生 JS 封装一个动画插件。效果如下: ? 这个飞驰小球看起来是不是特有灵性呢?没错,它就是用原生JS实现。 接下来,就让我们深入细节,体会其中奥秘。...一、需求分析 封装一个插件,将小球 DOM 对象作为参数传入,使得小球在鼠标按下和放开后能够运动,在水平方向做匀减速直线运动,初速度为鼠标移开瞬间速度,在竖直方向运动类似于自由落体运动。...四、采用发布-订阅 估计读完这段代码,你也体会到了这个功能实现是非常容易实现。但是实际上,作为一个插件标准来讲,这段代码是存在一些潜在问题,这些问题并不是逻辑上问题,而是设计问题。...在这里我并不是简单讲讲效果实现、贴贴代码就过去了,而是带你体验了封装插件整个过程。有了发布-订阅场景,理解这个设计思想就更加容易了。...回过头看,比如 DOM2 事件池机制,vue 生命周期钩子等等,你就会明白它们为什么要这么设计,原理上和这次封装没有区别,这样一想,很多东西就更加清楚了。

3.1K20

原生JS封装Ajax插件(同域&&jsonp跨域)

前言 抛出一个问题,其实所谓熟悉原生JS,怎样程度才是熟悉呢? 用原生Js封装了一个Ajax插件,引入一般项目,传传数据,感觉挺可行。。。...Ajax核心,创建XHR对象 Ajax技术核心是XMLHttpRequest对象(简称XHR),IE5是第一款引入XHR对象浏览器,而IE5中XHR对象是通过MSXML库中一个ActiveX对象实现...一个域名组成: http:// www abc.com: 8080 / scripts/AjaxPlugin.js 协议 子域名 主域名 端口号 请求资源地址 当协议、子域名、主域名、端口号中任意一个不相同时...主要原理是利用了script 标签可以跨域请求特点,由其 src 属性发送请求到服务器,服务器返回 JS 代码,网页端接受响应,然后就直接执行了,这和通过 script 标签引用外部文件原理是一样...params.fail&¶ms.fail({message:"over time"}); window[cbName]=null; },params.time); } 插件详细解析及使用方法见

2.9K21
您找到你想要的搜索结果了吗?
是的
没有找到

UISYS封装ECharts插件

摘要 AIroot UISYS 工具模块封装能力很强,可以方便融合第三方插件能力。可以按照开发者思想对已有插件升级改造, 例如 ECharts。...ECharts是目前国内数据可视化经常使用插件,它基于canvas渲染,比以往图形控件更加流程。...今天我们用 AIroot UISYS来封装ECharts,来作为一个标签,然后直接引入我们HTML代码中。 1....准备 我们新建一个目录,命名为 MyTest,然后下载 Echarts js 包保存到当前目录js文件夹下。...这套例子写非常简单,如果考虑到兼容框架特性,实际上还有很多要做。 写插件吗,我觉得UISYS最贴近原生代码量少,不用绕脑子,直接用原生插件,非常好。

82911

JS-cookie封装

oDate.setDate(oDate.getDate()+iDay);//设置延期日 document.cookie = name+'='+value+';expires='+oDate;//到这里oDate...是延期后时间毫秒数 setCookie('xxx','www',3)//调用传参,前俩参数记得加‘单引号’ getCookie()中: getCookie:传一个参数,就是要查找记录name值,讲现有的...cookie字符串进行切割扔个arr,此时arr就是{name=1,name2=2,name3=3...}一个object,就像一个json,此时,再遍历,将arr每一个元素分别提取出来然后通过等号切割...,扔个arr2,这样,arr2就成了俩值得数组,遍历一遍,就被扔进来一对,把扔进来这对进行判断,如果他名字等于传进来要查找参数值,那么arr2内部第2个数值就是要找名字对应值,把他弹出来。...否则,遍历完了还没有,就弹回空或者其他“没找到”等提示语。 removeCookie()中: 有效期时间设置为-1,让计算机以为这条数据是昨天过期,自己删除本条数据。 ?这里第二个参数为什么是1

8.1K51

使用vue封装右键菜单插件

在package.json中,CLI默认是把vue和core-js放在dependencies下,我们开发插件是要给其他开发者引用,如果我们打包产物中包含Vue包的话可能会引发各种问题,比如用户可能会在引入我们包之后会在...{ "declaration": true,// 是否生成声明文件 "declarationDir": "dist/lib",// 声明文件打包位置 } 创建vue.config.js...我们可以通过手动将其设置为false,让其在打包时使用内联样式,这样就能解决样式失效问题了,我们在vue.config.js中加入下述代码。...,经过一番思考后,我又想到了下述思路: 将上述加载组件实现封装成一个函数,将创建div元素作为返回值。...在插件全局声明一个变量menuVM,默认声明为null 指令内部触发右键事件时,调用我们封装函数,用menuVM去接收其返回值 此时我们创建一个全局点击事件监听,如果menuVM不为null,我们就把这个元素移除

2.6K30

flutter即时通信(im)插件封装

封装一个腾讯云im,以便于flutter开发者可以方便继承im到自己应用中,传送门在此 使用之前注意事项 如果你之前没有使用过腾讯云,请仔细阅读这段文字,如果你已经对腾讯云im了如指掌,可以越过,但建议还是熟悉以下...因为这个库是基于腾讯云im,因此需要去云im申请一个应用,阅读这篇文章可以获得以下知识: 1、appid怎么来 2、账号及其对应sig如何来,已经推荐sig生成方式(当然这个是后台同学关注...登录 登出 获取会话列表 删除一个会话 获取私信会话消息[群聊消息目前没有封装] 注意,私信发送方资料云im改成了异步方式,因此,这个版本不在返回!...建议用户自己查询一次,最好方式是将用户资料存储在本地db中,并 发送图片消息 注意,图片消息中图片云im需要是图片本地路径。...监听新消息 监听有新会话 注意,和新消息是一个消息通道,只不过收到内容是`[]`,对一个空数组,此时需要去主动调用4获取会话列表来查最新会话列表 todo 根据需要,可以提issue,或者接受

15.7K102

js插件教程

;我为了方便都写到一个html中了;请把这个script标签中内容单独写在一个js文件里 //整个插件写在一个立即执行函数里;就是function(){}();函数自执行;保证里面的变量不会与外界互相影响...号(叹号)或者;(分号)这不是写错了,为了防止那个二货写js结束没有分号;而可能发生报错 /* ;function(win,doc,$,undefined){ }(window...比如你要点击按钮 添加input值到 div里 var addHtml = function(demo,btn){//插件名,调用时候直接new一下插件名就行了并传参数或者传对象(一般这个函数名手写字母大写比较好...add-1");//这里是实例1调用插件代码 new addHtml("demo-2","add-2"); //这里是实例2调用插件代码 //是不是明白为什么要写插件了;要封装...--这里是最简单插件写法;当然还有传对象参数插件等等。。。。-->

35.1K10
领券