一个不撞南墙不回头的傻孩子
阅读tips 此文章是一个连续探索关于程序中的逻辑的如何管理的系列,在JavaScript中落地实践,理论上思想适用任何语言,建议从头看: 1. 逻辑管理 - 关于前端逻辑管理的设计和实现 概念解释 在新迭代之前,解释下之前博客中所说的一些概念,因为在内部分享的时候,也让很多人去疑惑。
切入思考点 组件化,解决了一组可以复用的功能,我们可使用一般的开源的公共组件,也可以针对我们特殊业务场景,沉淀出符合自己业务的业务组件; 工程化,解决了可控和规范性的功能,我们可使用开源的一些脚手架比如vue-cli、create-react-app等,或者公司内部自己沉淀的内部脚手架解决方案; 但是谁来解决散落在各个模块和工程中的逻辑?怎样去避免硬代码编程,减少逻辑的后期维护和成本等等,也是一个需要考虑的点。
同步cnblogs:关于组件的思考 同步知乎博客:关于组件的思考 写在前面的话 前端写了好多年,用过了各种各样的组件库,也曾自己写过各种组件。但是对组件这个概念一直都没有过一个很深入了解,所以参考了很多资料,以及结合自己的理解,做归纳和总结。
距离上个迭代过了很长时间,中间经历了很多事情,也在每个空余时间构思了这个迭代的东西以及下个迭代要做的东西。时间周期稍微长了,望见谅。 而且,至今这个开源库的start也已经到了165个了,会支持关注和研究的。
同步更新博客: 1. 知乎专栏:前端路上的摸索 2. github:design 距离上一篇博客,我已经有3个月没有写博客了,脑子里也有很多灵光和新点子,忙嘛,肯定忙,但是忙不是理由,所以见谅。这次给自己下了死命令,一定要产出点东西,so,将自己最近开发中能总结的东西慢慢再
好了,开篇还是要扯扯的,否则感觉这个技术讲的么有那么冻人,嗯,这个晚上是有点冷了,秋衣秋裤大家都该加起来了,反正我不帮你买,妹子除外,嘻嘻。 之前几篇博客,研究前端通信技术的第一层ajax技术,从最基础的东西开始开发兼容,然后到最近的1.6版本吧,前前后后几乎将ajax的所有能用的技术都研究过一遍了,在github上也得到了120+的star,在这里我要感谢大家的支持。
性能优化的根本目的: 要思考的是用户使用网站的体验如何,而不是我们可以节省多少字节,只有准确感知用户的感受,我们才有必要谈毫秒、字节和请求数量等问题。 针对优化注意事项: 防止过早优化:没必要在刚开始阶段就对一个细节进行放大型的优化,因为这样的成本很高,除了代码可读性方面的东西,甚至还可能会引入更多的bug,所以,针对这个问题,我们可以在上线和运营的时候进行监控,当快暴露到问题的时候,进行整体优化。
距离上一次博客大概好多好多时间了,感觉再不搞点东西出来,感觉就废了的感觉。这段时间回老家学习驾照,修养,然后7月底来上海求职(面了4家,拿了3家office),然后入职同程旅游,项目赶进度等等一系列的原因,导致没有太多时间去搞东西。
距离上一篇博客书写,又过去了大概几个月了,这段时间暂时离开了这个行业,让大脑休息一下。一个人旅行,一个人休息,正好也去完成一个目标 --- 拥有自己的驾照。当然,也把自己晒的黑漆马虎的。不过这一段时间虽然在技术上没有学太多东西,但是在心态上给了自己一个沉淀的机会,感觉自己变得更加沉稳和成熟,感觉这就是自己需要找到的自己,回归自我。
开头想明确一些概念,因为有些概念不明确会导致很多问题,比如你写这个框架为什么不去解决啥啥啥的问题,哎,心累。 什么是框架? 百度的解释:框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。
有朋友提出一看来是懵逼的,根本不知道什么是面向UI编程的思想,下面是我之前写的博客,描述的这中思想,下面为地址,参考下就明了很多了。 1. 前端思想实现:面向UI编程 2. 面向UI编程框架:ui.js框架思路详细设计 时隔第一次被UI思路激励,到现在1.0的粗糙版本发布,掐指一算整整半年了。
马上要过年了,哎,回家的心情也特别的激烈。有钱没钱,回家过年,家永远是舔舐伤口最好的地方。新的一年继续加油努力。 上次做了前端的ajax的上传文件技术,支持单文件,多文件上传,并对文件的格式和大小进行检查和限制。
在此之前让我感慨一下现在的前端开发的氛围。我遇到好多人,给我的观念都是,这个东西这个框架有了,那个东西那个框架做了,前端嘛,学几个框架,这个拼凑一下那个拼凑一下就好了。其实我想问,东西都框架做了,那你会什么?会吹牛逼?会撕逼? 我在简历上写专注原声js,曾经被几个人笑过。
由于上一次的灵光一闪,萌生了对面向UI编程的思想实现。经过一段时间的考虑和设计,现在将思想和具体细节记录下来: 具体思路描述: 在UI.config文件中,配置所有参数,比如页面模板、所有组件、组件控制、接口注入 ui.js根据配置文件中所选择的模板,进入布局模板库中找到所加载的模板 将模板首先注入页面之中。
上一篇文章介绍了ajax技术核心方法,和跨域的问题(只要后台支持跨域默认post就可以),这篇文章讲解一下使用ajax实现的轮询技术,至于iframe,SSE服务器单向推送,以及webSocket双工通道暂时不涉及。
报告,我要说话!xp被历史淘汰了,IE6 say goodbye了,太TM开心了,从此不要兼容IE6了,哈哈哈哈哈哈 报告,我要说话!IE这sb为啥不早点被杀掉呢,找工作听说要兼容IE,立马软了,唉唉唉唉唉唉 报告,我要说话!Jquery太丰富了,老子只用了几个功能,妈的,太不划算了,啊啊啊啊啊啊 ...... 好了,言归正传。
以前都是开始一段废话的,现在直接进入主题,首先介绍一下一些概念: 单页应用: 优点: 具有桌面应用的即时性、网站的可移植性和可访问性。 用户体验好、快,内容的改变不需要重新加载整个页面,web应用更具响应性和更令人着迷。
作为程序员,人生最值得幸福的事有几件: 解决困扰了很长时间的问题 升职加薪 找个漂亮又靠谱的对象 深得领导的喜欢 带领团队冲锋陷阵 ... 哈哈,这些都是梦想,暂时想想就好了。这肯定和我说的东西不符合嘛,大家表多想了。
引子,我去小说看多了,写博客竟然写引子了!!!不过,没引子不知道怎么写了。言归正传吧,前端这个职业,也就这几年刚刚火起来的职业,以前那个混乱的年代,前端要么是UI设计师代劳解决问题,要么就是后端程序员小帅哥稍微代劳一下,百度一下,google一下,ctrl+c,ctrl+v,然后搞定了,没啥事了,反正能用。
----------基于上次写的jquery插件进行改造 http://www.cnblogs.com/GerryOfZhong/p/5533773.html 背景:jQuery插件依赖jQuery库,虽然jQuery使用十分广泛,但是对于移动开发或者在其他带宽需求需要注意的时候,就得考虑,因为我不可能完成一项技术相对来说引用了一个更大的库,这样之不值得的。
一件事情的发生总是有原因的,当然更多的是对技术本身的追求,一定要搞懂啦,废话不多说,大宝剑直插主题。 起因 以前做过一个xx项目,在登陆界面背景图片中,直接引用了一张大图,css类似于这样(background-image:url(a.jpg)),然后啪啪啪调试了一下,丑恶的面容出来,图片是从上往下一片一片的出来,交互和用户体验差到了极点,特别在网速不好的时候特别明显。
下面是各个平台(移动端、PC端)的字体支持情况: 各个系统的比较 建议在网页开发中的字体设置 1.移动端项目: font-family:Tahoma,Arial,Roboto,”Droid Sans”,”Helvetica Neue”,”Droid Sans Fallback”,”Heiti SC”,sans-serif; 2.
对于用户登录后将数据存储到session中,但是对于session过期引发的异常,会导致很多程序崩溃,或数据不对。所以正对于session过期处理,势在必行。 1.在一些数据持久化的操作中,我们会使用一些session中的数据,向后台进行数据持久化,但是如果session中没有数据的话,会出现很多意想不到的错误。
FUKINSEI (不均整) 不对称,奇数,不规则,不均匀。不均整被用来拒绝完美,因为大自然里没有完美和对称。 KANSO (简素) 去掉华丽,简单的东西天生就能表达自己真实的一面。整齐,干净,不复杂。
DECLARE @d VARCHAR(8000) SET @d = ' ' SELECT @d = @d + ' kill ' + CAST(spid AS VARCHAR) + CHAR(13)FROM MASTER.
format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的format-detection属性主要是有以下几个设置:meta name="format-detection" content="telephone=no"meta na...
table布局的渲染是将整个table全部渲染出来,如果网路不给力的情况下,整个table会卡死在页面div布局的话,页面渲染,会一个一个的div渲染,网页出现会一个一个出来,不管网速怎样,不会全局卡死
jQuery.parent(expr) //找父元素jQuery.parents(expr) //找到所有祖先元素,不限于父元素jQuery.children(expr) //查找所有子元素,只会找到直接的孩子节点,不会返回所有子孙jQuery.contents() //查找下面的所有内容,包括节点和文本。
错误原因: 一是 JavaScript 浮点数计算的 Bug, 另一个是和计算机最终转换成二进制计算有关系 解决方案: 第一种就是利用JavaScript 的toFixed(n) 方法,直接获取N 位小数(对于取多少位的可以使用) 第二种方法就是自己编写运算方法。
1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2) 4,向下取整 js: Math.floor(7/2)
1. 在For...In 声明用于对数组或者对象的属性进行循环/迭代操作。 例子:var a = new Array; for(x in a){ console.log(x); } 2. 判断对象是否为数组/对象的元素/属性: 格式:(变量 in 对象)......注意,,, 当“对象”为数组时,“变量”指的是数组的“索引”; 当“对象”为对象是,“变量”指的是对象的“属性”。
关闭
泛函数:也称泛函,以函数为输入,输出可以是一个值也可以是一个函数(方法的参数是函数)
function在javascript中是对象,所以function持有构造函数例子:var a = new Function("x","y","return x+y"); 但是使用Function构造的时候特别需要注意几点:1.
call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 apply方法: 语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。
Mozilla中: addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target: 文档节点、document、window 或 XMLHttpRequest。
最官方能懂得概念:函数体内部的变量都可以在保存在函数作用域内 结合作用域的规则去了解:作用域是函数定义的时候就创建的,不管在何时何地执行(哪怕在全局执行)一个闭包函数,它的首先作用域就是它闭包函数的作用域 例子: var scope = "global";function checkscope...
js中没有Date.format方法的,所以在date属性中加format方法 //js格式化属性 Date.prototype.format = function (format) { var o = { "M+": this.
1. 第一种方式读取cookie信息:用document.cookie.split(“; “)的方式把字符串分割成几个段,然后遍历整个数组 //javascript方法 function getCookie(name){ var arr = document.
js脚本function: //js数字千分符处理 function commafy(num) { num = num + ""; var re = /(-?\d+)(\d{3})/ while (re.
转换原理:// 编码原理就是创建TextNode节点,附加到容器中,再取容器的innerHTML.(将脚本编码) // 解码原理是将字符串赋給容器的innerHTML,再取innerText或textContent(过滤掉js脚本).
javaScript中关于split()的使用 1.一般使用对一个字符串使用split(),返回一个数组 例子: var testArr = "1,2,3,4,5"; var tem = new Array; tem = testArr.
$.post和$.Ajax都为页面上向后台发送请求,请求数据1.post 因为post默认为异步请求,可是有时候我们会发现,本来要求请求马上出现,可是异步会导致后面突然再执行,这样就出很多问题 2.Ajax 最原始的Ajax,可以控制同步或者异步,属性:async设置为false,代表同步;async设置为true,代表异步 语法如下: $.
//禁止页面数据拖拽function forbidDataDrafting() { document.ondragstart = function () { return false; };}
在js中,如果想一次性给一个控件或者标签初测多个事件的方法: 假如有个标签: 现在要对这个input标签,同时注册失去焦点(blur)和按enter事件(e.
setTimeout( )是设定一个指定等候时间 (单位是千分之一秒, millisecond), 时间到了, 浏览器就会执行一个指定的 method 或 function, 有以下语法: 今次例子是设定等 3 秒 (3000 milliseconds), 浏览器就会执行 alert( ) 这一个method。
JavaScript 虽然给人感觉是一个多线程执行的语言,但是其实JavaScript引擎是伪多线程,是单线程执行的, 浏览器内核:实现允许多个线程异步执行,这些线程在内核制控下相互配合以保持同步.
display:inline_block 会使块级元素转换为行级元素使用 PS:中间会有一个间隙,可用margin-right:-x px 来解决
语法:transition: property duration timing-function delay; transition-property 规定设置过渡效果的 CSS 属性的名称。transition-duration 规定完成过渡效果需要多少秒或毫秒。
div{ transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* Firefox */ -webkit-transform:rotate(7deg); /* Safari 和 Chrome */ -o-transform:rotate(7deg); /* Opera */} 语法: transform: none|transform-functions; none 定义不进行转换。