JSONP实现原理
JSON和JSONPJSONP是JSON with padding(填充式JSON,参数式JSON)的缩写,这是一种突破浏览器同源策略进行跨域通信的实现方式。和JSON相比,JSONP多出来的P就是padding(填充),因为服务器端响应的数据格式是这样的:
1callback({"name": "plusye"});
简单点理解,不就是JSON数据{“name”: “plusye”}填充在callback函数里吗?
JSONP实现JSONP的实现是通过script标签,因为script中的src是不受浏览器同源策略影响的。要实现JSONP,除了前端实现,后端也要处理JSONP的请求才行。这里我找个会处理JSONP请求的网站测试。在浏览器中输入:http://freegeoip.net/json/, 会得到下面的数据:
1{"ip":"2001:da8:214:1074:774:b28e:e896:4395","country_code":" ...
vue.js原理系列(一):构造函数和实例对象
开篇语接下来会写一个Vue.js的系列。网上有很多写Vue.js的文章,但大多是教你怎么使用Vue的。Vue已经是封装好的高级类库,Vue的使用手册,我觉得官网的教程就够了。所以,我并不打算写怎么使用Vue,而是学习它的实现原理,比如说,Vue构造函数,实例对象,组件实例,响应式原理,双向数据绑定,生命周期,v指令是实现,观察者模式,MVVM模式等等,在接下来的文章中都会慢慢讲解。
Vue构造函数一个Vue创建的应用,至少有一个Vue根实例,组建也是vue实例。vue实例是通过构造函数Vue创建的。这个系列的重点不是讲解构造函数和原型,所以在这里不会过多的讲解。Vue构造函数会为vue实例实现各自的属性,至于方法,所有实例都可以共享,所以,应该把方法设置在Vue.prototype对象中,在vue实例的生命周期中会调用相应的函数。
通过Vue构造函数创建实例对象:
1234567891011const vm = new Vue({el:"#el",data: {},method: {},computed: { ...
JS中需要注意的知识点总结:语言核心部分(一)
1.HTML中设置事件处理程序,可以写成onClick,但在JavaScript中必须是小写。原因是HTML不区分大小写,JS区分大小写。
2.在JavaScript中,只有null和undefined是无法拥有方法的值。
3.JS的所有数字都是用浮点数值表示。采用的是IEEE 754标准定义的64位浮点数表示法。这是一种二进制表示法,可以精确的表示分数1/2,1/4,1/8等,但是无法精确表示1/10,1/100等数字。所以才会有
0.1+0.2=0.30000000000000004
4.0/0 计算结果是NaN。
5.NaN和任何值都不等。
6.其他类型转换成布尔类型时
undefinednullNaN+0-0“”
以上值转成false,其他均转为true。
7.用var声明全局变量,变量会成为全局对象的属性。ES6中的let和const声明的全局变量不会成为全局对象的属性。Node中,var声明的变量也不会成为全局变量的属性。
8.null,undefined没有包装对象,访问他们的属性会造成类型错误 ...
CentOS安装Nginx,以及简单的配置[基本篇]
虽说,我的方向是前端开发,但是其他计算机的相关的知识该会的还是得会。不然实在对不起自己这个计算机科学与技术专业。
这里不做Nginx的介绍,直接进入安装环节。网上看了很多安装教程,基本上又两种安装方法,一是使用yum安装,二是通过源码安装。源码安装有点复杂的样子,所以我选择了第一种方法。
用yum?不就直接:
1yum install -y nginx
一条指令搞定?不好意思,还没有那么简单。CentOS的标准源里边没有nginx。那只能配置第三方源了。方法很简单。
第一步:创建/etc/yum.repos.d/nginx.repo文件。在文件中写入:
[nginx]name=nginx repobaseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/gpgcheck=0enabled=1
OS是你的Linux发现版本名称,OSRELEASE是系统版本。比如:我的vps安装的是centos 6.5,那么baseurl=http://nginx ...
深入理解JavaScript原型
原型算是JS中的一个重要知识点,也是难点。我觉得,对于陌生的事物,人本能的会恐惧和排斥。对于学习也一样,如果你熟悉了,会觉得很容易,但对于复杂的未知的东西,会有种恐惧心里。以前学习JS,觉得原型继承啥的特别难,现在发现其实没有那么难,至于以后是什么感觉,那是以后的事了。
####对象和函数通过instanceof可以判断引用类型的是什么类型的值。instanceof是通过原型链实现的,在这里先不详细讲,以后有机会在另写一篇文章介绍。通过这篇文章对原型的介绍,理解原型之后,就会明白怎么回事了。通过instanceof,我们可以知道函数是一种对象。
123function a() {}a instanceof Object; //=> true
JavaScript中没有静态语言那种真正意义上的类,JavaScript中的类是由构造函数和原型实现的。我们要用构造函数来创造新的对象实例,对象实例可以从原型中继承属性和方法。在JavaScript中:
函数是一种特殊的对象。通过构造函数能初始化新的对象实例。
通过构造函数可以创建对象实例。我们可以自定义构造 ...
CentOS安装redis
Centos安装redis1234$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz$ tar xzf redis-3.2.9.tar.gz$ cd redis-3.2.9$ make
启动redis服务:
12$ cd src$ ./redis-server
redis.conf配置修改为后台运行:daemonize yes其他主机连接:bind 127.0.0.1 注释掉其他主机也能操作:protected-mode no =》yes查看进程:ps -ef |grep -i redis连接:redis-cli -h 45.78.25.218 -p 6379
JavaScript函数中不用var声明变量,会声明一个全局变量?
在函数中用var声明一个局部变量,只在函数内可以访问,在函数外是无法访问的。当不用var声明,直接初始化变量时,变量会被添加到全局执行环境中,当函数执行完之后,依旧可以在函数外访问变量。
1234567function plus() { var a = 1; b = 1;}plus();console.log(a); // => undefinedconsole.log(b); // => 1
以上是理解并没有什么问题。但有种说法:
在函数中不用var声明变量会声明一个全局变量.
这种说法是错误的,错误的!
没有使用var声明,这根本就没有声明一个变量,而是直接赋值。为什么能直接赋值?先看个例子:
123var obj = {}obj.a = 1;
上面例子中,直接给对象obj添加属性a,并赋值1;而没有var声明的变量,也是这个原理。
在函数中没有var声明就直接给变量赋值,就是给window对象添加属性,属性名就是变量名。
这种方式得到的window属性是可以用delete删除的。用var在全局作用域声明变 ...
Web语义化
什么是HTML语义化?
语义化(semantic)就是你看到某个标签就知道它是干什么的。语义化让“显示”与“语义”分离,HTML代码负责页面干什么,而显示效果则由CSS完成。让正确的标签做正确的事情。
比如:当我们看到下面的标签时,就知道它的功能就是在页面中显示一个顶级标题.
<h1>this is a top level heading</h1>
为什么要语义化?在HTML5出来之前,我们习惯用表示页面章节,但是没有任何语义,也就是说他要干的事情全凭开发者说了算。页面的导航栏是,页面的边栏也是,唯一的区别就是他们的id。这样不方便开发者阅读代码,也不利于浏览器和搜索引擎的解析。HTML5的核心理念就是“语义”与“显示”分离,那些没有“意义”的标签已经被放弃,如:font。总的来说,语义化有以下作用:
易于用户阅读:在没有CSS的情况下,页面也能呈现很好地内容结构、代码结构。
提高用户体验:例如title、alt用于解释名词或者解释图片信息。
有利于SEO:搜索引擎爬虫依赖于标签来确定上下文和各个关键字的权重。
方便其他设备解析:如盲人阅读器根据语义渲染网页 ...
javascript之Date类型及其使用
ECMAscript中的Date类型是在java的java.util.Date的基础上构建的。所以,Date类型使用以UTC(国际协调时间)1970年1月1日0时为起点零的毫秒数保存日期。
Date()和new Date()的区别
Date()传入的不管是数字、字符串,时间格式是不是正确,返回的都是当前时间。
Date(“111”),Date(1995/06/03),Date(520);//Tue Sep 27 2016 23:40:11 GMT+0800 (CST)
new Date()则是根据参数返回。
new Date();//Tue Sep 27 2016 23:40:11 GMT+0800 (CST)new Date(1995,06,03,17,55,55);//Mon Jul 03 1995 17:55:55 GMT+0800 (CST)new Date(“1sss”);//Invalid Date
根据传入的参数返回,无参数是返回当前时间,有格式正确的返回相应的时 ...