自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

evilemon的博客

http://evilemon.github.io/

  • 博客(57)
  • 收藏
  • 关注

原创 突然想到的seo问题

一般来说,使用js进行构建的页面seo比较困难,考虑了一下可能是这个原理。许多页面在渲染后产生的静态页面经过后端处理,等着b端发get请求。然而许多单页应用,它的页面改变的只是hash值,对于网络爬虫来说等于没有发送get请求,所以爬虫无法爬到这些东西,seo就很困难。再加上很多触发动作,爬虫都是无法完成的,所以爬虫最喜欢的就是那种静态页面,适用于很久很久之前的技术~~以上是我的理解,可能不对

2016-05-31 15:14:33 432

原创 关于react组件之间的通信

如果是父子组件之间的通信可以使用refs和props,代码如下var YiTang = React.createClass({ sayFather: function () { this.props.deliver(); console.log('MuTa, my father!'); }, test: function () { console.log('父组件调用子组件');

2016-04-28 16:50:49 776

原创 正则表达式

最近一直想写自己的Js框架,借鉴了别人的框架,发现前端框架中正则表达式太重要了,因此决定在写自己的框架之前,必须闭关复习一下正则表达式。元字符元字符是匹配位置的字符,匹配一个位置或者字符集的一个字符。匹配位置的元字符有3个:^  $  \b。^$匹配一个空行,^匹配任意一行,\b匹配字符串的边界(包括两个边界,英文单词之间通常用空格、标点符号、换行符分隔)。匹配字符的元字符有7个:

2016-01-21 15:34:11 441

原创 关于js单线程的问题

js是一门单线程执行的语言,但是不妨碍js可以并发执行,在极小的时间间隔内,可以看成是并行执行的。html5引入web worker这一多线程概念,但是web worker却不能操作dom,因为多线程的操作dom必然导致dom的冲突和崩溃。js操作dom时是单线程的,浏览器内核也是分为两部分,一部分执行dom的渲染,另一部分执行js的线程。其中js的线程分为主线程和多个并发线程,dom的操作只

2016-01-18 13:57:30 721

原创 考察自己this指向

之前好几篇文章讲到this指向问题。我觉得js是一门奇特的语言,蛮有意思的语言。直接上代码var module = {};module.exports = { el: '#fullpage', currentPage: 1, page1Init: (function () { console.log(this); return functio

2016-01-14 13:28:56 476

原创 遍历器构造。

es6的遍历器协议规定,部署了next方法的对象,就具备了遍历功能。function iterator(array) { var index = 0; return { next : function () { return index < array.length ? {value: array[index++], done: false} : {value:

2016-01-07 17:58:33 897

原创 scroll事件不触发?

当用户在元素内执行了滚动操作,就会在这个元素上触发scroll事件。它适用于window对象,但也可以是可滚动frames与CSS overflow属性设置为scroll的元素(或auto时,元素的显示高度小于其内容高度)。今天试了半天scroll事件,总是在疑问为什么scroll事件不触发,终于在jquery手册中发现上面的一句话。搞了半天,给div加了一个height,scroll事件就触

2016-01-04 16:53:44 8849

原创 常用的,不想再百度了

//两种方法设置disabled属性$('#areaSelect').attr("disabled",true);$('#areaSelect').attr("disabled","disabled");//三种方法移除disabled属性$('#areaSelect').attr("disabled",false);$('#areaSelect').removeAttr("d

2016-01-04 13:12:09 385

原创 事件代理日常总结

js是单线程的,添加事件的时候如果正好加载异步数据,dom节点很有可能没有加载上就已经进入了事件队列,导致dom无法添加事件 var s = document.querySelector('body'); var tem; s.addEventListener('click', function (e) { if (e.ta

2016-01-04 12:24:56 388

原创 日常总结之angularjs的双向绑定全透析

前几天各种看关于依赖注入的书,分析了angularjs的依赖注入原理。这几天又重新复习了一下ng的双向数据绑定。angularjs中关于数据双向绑定的几个关键api有$watch()、$apply()以及$digest()。$watch()用于视图向模型的检测,$apply()是模型向视图的检测。$watch()监测模型是否发生变化,而在模型发生变化真正执行后续操作需要执行$diges

2015-12-16 14:49:56 1213

原创 依赖注入的javascript实现

前后端终究是要完成合久必分分久必合的趋势。在前后端分离的前提下,后端的一些设计模式慢慢地向前端过渡。依赖注入在java等后端语言的发展下慢慢在前端使用。在java中di主要是将对象在容器中实例化。使用控制反转(ioc)。像在angular中,双向数据绑定根据对模型的监控进行实现。而依赖注入是将服务等实例化后注入到控制器中进行实现。下面就讲一下angular实现di的主要过程。主要依靠j

2015-12-14 20:53:54 1423

原创 日常总结 之 angular copy 深拷贝

angular提供了一个可以复制对象的api——copy(source,destination),它会对source对象执行深拷贝。angular的操作实质是对dom的model进行操作,几乎所有的渲染都应放在model层。 Name: E-mail: Gender: male female RESET

2015-12-14 10:32:04 6363

原创 日常笔记之Buffer的拼接

nodejs中buffer模块使用频率较高,因此在node启动的时候自动加载。通常buffer使用的是utf8编码方式,一个汉字编码是以3个utf8码字组成,因此在读取的时候会产生截断,截断的位置不是整数倍的时候会产生乱码。常用的var fs = require('fs');var rs = fs.createReadStream('./1.text');var data = '';rs.o

2015-12-14 09:44:27 1190

原创 基于nodejs的tcp服务器与客户端

不得不说nodejs的强大API实现了之前复杂网络编程的简单化。一下是server端的js程序,实现各个socket连接的轮询。var net = require('net');var server = net.createServer();var sockets = [];server.on('error', function (err) { console.log('erro

2015-12-11 11:26:36 1346

原创 node.js读写数据流

node中有个流的概念,stream。代表数据流动方向:向内流(可读流),向外流(可写流)。常用的流形式是文件,和tcp套接字。流是以快为单位发送数据,通过监听‘data’事件,每一次得到一块数据即进行一次操作,当数据结束时,监听end事件,执行后续操作。可读流可以通过stream.pause();stream.resume()暂停恢复流。其中暂停流在写文件时会停止从该文件中读取数据,如果是T

2015-12-10 11:38:56 6491

原创 web开发中Array与ArrayBuffer的区别

javascript是一种弱语言类型,自带Array构造函数用于构造数组,但是在Web Audio和webgl中需要传输的数据往往需要很高精度,这时候使用数组就不起作用了,需要引入C语言中类似的32位或者64位的浮点数。在js中数组的创建一般使用new Array(5);或者直接给出数组。var a = new Array(5);//初始化a是含有5个undefined的数组,可以通过改变a.l

2015-11-23 14:24:13 2459 1

原创 滚动视觉差原理

首先要知道一个apiwindow.scrollTo(x,y)其中x,y分别为滚动条向x,y方向移动的位置,如果网页宽度不够则不出现滚动条,设多少都没用。$(function() { $(window).scroll(function(){ var scrolled = $(this).scrollTop(); $('#area1').css('top',(0

2015-11-19 19:07:38 2808

原创 针对video标签改变其缩放比例比如4:3

.border{ position:relative; width:100%; height:0; padding-bottom:75%; //因为padding和margin等受width影响,父容器固定后,子标签可以进行填充。此处75%是3/4,其他比例可以依照此法。 } video{ position:absolute; left:0; top:0; width:100

2015-11-16 15:15:51 10598

原创 关于this指向问题

好久没有在csdn上写博客了。今天面试有这样一道题var length = 10;var m = function (){ console.log(this.length);};obj = { length: 5, s:function(fn){ console.log(this.length); fn(); arguments[0](); }

2015-11-09 16:56:15 418 1

原创 js 实现随机验证码

JS生成验证码.code {background-image: url(code.jpg);font-family: Arial;font-style: italic;color: Red;border: 0;padding: 2px 3px;letter-spacing: 3px;font-weight: bolder;}.unchanged {border: 0;}

2015-10-30 21:25:44 536

原创 找到字符串中的单词的个数

function ss(v,x) { var num=0; while(v.indexOf(x)>-1){ var s=v.indexOf(x)+1; num +=1; v = v.substr(s);} return x+' '+num;}

2015-10-30 17:25:24 393

原创 js 从字符串中选取数字并相加

function sum(v) { var s=v.match(/\d+/ig); var sum = 0; for (var i=0;i < s.length;i++){ s[i] = parseInt(s[i],10); sum += s[i];} return sum;}

2015-10-30 17:09:05 3245

原创 如何实现html5的摄像头的调用

Snap Photo// Put event listeners into placewindow.addEventListener("DOMContentLoaded", function() {// Grab elements, create settings, etc.var videoObj = { "video": true },errBack = funct

2015-09-30 15:44:00 330

原创 好用的lightbox插件

jQuery-Rebox/

2015-09-29 11:10:42 730

原创 阮一峰关于deferred 详解,感觉是jquery中最重要的部分

http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html

2015-09-02 18:53:14 1062

原创 关于使用tpl模板如何从模板中取数据放入js中

最近在百度地图实习,地图等业务一般都是使用PHP,所以一般模板是smarty,有的模块可以在tpl中判断,然后渲染,有的则需要在js中作进一步判断,对于PHP传过来的变量,怎么导入到js中呢?使用 var s = {%json_encode($arrOutput)%}; require("authenticate.js").init(s.data);js中进行封装,只需要将数据传入,如上式中的

2015-09-01 14:39:46 6080

原创 我的js:冒泡排序算法选择排序算法以及快速排序算法。

function bubble(a) { var i = a.length, j; var tem; while (i > 0) { for (j = 0; j < i - 1; j++) { if (a[j] > a[j + 1]) { tem = a[j]; a[j]

2015-08-03 01:27:20 1256

原创 关于node.js中引入文件的问题

接触node.js一段时间,对它引入文件的规定是在写项目的时候得到的。引入文件分三种绝对定位的引入"/web/ccc/img/1.npg"相对定位的引入"../../css/style.css"还有一种就是“aaa/kkk.js”。前两种就不用说了,最后一种是在主文件夹下的node_module中的引入。只要看到“xxx/xxxx”就是在node_module里面找。以上是对文

2015-07-21 09:10:54 822

原创 关于在项目里使用jquery的ajax函数。

今天在带头大哥的带领下,我已经掌握了如何使用$.ajax();起初我是一名公司实习生,完全没有项目经验,于是上峰给安排了开发网站的初始页面、登录页面、注册页面。这都是小问题,只有一个地方,就是验证这个模块我是从来没有做过的。首先,jquery自身也是有表单验证的模块的,而且这个验证validate模块也是非常强大的。但是,这个模块只是前端验证,没有通过服务器,也就是说我们可以用它在前端进行

2015-07-20 13:48:46 1053

原创 如何让背景图铺满整个页面

不得不否认,万能的度娘上总会有一群刷百度知道的“大神”,各种坑。background属性有个background-size属性,可以设置背景图片所占div的比例,可以拉伸或收缩。如果想在整个窗口显示背景图片,在body属性加上{background:url(); background-size:100% 100%;}这时能看到,整个背景图片显示在窗口中,且随着你的放大缩小可以拉伸。

2015-07-15 11:23:49 32165 3

原创 论闭包中的变量是否都保存在内存中。

过去我一直认为闭包中只保存被访问的变量。function a(){ var d=5; d=d+1; var b=1; function c(){ console.log(b); console.log(d); return b++; } return c;};var e=a();e();e();e();调试后发现结果输出1,6,2,6,3,6这表示啥?

2015-07-12 11:59:51 2666 2

原创 css中box-shadow属性与text-shadow属性

box-shadow就是在原来的块下复制了一份相同大小的块,放在原来的块下面,然后相对于左上角移动,做出类似阴影的效果,然后添加阴影的宽度以及阴影扩散的半径,最后就是颜色,另外一个inset属性放在最后讲。box-shadow有6个属性值:h-shadow,v-shadow,blur,spread,color,inset。其中h-shadow,v-shadow负责上下移动,可以为负值,是以

2015-07-11 20:39:29 1504

原创 ajax的学习

ajax的readyState属性共有五种取值,0:未初始化,send()方法还未调用;1:加载中,已经调用了send()方法,请求还在处理中;2:已加载,send()方法已完成,整个应答已接受;3,:交互中,正在解析应答;4:已完成,应答已解析,准备好进行下一步处理。XMLHttpRequest使用的依然是http来传送请求,因此状态码依然适用。浏览器对每一个访问过的页面

2015-07-11 09:37:17 409

原创 javascript设计模式的学习

借鉴于《javascript模式设计》constructor模式:javascript中,所有的函数都是对象,都可以用new来创建。基本的构造器是在function函数中使用this关键字,不过实例无法无法继承。如果想要创建多个对象,访问相同属性,在函数中添加prototype对象。module模式:实现模块的方法:对象字面量表示法,module模式,AMD模块,CommonJS模块、

2015-07-09 11:32:43 324

原创 前端工具网站

http://tool.oschina.net/

2015-07-09 11:20:51 318

转载 实现AJAX的基本步骤

要完整实现一个AJAX异步调用和局部刷新,通常需要以下几个步骤:      (1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.      (2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.      (3)设置响应HTTP请求状态变化的函数.      (4)发送HTTP请求.      (5)获取异步调用返

2015-07-09 11:13:26 2160

原创 Mac系统下的sublime编辑网页

前端开发中,如果要像使用vim编辑文本一样使用sublime,比如vim  1.txt,我们可以在终端输入以下alias subl=\''/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl'\'即可,不过sublime 的命令行是 subl ;    比如 subl   index.html

2015-07-08 15:49:51 533

原创 git的使用方法

git clone ssh://[email protected]:10022/sunliangmu/project-demo.git 172 cd 173 cat .ssh/id_rsa.pub 174* git 175* git co 176 git clone ssh://[email protected]:10022/sunli

2015-07-07 14:54:40 393

转载 IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表

浏览器兼容问题一直是前段开发工程师比较头痛的问题,熟悉了里面的规则也就变得简单了,这里有一份资料可以分享给大家,大家平时开发过程中遵循这个规律的话,会变得轻松多了:各浏览器CSS hack兼容表: IE6IE7IE8FirefoxChromeSafari!important Y

2015-07-05 15:43:27 282

原创 一个例子让你体验javascript闭包

一下内容太过暴力,请成年人在未成年人的陪同下观看!!!转载一定要注明本文出处:啊哒木木。闭包的定义一般有两种:1认为闭包是符合一定条件的函数;2认为闭包是函数及其相关环境组合而成的实体,,即创建一个能显式表示引用环境的东西,并将它与相关的子程序捆绑在一起,这样捆绑起来的整体称为闭包。个人倾向于第二种定义。示例代码:1      var a=20000;2      function

2015-07-05 15:27:52 379

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除