前端路上

万物皆有裂缝

nvm:一个node和npm的版本管理器(node&npm version manager),能让你快速的在不同版本间切换。

安装

下载地址:官网下载
有两种版本nvm-noinstall.zip(便携版)和nvm-setup.zip(exe安装版)
两者唯一区别就是便携版需要手动配置全局变量,而安装版只需要在安装时选定安装目录则会自动配置好。

阅读全文 »

虽然有了git的图形化工具,但个人还是喜欢命令行,并且结合alias功能,也能非常快速的完成很多功能。记录一些项目中常用的git命令,方便查阅

查看状态

可以查看工作区(edit即add之前)和暂存区(add之后,commit之前)

阅读全文 »

Babun是一款集颜值功能于一身的window平台下的命令行工具。它集成了zsh、Cygwin等强大的工具,支持各种配置,并且有丰富的插件支持;并且有丰富的命令和命令提示功能,以及超级棒的历史命令提示。

ps: 前文有我记录的关于Babun的一些特点,以及使用,请看windows平台下超强的cmd工具Babun使用笔记一文

问题描述

阅读全文 »

类型判断是我们在编程中常遇到的棘手问题,严格的变量类型约束会为代码减少很多致命的BUG。本文是对常用到的类型判断的一个整理,以求以最简洁的方式来判断变量的类型。
本文所有的如果没特指,都是基于ES5的原生javascript

变量的基本类型

JavaScript变量包含两种不同的数据类型的值:基本类型引用类型。基本类型是指简单的数据,有NumberStringBooleanUndefinedNull(null可以算作是一个特殊的基本数据类型),而引用类型指那些可能包含多个值的对象,有ObjectArrayDateRegExpFunction等。在JavaScript中,我们通过var来声明变量,由于JavaScript弱语言类型,我们无法在申明的时候规定他的类型,JavaScript变量的类型是随变量的值改变而改变的。为了代码的安全性,在有些情况下我们要判断变量值的类型,如何正确的判断变量的类型就成了一个比较有深度的问题。下图列举一些常见的类型:

阅读全文 »

Babun是一款集颜值功能于一身的window平台下的命令行工具。它集成了zsh、Cygwin等强大的工具,支持各种配置,并且有丰富的插件支持;并且有丰富的命令和命令提示功能,以及超级棒的历史命令提示。

Babun

官方贴出了Babun的十大特性

阅读全文 »

使用官方提供的vue-simple-template配置打包,写的一个简单的vue-datepicker。支持选择功能,功能比较简单,欢迎大家拍砖.

效果预览(demo)

vue-datepicker

阅读全文 »

与其在上一秒中沉醉,不如努力拥抱下一秒.

匆匆而去的2016

阅读全文 »

移动端越来越被大众所接收,那么相应的技术就越来越向它靠拢,这是一种不可阻挡的趋势,也是万物发展的规律。移动端有三大难题:兼容、调试和适配。这三大问题就好像三座无法逾越的大山阻挡者我们前进的步伐,此文将记录我在项目中关于移动端适配的一些方式,供大家参考

分析

移动端适配的根本原因

阅读全文 »

有人说为什么会使用webpack+gulp呢?强大的webpack完全可以摒弃gulp了嘛?话虽如此,但个人觉得webpack配置太繁琐复杂,相对来说gulp更简单一点,并且gulp也能很好的完成我期望的任务。所以我想用webpack来处理js任务(因为它支持AMD和CMD,并且可以直接引入模块),用gulp处理images/css/html等资源

ps: 平时在项目中使用它们的机会不多,以下都是自己项目之外的折腾,如果有错误之处,请不吝指出。

demo

阅读全文 »

正则的魅力在于使用很简洁的方式解决一些比较复杂的方式,使代码变得更优雅,也使实现的过程变得更简单透明。本文搜集整理一些常用正则,记录以便查阅

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var regex = window.regex || (function (document, $) {
var _reg = {};
/* 'pwd':/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,16}$/,//密码 */
//验证数字
$.extend(_reg, {
'num': /^\d+$/, //数字
'znum': /^[1-9](\d+)?$/, // 大于0的数字
'float': /^[-]{0,1}(\d+)[\.]+(\d+)$/, //浮点数
'money': /^\d{1,12}(?:\.\d{1,3})?$/, // money
'idCard': /^\d{15}$|^\d{18}$|^\d{17}[xX]$/, //身份证
'idCardStrict':/^(\d{6})([1-2])(\d{3})((?:0[1-9])|(?:1[0-2]))((?:0[0-9])|(?:[1-2][0-9])|(?:3[0-1]))(\d{3})(\d{1})$/,
'qq': /^[1-9]\d{4,15}$/, //QQ
'pwd': /^[\@A-Za-z0-9]{6,16}$/, //密码
'areacode': /^(0[1,2]{1}\d{1})$|^(0[3-9]{1}\d{2})$/, //区号
'tel': /^\d{7,8}$/, // 固话格式
'mobile': /^((\+86)|(\(\+86\)))?-?(13|14|15|18|17)[0-9]{9}$/, //验证手机号码
'telephone': /^(((\+)?86)|(\(\+86\)))?-?((((0)?[1,2]{1}\d{1})?-?\d{8})|((0[3-9]{1}\d{2})?-?\d{7,12}))-?(\d{1,8})?$/, //验证固定电话
'phone': /^((\+86)|(\(\+86\)))?-?(13|14|15|18|17)[0-9]{9}$|^((\+86)|(\(\+86\)))?-?(((0[1,2]{1}\d{1})?-?\d{8})|((0[3-9]{1}\d{2})?-?\d{7,8}))$/, //手机号码和固定电话
'zipcode': /^\d{6}$/ //验证邮编
});
//验证字符串
$.extend(_reg, {
'email': /^\w{1,16}([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, //邮箱
'chinese': /^[\u4E00-\u9FA5]+$/, //仅汉字
'char': /^[A-Za-z]+$/, //仅仅是字母
'charn': /^[A-Za-z0-9]+$/, //数字加字母
'nospecial': /^[\u4E00-\u9FA5A-Za-z0-9]+$/, // 不包含特殊字符
'url': /^((http|https|ftp):\/\/)?(\w(\:\w)?@)?([0-9a-z_-]+\.)*?([a-z0-9-]+\.[a-z]{2,6}(\.[a-z]{2})?(\:[0-9]{2,6})?)((\/[^?#<>\/\\*":]*)+(\?[^#]*)?(#.*)?)?$/,
'loginName': /^(13|14|15|18|17)[0-9]{9}$|^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, // 用户名
'userName': /^[\u4e00-\u9fa5]{2`,4}$|[a-zA-Z]{4,20}$/, //真实姓名
'nickName': /^([a-zA-Z\u4e00-\u9fa5]{1}[a-zA-Z0-9_\u4e00-\u9fa5]{3,19})$/ //昵称
});
return _reg;
})(document, window.jQuery);
window.regex = regex;
阅读全文 »
0%