- 博客(51)
- 收藏
- 关注
原创 突然想到的seo问题
一般来说,使用js进行构建的页面seo比较困难,考虑了一下可能是这个原理。许多页面在渲染后产生的静态页面经过后端处理,等着b端发get请求。然而许多单页应用,它的页面改变的只是hash值,对于网络爬虫来说等于没有发送get请求,所以爬虫无法爬到这些东西,seo就很困难。再加上很多触发动作,爬虫都是无法完成的,所以爬虫最喜欢的就是那种静态页面,适用于很久很久之前的技术~~以上是我的理解,可能不对
2016-05-31 15:14:33
468
原创 关于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
818
原创 正则表达式
最近一直想写自己的Js框架,借鉴了别人的框架,发现前端框架中正则表达式太重要了,因此决定在写自己的框架之前,必须闭关复习一下正则表达式。元字符元字符是匹配位置的字符,匹配一个位置或者字符集的一个字符。匹配位置的元字符有3个:^ $ \b。^$匹配一个空行,^匹配任意一行,\b匹配字符串的边界(包括两个边界,英文单词之间通常用空格、标点符号、换行符分隔)。匹配字符的元字符有7个:
2016-01-21 15:34:11
487
原创 关于js单线程的问题
js是一门单线程执行的语言,但是不妨碍js可以并发执行,在极小的时间间隔内,可以看成是并行执行的。html5引入web worker这一多线程概念,但是web worker却不能操作dom,因为多线程的操作dom必然导致dom的冲突和崩溃。js操作dom时是单线程的,浏览器内核也是分为两部分,一部分执行dom的渲染,另一部分执行js的线程。其中js的线程分为主线程和多个并发线程,dom的操作只
2016-01-18 13:57:30
774
原创 考察自己this指向
之前好几篇文章讲到this指向问题。我觉得js是一门奇特的语言,蛮有意思的语言。直接上代码var module = {};module.exports = { el: '#fullpage', currentPage: 1, page1Init: (function () { console.log(this); return functio
2016-01-14 13:28:56
513
原创 遍历器构造。
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
938
原创 常用的,不想再百度了
//两种方法设置disabled属性$('#areaSelect').attr("disabled",true);$('#areaSelect').attr("disabled","disabled");//三种方法移除disabled属性$('#areaSelect').attr("disabled",false);$('#areaSelect').removeAttr("d
2016-01-04 13:12:09
420
原创 事件代理日常总结
js是单线程的,添加事件的时候如果正好加载异步数据,dom节点很有可能没有加载上就已经进入了事件队列,导致dom无法添加事件 var s = document.querySelector('body'); var tem; s.addEventListener('click', function (e) { if (e.ta
2016-01-04 12:24:56
413
原创 日常总结之angularjs的双向绑定全透析
前几天各种看关于依赖注入的书,分析了angularjs的依赖注入原理。这几天又重新复习了一下ng的双向数据绑定。angularjs中关于数据双向绑定的几个关键api有$watch()、$apply()以及$digest()。$watch()用于视图向模型的检测,$apply()是模型向视图的检测。$watch()监测模型是否发生变化,而在模型发生变化真正执行后续操作需要执行$diges
2015-12-16 14:49:56
1244
原创 依赖注入的javascript实现
前后端终究是要完成合久必分分久必合的趋势。在前后端分离的前提下,后端的一些设计模式慢慢地向前端过渡。依赖注入在java等后端语言的发展下慢慢在前端使用。在java中di主要是将对象在容器中实例化。使用控制反转(ioc)。像在angular中,双向数据绑定根据对模型的监控进行实现。而依赖注入是将服务等实例化后注入到控制器中进行实现。下面就讲一下angular实现di的主要过程。主要依靠j
2015-12-14 20:53:54
1470
原创 日常总结 之 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
6417
原创 日常笔记之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
1261
原创 基于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
1446
原创 node.js读写数据流
node中有个流的概念,stream。代表数据流动方向:向内流(可读流),向外流(可写流)。常用的流形式是文件,和tcp套接字。流是以快为单位发送数据,通过监听‘data’事件,每一次得到一块数据即进行一次操作,当数据结束时,监听end事件,执行后续操作。可读流可以通过stream.pause();stream.resume()暂停恢复流。其中暂停流在写文件时会停止从该文件中读取数据,如果是T
2015-12-10 11:38:56
6545
原创 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
2546
原创 关于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
448
原创 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
562
原创 找到字符串中的单词的个数
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
432
原创 如何实现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
364
原创 我的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
1294
原创 关于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
875
原创 关于在项目里使用jquery的ajax函数。
今天在带头大哥的带领下,我已经掌握了如何使用$.ajax();起初我是一名公司实习生,完全没有项目经验,于是上峰给安排了开发网站的初始页面、登录页面、注册页面。这都是小问题,只有一个地方,就是验证这个模块我是从来没有做过的。首先,jquery自身也是有表单验证的模块的,而且这个验证validate模块也是非常强大的。但是,这个模块只是前端验证,没有通过服务器,也就是说我们可以用它在前端进行
2015-07-20 13:48:46
1087
原创 如何让背景图铺满整个页面
不得不否认,万能的度娘上总会有一群刷百度知道的“大神”,各种坑。background属性有个background-size属性,可以设置背景图片所占div的比例,可以拉伸或收缩。如果想在整个窗口显示背景图片,在body属性加上{background:url(); background-size:100% 100%;}这时能看到,整个背景图片显示在窗口中,且随着你的放大缩小可以拉伸。
2015-07-15 11:23:49
32423
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
2726
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
1556
原创 ajax的学习
ajax的readyState属性共有五种取值,0:未初始化,send()方法还未调用;1:加载中,已经调用了send()方法,请求还在处理中;2:已加载,send()方法已完成,整个应答已接受;3,:交互中,正在解析应答;4:已完成,应答已解析,准备好进行下一步处理。XMLHttpRequest使用的依然是http来传送请求,因此状态码依然适用。浏览器对每一个访问过的页面
2015-07-11 09:37:17
438
原创 javascript设计模式的学习
借鉴于《javascript模式设计》constructor模式:javascript中,所有的函数都是对象,都可以用new来创建。基本的构造器是在function函数中使用this关键字,不过实例无法无法继承。如果想要创建多个对象,访问相同属性,在函数中添加prototype对象。module模式:实现模块的方法:对象字面量表示法,module模式,AMD模块,CommonJS模块、
2015-07-09 11:32:43
350
转载 实现AJAX的基本步骤
要完整实现一个AJAX异步调用和局部刷新,通常需要以下几个步骤: (1)创建XMLHttpRequest对象,也就是创建一个异步调用对象. (2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息. (3)设置响应HTTP请求状态变化的函数. (4)发送HTTP请求. (5)获取异步调用返
2015-07-09 11:13:26
2193
原创 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
564
原创 git的使用方法
git clone ssh://git@gitlab.creditcloud.com:10022/sunliangmu/project-demo.git 172 cd 173 cat .ssh/id_rsa.pub 174* git 175* git co 176 git clone ssh://git@gitlab.creditcloud.com:10022/sunli
2015-07-07 14:54:40
425
转载 IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表
浏览器兼容问题一直是前段开发工程师比较头痛的问题,熟悉了里面的规则也就变得简单了,这里有一份资料可以分享给大家,大家平时开发过程中遵循这个规律的话,会变得轻松多了:各浏览器CSS hack兼容表: IE6IE7IE8FirefoxChromeSafari!important Y
2015-07-05 15:43:27
302
原创 一个例子让你体验javascript闭包
一下内容太过暴力,请成年人在未成年人的陪同下观看!!!转载一定要注明本文出处:啊哒木木。闭包的定义一般有两种:1认为闭包是符合一定条件的函数;2认为闭包是函数及其相关环境组合而成的实体,,即创建一个能显式表示引用环境的东西,并将它与相关的子程序捆绑在一起,这样捆绑起来的整体称为闭包。个人倾向于第二种定义。示例代码:1 var a=20000;2 function
2015-07-05 15:27:52
408
原创 javascript作用域总结
javascript共有三种作用域 :全局作用域,局部作用域,eval作用域。eval作用域可以这么使用eval() 、window.eval()。javascript没有块作用域,即var foo=1;if(true){ var foo=2;for (var i = 3; i <=5; i++){ var foo=i; console.log(foo); }}co
2015-07-05 10:25:20
382
转载 js eval() 全局作用域
eval函数是强大的数码转换引擎,字符串经eval转换后得到一个javascript对象, 举简单例子: var a = eval("5");等效于var a = 5; var a = eval("'5'");等效于var a = '5'; var obj = eval("({name:'cat',color:'black'})");等效于 var obj = {name:'cat
2015-07-05 10:18:44
1140
原创 再议javascript变量作用域
今天看书无意中发现一个例子,然后突然进行了改造。原始例子var foo=0;console.log(foo);var myfunction=function(){ var foo=1; console.log(foo); var myNextFunction=function(){ var foo=2; console.log(foo); }();
2015-07-05 10:06:54
340
转载 FPGA中modelsim对IP的仿真
方法一:在仿真的文件中加入altrea_mf.v的文件(verilog语言来说,现在基本上设计语言都是verilog),就可以直接仿真在Altera FPGA中定制IP核的工程。方法二:1.设置仿真库路径 打开ModelSim安装目录,新建文件夹altera(其他名字也行,自己记住就行了),我们就在该目录下存放预编译的各种Altera库。 启动Model
2015-07-05 09:53:39
3060
转载 FPGA中对FIFO深度的计算
写时钟周期w_clk, 读时钟周期r_clk, 写时钟周期里,每B个时钟周期会有A个数据写入FIFO 读时钟周期里,每Y个时钟周期会有X个数据读出FIFO 则,FIFO的最小深度是? 首先,这道题不一定有解 有解的必要条件是在一定时间内(足够长),写入的数据数量一定要等于读出的数据数量 因此有:A/B * w_clk = X/Y * r_clk 其次,算出写数据的最
2015-07-05 09:51:22
3843
转载 单片机消抖程序,也可用于verilog,关键是里面的思想。
通常按键所用的开关都是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定的接通,在断开时也不会一下子彻底断开,而是在闭合和断开的瞬间伴随了一连串的抖动,如下图 所示。按键稳定闭合时间长短是由操作人员决定的,通常都会在 100ms 以上,刻意快速按的话能达到 40-50ms 左右,很难再低了。抖动时间是由按键的机械特性决定的,一般都会在 10
2015-07-05 09:44:56
1153
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人