Skip to content

Instantly share code, notes, and snippets.

@UprototypeU
UprototypeU / JavaScript中高阶函数的魅力
Created September 5, 2018 08:38
高阶函数是指至少满足下列条件之一的函数 1函数可以作为参数被传递 2函数可以作为返回值输出
高阶函数实现AOP
AOP(面向切面编程)的主要作用就是把一些和核心业务逻辑模块无关的功能抽取出来,然后再通过“动态织入”的方式掺到业务模块种。这些功能一般包括日志统计,安全控制,异常处理等。AOP是Java Spring架构的核心。下面我们就来探索一下再Javascript种如何实现AOP
在JavaScript种实现AOP,都是指把一个函数“动态织入”到另外一个函数中,具体实现的技术有很多,我们使用Function.prototype来做到这一点。代码如下
/**
* 织入执行前函数
* @param {*} fn
*/
Function.prototype.aopBefore = function(fn){
console.log(this)
// 第一步:保存原函数的引用
自古以来(是有多?~),网页CSS的垂直居中需求始终没有停过,而其困难度也始终没有让人轻松过,经过了每位开发先烈的研究后,据说CSS的垂直居中技巧已达到近十种之多,但始终鲜为人知,部分公司甚至将CSS的垂直居中技巧当成面试题,其重要性可见一斑,经过了Amos通灵了一下之后把垂直居中的写法扩展到了23种,今天就让Amos带着大家轻松的了解一下CSS的垂直居中的方式吧。
1、Line-height
适用情景:单行文字垂直居中技巧
这个方式应该是最多人知道的了,常见于单行文字的应用,像是按钮这一类对象,或者是下拉框、导航此类元素最常见到的方式了。此方式的原理是在于将单行文字的行高设定后,文字会位于行高的垂直中间位置,利用此原理就能轻松达成垂直居中的需求了。
<div class="content">Lorem ipsam.</div>
.content{
@UprototypeU
UprototypeU / 新鲜出炉的前端面试题
Created August 29, 2018 09:14
作者:Belinda 来自:segmentfault.com/a/1190000015916686
最近参加了几场面试,积累了一些高频面试题,我把面试题分为两类,一种是基础试题: 主要考察前端技基础是否扎实,是否能够将前端知识体系串联。一种是开放式问题: 考察业务积累,是否有自己的思考,思考问题的方式,这类问题没有标准答案。
基础题
题目的答案提供了一个思考的方向,答案不一定正确全面,有错误的地方欢迎大家请在评论中指出,共同进步。
怎么去设计一个组件封装
组件封装的目的是为了重用,提高开发效率和代码质量
低耦合,单一职责,可复用性,可维护性
前端组件化设计思路
@UprototypeU
UprototypeU / 自动化运维
Last active August 23, 2018 07:48
前端自动化流程构建及部署
前言
这个工作流在你们公司是前端搞的还是运维统一处理的呢?可能你在公司用惯了它但它是怎么玩的可能还不一定会知道。
背景
公司的前端构建及部署工作都是人工去做,随着业务扩大,项目迭代速度变快,人员增多,各种问题都暴露出来,本文是对前端自动化工作流进行探索后的一篇经验分享,将通过一个简单案例分享一下基于Jenkins的前端自动化工作流搭建的过程,搭建完这套工作流,我们只需要在本地发起一个git提交,剩下的单元测试,打包构建,代码部署,邮件提醒等功能全部自动化完成,让持续集成、持续交付、持续部署变得简单易操作,真正解决人工构建部署的诸多问题。
Jenkins是什么?
Jenkins 是一款业界流行的开源持续集成工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。
本案例要实现的功能
本地项目发起一个git提交,剩下的单元测试,打包构建,代码部署,邮件提醒等全部自动化完成。
开始
准备工作
@UprototypeU
UprototypeU / es6
Last active August 22, 2018 02:22
es6中有很多特性,使javascript语法更加丰满,总结一波常用的es6知识点。
1.变量声明const和let
在ES6之前,我们都是用var关键字声明变量。无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部)。这就是函数变量提升例如:
function a() {
if(bool) {
var str // 变量提升
str = 'frontend'
} else {
//此处访问str 值为undefined
console.log(str)
}