前端路上

万物皆有裂缝

在vue组件中,在style标签上添加scoped属性,以表示它的样式作用于当下的模块,很好的实现了样式私有化的目的,这是一个非常好的机制。但是为什么要慎用呢?在实际业务中我们往往会对公共组件样式做细微的调整,如果添加了scoped属性,那么样式将会变得不易修改。初写这篇文章时,本人没有找到一个好的方法去解决这个问题,后来经过大伙的解答,才让我恍然大悟。

何为谨慎使用

谨慎使用不是不用,而是持一种审视的目光去看待它。scoped肯定是解决了样式私有化的问题,但同时也引入了新的问题—样式不易(可)修改,而很多时候,我们是需要对公共组件的样式做微调的。所以我才说要谨慎使用

阅读全文 »

众所周知,虽然javascript中关于时间的API有不少,我们可以通过方法单独的获取年、月、日、时、分、秒、毫秒…貌似很多,最近写了一个日历(以前写的,但写得很烂,最近优化一下),所以下面简单的记录一下如何写一个日历,列出了一些我在写日历过程中自己封装的一些方法

效果图

先来一张效果图,由于没有UI设计,所以就自己简单的设计了一个样式(好歹我也是设计专业的,虽然已不做设计很多年),虽然略丑,但重要的是功能!!!

阅读全文 »

for...infor...of都是用于数据的遍历。for...inES5标准,用于遍历对象属性(键),而for...ofES6标准,是对for...in的修正,用于遍历对象元素(值),for...of兼容性不是很好(除了PC端老顽固IE之外,移动端某些安卓机和浏览器也是不支持它,具体可以查看MDN)。

for…in

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
Object.prototype.objMethod = function() {};
Array.prototype.arrMethod = function() {};

var arr = [2, 9, 5], obj = { name: '2ue', w: 130 };
arr.msg = 'hello';
obj.msg = 'hello';

for (var i in arr) {
console.log(i); // "0", "1", "2", "msg", "arrCustom", "objCustom"
}

for (var i in arr) {
if (arr.hasOwnProperty(i)) {
console.log(i); // "0", "1", "2", "msg"
}
}
for (var i in obj) {
console.log(i); // "name", "w", "msg", "objCustom"
}

for (var i in obj) {
if (obj.hasOwnProperty(i)) {
console.log(i); // "name", "w", "msg"
}
}
阅读全文 »

目前,web网页使用桌面通知功能的越来越多,包括微博,腾讯视频等大厂站,桌面通知功能是H5的一个API - Notifications。它允许网页或应用程序可以发出通知,通知将被显示在页面之外的系统层面上(通常使用操作系统的标准通知机制,但是在不同的平台和浏览器上的表现会有差异),这样即使应用程序空闲或在后台也可以向用户发送信息。

应用场景

Notifications的诞生简化了网站或者应用与用户之间的沟通成本(时间成本和开发成本),增强用户黏性(减少了用户离开应用的可能)。传统的通知方式,大多是通过站内信(消息),邮件,短信等方式,它们通常需要刷新(跳转)页面、离开应用打开其他应用或终端来查看消息;而桌面通知功能大大的简化了这个过程,消息的传递基本不消耗时间(如果不设置setTimeout,用时基本不会超过1s),并且用户不需要离开应用,这都带来了极大的方便。可以预见,Notifications将会在很多网页或应用中被大量使用。当然Notifications也具有它的局限性:无法存档、即看即毁
那么,这个功能到底能用在哪些场景呢?只能说能应用的场景很多:

阅读全文 »

mocha+chai是比较流行的测试框架‘套装’,能实现一些基本的前端测试如函数功能测试,模拟登陆,异步测试,流程测试等

官方文档

mocha

阅读全文 »

前端测试是保证代码质量以及程序稳定的一种可靠方式,同时也从代码层面解决了自测难,自测烦等前端测试综合症。当然在前端开发引入测试环节无疑会增加人力和时间成本,如果最终产生的结果和增加的成本能够两两抵消产生正面效应,那么有必要考虑把测试环节加入到团队的规划中。但是在实际开发过程中,测试用例更多的被用于开源项目中,在大部分公司的生成项目很少使用维护测试用例,其根本原因是不纯粹的生产环境导致维护测试用例变得困难,而目的性很强的开源项目则更纯粹,所以前端测试的发展任重而道远。

Ps:本次更多的是讲述概念性的东西,代码性的具体实例不做过多实践


阅读全文 »

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变量的类型是随变量的值改变而改变的。为了代码的安全性,在有些情况下我们要判断变量值的类型,如何正确的判断变量的类型就成了一个比较有深度的问题。下图列举一些常见的类型:

阅读全文 »
0%