jYD框架使用
jQuery是一个非常好的框架,涉及的内容比较多,随着现在浏览器的发展,原生JS的功能越来越强大,jQuery包含内容很多,但是常用的功能无非涉及到Dom操作,事件,样式,表单和Ajax交互。引入那么大的库,感觉很多又没有用到,至此萌发出自己构建一个JS轻量级库的想法,此库只实现常用的需求点,同时对于IE等老版本浏览器不兼容,让此JS能卸下历史负担,立足当下。代码大约14KB,已经上传github地址: https://github.com/JackWangCUMT/jYD,
最后,限于个人精力有限,此框架难免有不足之处,也欢迎发送意见到邮箱进行反馈。
1 命名
一个JS框架,首先需要起一个名字,我思考再三,最终决定用我给即将出生的孩子起的名字允迪(YUNDI)来命名,取首字母,即jYD. 允迪取自 南朝·梁·任昉《为萧扬州荐荐士表》:“窃见秘书丞琅玡臣王暕,年二十一,字思晦,七叶重光,海内冠冕。神清气茂,允迪中和。”,允迪有诚实遵循的意思。
2 框架构建
为了方便后续的分模块开发,采用如下JS模式进行框架构建,此模块有私有变量和函数,有公有函数,m.方法即可以外部访问。
- //(C) 2017 wangming all rights reserved
- //email:wangmingemail@163.com
- var jYD = (function(m) {
- //private
- var _ver = 1.0;
- var _toString = Object.prototype.toString;
- _log = function(msg) {
- console.log(msg);
- }
- //public
- m.log = function(msg) {
- _log(msg);
- }
- return m;
- }(jYD || {}));
事件绑定,采用如下的代码段进行实现:
- function _on(obj, type, handle) {
- try { // Chrome、FireFox、Opera、Safari、IE9.0+
- obj.addEventListener(type, handle, false);
- } catch (e) {
- try { // IE8.0-
- obj.attachEvent('on' + type, handle);
- } catch (e) { // 早期浏览器
- obj['on' + type] = handle;
- }
- }
- var events = obj['the' + type];
- if (!events) {
- events = obj['the' + type] = [];
- events.push(handle);
- }
- }
方法连缀的实现,可以在方法后return this来实现:
- m.first = function() {
- for (var i = 0, e; e = _ele[i++];) {
- if (e.nodeType == 1)
- _ele = e;
- }
- return this;
- };
- m.last = function() {
- var len = _ele.length;
- for (var i = len - 1, e; e = _ele[i--];) {
- if (e.nodeType == 1)
- _ele = e;
- }
- return this;
- };
3 jYD使用
- <script src="jYD.js"></script> //引入js
Dom
- jYD.$("#txt2").ele().value
- jYD.$("#frm input").ele()
- jYD.$("input:checked").ele()[0].value
- jYD.$("input[type=text]").ele()[0].value
- jYD.$(".classname").ele()[0].value
- jYD.$(".classname").first().ele()
Form
- var _json = {
- "name3": "name3",
- "name6": "name6",
- "name7": "name7",
- "name2": "2017-08-08",
- "name1": "audi",
- "ajdsfa": false,
- "Fruit": "桃子",
- "fruit1": "香蕉",
- "hobby": ["音乐", "游泳"],
- };
- jYD.$("#frm").bindJson(_json)
- jYD.$("#frm").serialize() //name3=name3&name6=name6&name7=name7&name2=2017-08-08
- jYD.$("#frm").reset()
- jYD.$("input").disabled()
- jYD.$("select").disabled()
- jYD.$("button").disabled()
- jYD.$("input").enable()
- jYD.$("select").enable()
- jYD.$("button").enable()
Event
- jYD.$("#btnok").off("click").on("click", function(e) {
- console.log(decodeURIComponent(jYD.$("#frm").serialize()));
- });
- //custom Event
- var sender = jYD.$("#cediv").ele();
- var target = jYD.$("#btnce").ele();
- jYD.createCE(sender, "divbtnclick", {
- detail: {
- tag: sender,
- msg: "hello"
- }
- }, target, "click");
- //冒泡
- jYD.$("#cediv").on("divbtnclick", function(e) {
- console.log(e);
- });
CSS
- jYD.$(".clss").addClass("red").removeClass("clss")
- jYD.$("#txt2").css({"backgroundColor":"#eee"});
Ajax
- jYD.post('/api/api3.ashx')
- .params(jYD.$("#frm").serialize() + "&table=22")
- .success(function (data) {
- console.log(data);
- }).error(function (data) {
- console.log("eror" + data);
- })
- .send();
Other
- jYD.is.Number(99)
- jYD.isElement(document.getElementById("frm"))
- jYD.is.Array([])
jYD框架使用的更多相关文章
- 避免重复造轮子的UI自动化测试框架开发
一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 旺财速啃H5框架之Bootstrap(五)
在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
- Scrapy框架爬虫初探——中关村在线手机参数数据爬取
关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
- 旺财速啃H5框架之Bootstrap(四)
上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- Hibernatel框架关联映射
Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...
随机推荐
- tomcat环境变量详细配置步骤
这篇文章主要为大家详细介绍了tomcat环境变量配置步骤,包括JDK环境变量配置,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了tomcat环境变量的配置教程,供大家参考,具体内容如下 1.=== ...
- Centos 安装lnmp完整版
1.使用putty或类似的SSH工具登录服务器: 登录后运行 screen -S lnmp 2.下载并安装LNMP一键安装包: 我是CentOS系统,所以运行: wget -c http://soft ...
- python数据类型内置方法 字符串和列表
1.字符串 内置方法操作# a = 'qqssf'#1. print(a[-1:]) #按索引取,正向从0开始,反向从-1开始# print(len(a)) #取长度# a = 'qqssf'# 2. ...
- BZOJ4543[POI2014]Hotel加强版——长链剖分+树形DP
题意参见BZOJ3522 n<=100000 数据范围增强了,显然之前的转移方程不行了,那么不妨换一种. 因为不能枚举根来换根DP,那么我们描述的DP方程每个点要计算三个点都在这个点的子树内的方 ...
- HttpClient异步调用引发的程序挂起问题排查及解决
在搭建搭建分布式系统时,基础组件与框架的重要性不言而喻.但是如果组件出现bug,真的很要命.虽然我们通过各种单元测试,拼命找bug,但是总有一些问题被盲目自信蒙蔽了双眼,很多时候我们认为这段代码100 ...
- redis:消息发布与订阅频道
1. 发布与订阅频道 消息发布与订阅像收音机与广播台的关系 1.1. publish channel message 发布频道 语法:publish channel message 作用:发布频道消息 ...
- R语言语法基础二
R语言语法基础二 重塑数据 增加行和列 # 创建向量 city = c("Tampa","Seattle","Hartford"," ...
- 深入理解JVM(6)——JVM性能调优实战
如何在高性能服务器上进行JVM调优:以便充分利用高性能服务器的硬件资源,有两种JVM调优方案. 一. 采用64位操作系统,并为JVM分配大内存 分析:如果JVM中堆内存太小,那么就会频繁 ...
- CSS之优先级
css的优先级 所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序. 样式表中的特殊性描述了不同规则的相对权重,它的基本规则是: 1 内联样式表的权值最高 sty ...
- jQusery .基础
1.jQusery 的基本用法 <%@ page language="java" contentType="text/html; charset=UTF-8&quo ...