index > technolog > Javascript
index | cate
Resource | krpano | sample | css | npm | Vue| function
chrome 开发者工具 —> sources -> { } pretty print
NativeScript实现在不用Webview的情况下,构建跨Android和iOS的平台应用。
以前各种PhoneGap,Cordova,Ionic等需要移动端原生Webview的支持,使用NativeScript让你只用js,xml,css就可以完成移动端开发。
前端应用场景梳理,简化理解,明晰思路
用 Vue 改造 Bootstrap,渐进提升项目框架
c.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。
js本地存储解决方案(localStorage与userData)
css display:box 新属性
一、display:box; 在元素上设置该属性,可使其子代排列在同一水平上,类似display:inline-block;。 二、可在其子代设置如下属性 前提:使用如下属性,必须在父代设置display:box; 1.box-flex:number; 1)占父级元素宽度的number份 2)若子元素设置固定宽度,则该子元素应用固定宽度,其他未设置固定宽度的字元素将余下的父级宽度(父级-已设置固定宽度的子代元素的总宽度按 number占份数 3)若子元素有margin值,则按余下(父级宽度-子代固定总宽度-总margin值)宽度占number份 2.box-orient:horizontal/vertical 在父级上设置该属性,则子代按水平排列或竖直排列。 注:所有主流浏览器不支持该属性,必须加上前缀。 1)horizontal 水平排列,子代总width=父级width。若父级固定宽度,则子代设置的width无效,子代会撑满父级宽度。 2)vertical 垂直排列,子代总height=父级height。若父级固定高度,则子代设置的height无效,子代会撑满父级高度。 3.box-direction:normal/reverse 在父级上设置该属性,确认子代的排列顺序。 1)normal 默认值,子代按html顺序排列 2)reverse 反序 4.box-align:start/end/center/stretch 在父级设置,子代的垂直对齐方式。 1)start 垂直顶部对齐 2)end 垂直底部对齐 3)center 垂直居中对齐 4)stretch 拉伸子代的高度,与父级设置的高度一致。子代height无效。 5.box-pack:start/end/center 在父级设置,子代的水平对齐方式。 1)start 水平左对齐 2)end 水平右对齐 3)center 水平居中对齐
定义tap手势
//do not prevent defaults if this is a tap gesture
var isTapPointer = input.pointers.length === 1;
var isTapMovement = input.distance < 2;
var isTapTouchTime = input.deltaTime < 250;
if (isTapPointer && isTapMovement && isTapTouchTime) {
return;
}
addEventListener与handleEvent
Mozilla 0.9.1 和 Netscape 6.1 之后的版本不但支持传递函数引用,也都允许直接把拥有 handleEvent 方法的对象作为 addEventListener 方法的第二参数。
这在 DOM Level 2 的接口定义中也已经做了说明:
http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventListener
利用这个特性可以把任意对象注册为事件处理程序,只要它拥有 handleEvent 方法。
var o = {
handleEvent : function () {
alert('handleEvent executed');
}
};
element.addEventListener('click', o, false);
当定义对象封装的时候,可以直接将 this 指针传入:
var o = {
bind : function () {
element.addEventListener('click', this, false);
},
handleEvent : function () {
alert('handleEvent executed');
}
};
定义内部函数
var untils = (function() {
var me = {};
me.getTime = Date.now || function getTime () { return new Date().getTime(); };
//计算实际位置
me.offset = function (el) {
var left = -el.offsetLeft,
top = -el.offsetTop;
while (el = el.offsetParent) {
left -= el.offsetLeft;
top -= el.offsetTop;
}
return {
left: left,
top: top
};
};
me.extend = function(target, obj) {
for(var key in obj){
target[key] = obj[key];
}
};
//扩展属性值
me.extend(me, {
hasTransform: _transform !== false,
hasTouch: 'ontouchstart' in window,
});
//初始化并定义子属性值
me.extend(me.style = {}, {
transform: _transform,
transitionDelay: _prefixStyle('transitionDelay'),
});
return me; //返回值作为utils的函数
})();
//调用函数,而不是utils.me.getTime()
utils.getTime();
idtag = document.getElementById('tag');
var offset = utiles.offset(idtag);
匿名运行函数
(function() {
alert('do something!');
})();
列表浏览器style
var style = document.createElement('div').style;
for(var key in style) {
console.log(key + ' : " + style[key]);
}
Event
三类事件,三种创建和初始化
HTMLEvents : initEvent
MouseEvents: initMousrEvent
UIEvents : initUIEvent
监听event
document.getElementById('tag').addEventListener('tag', function(e) {
alert('tag event occur!');
}, false);
创建、初始化和触发事件
function genEvent() {
var event = document.createEvent('HTMLEvents');
event.initEvent('tag', false, false);
idTag.dispatchEvent(event);
}
npm安装
yum install nodejs yum install npm npm install -g bower npm install -global gulp npm install gulp --save-dev #全局 npm install -g grunt-cli npm install grunt --save-dev npm install load-grunt-tasks --save-dev npm list npm -global list npm config list npm config list -l 网络不行可以考虑一些国内的源试试,例如 npm config set registry="http://r.cnpmjs.org/" npm config set registry="http://registry.npm.taobao.org/" 升级到稳定版本 $ npm install -g n $ n stable
安装npm
1、下载源码,你需要在http://nodejs.org/下载 2、解压源码 tar zxvf node-v4.4.3-linux-x86.tar.gz 3、 编译安装 cd node-v4.4.3-linux-x86 ./configure --prefix=/usr/local/node make make install 4、 配置NODE_HOME,进入profile编辑环境变量 vim /etc/profile 设置nodejs环境变量, #set for nodejs export NODE_HOME=/usr/local/node export PATH=$NODE_HOME/bin:$PATH 运行: source /etc/profile 淘宝npm镜像 搜索地址:http://npm.taobao.org/ registry地址:http://registry.npm.taobao.org/ 1.临时使用 npm --registry https://registry.npm.taobao.org install express 2.持久使用 npm config set registry https://registry.npm.taobao.org // 配置后可通过下面方式来验证是否成功 npm config get registry // 或 npm info express
字串处理
var a = new Array(1,2,3,4,5);
var str = arr.join('-'); /*数组转换为字串*/
var b = str.split('-'); /*字串转换为数组*/
var c = [6,7,8,9];
var d = a.concat(c); //连接数组
a.push(10);
a.pop();
a.sort();
a.reverse();
a.shift(); //删除第一个元素并返回值
a.unshift([11,12]); //在第一个元素前加一个值
a.slice(1,2); //返回字串片段
a.splice(4,1); //删除一个元素并返回值
a.toString(); //
类型转换
// 强制转换为Boolean 用 !! var bool = !!"c"; console.log(typeof bool); // boolean // 强制转换为Number 用 + var num = +"1234"; console.log(typeof num); // number // 强制转换为String 用 ""+ var str = ""+ 1234; console.log(typeof str); // string
CSS3中translate、transform和translation的区别和联系
translate: transform的一个方法, 元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数:
用法:transform: translate(50px, 100px);
-ms-transform: translate(50px,100px);
-webkit-transform: translate(50px,100px);
-o-transform: translate(50px,100px);
-moz-transform: translate(50px,100px);
transform:CSS3中主要包括
旋转:rotate() 顺时针旋转给定的角度,允许负值
rotate(30deg)
扭曲:skew() 元素翻转给定的角度,根据给定的水平线(X 轴)和垂直线(Y 轴)参数:
skew(30deg,20deg)
缩放:scale() 放大或缩小,根据给定的宽度(X 轴)和高度(Y 轴)参数:
scale(2,4)
移动:translate() 平移,传进 x,y值,代表沿x轴和y轴平移的距离
所有的2D转换方法组合在一起:
matrix() 旋转、缩放、移动以及倾斜元素
matrix(scale.x ,, , scale.y , translate.x, translate.y)
改变起点位置: transform-origin: bottom left;
综合起来使用:transform: 30deg 1.5 30deg 20deg 100px 200px;
transition: 允许CSS属性值在一定的时间区间内平滑的过渡,
需要事件的触发,例如单击、获取焦点、失去焦点等
transition:property duration timing-function delay;
property:CSS的属性,例如:width height 为none时停止所有的运动,可以为transform
duration:持续时间
timing-function:ease等
delay:延迟
注意:当property为all的时候所有动画
例如:transition:width 2s ease 0s;
2017-11-10
function test(id, i) { }
当调用时可以只带一个参数:
test(id);
函数的另一种定义方式:
test = function(id,i) { )
不定参数的调用:
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
apply([thisObj[,argArray]])
不定参数名必须是arguments
fun.apply(object, arguments);
fun.call(object, arg1, arg2, arg3);
fun.apply(object, [arg1, arg2, arg3]);
2017-10-05
SecureHeaders SecureHeaders 是 Twitter 送给 Web 开发者的一份大礼,作为一款 Web 安全开发工具,Secureheaders 能够自动实施安全相关的 header 规则,包括内容安全政策(CSP),防止 XSS、HSTS 等攻击,防止火绵羊(Firesheep)攻击以及 XFO 点击劫持等。
2017-09-25
从去年开始,有越来越多的项目在使用 vue。这些项目里面,有桌面端(比如 饿了么安全应急响应中心)也有移动端(比如 饿了么招聘),有面向用户的,也有后台系统。实践方案的话,vue + webpack + vue-router + vue-resource。就我个人而言,vue 的开发体验还是比较愉悦的。首先,文档非常友好,所以上手会比较快。其次,配合 webpack 和 vue-loader,每个页面都是一个 .vue 文件,写起来很方便。另外,适合做组件化开发(每个组件也是一个 .vue 文件,可以全局或者在需要的地方引入),如果遇到比较复杂的、父子组件间需要频繁通信的场景,可以用 vuex 搞定。 作者:杨奕 链接:https://www.zhihu.com/question/38213423/answer/101195694 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2017-05-01
bower config file:
bower.json
.bowerrc
{
'directory' : 'bowers'
}
配色方案
wget -Ogithub.vim http://www.vim.org/scripts/download_script.php?src_id=23147