在 js 中,如何编写一个可无限调用的柯里化 sum 函数?(sum(1,2,3)(4)()(5))。在下文中,就让我们一起实现它。而在实现前,我们需要引入两个知识点:柯里化与 Symbol.toPrimitive。
柯里化首先,什么是柯里化?柯里化是函数式编程中的一个重要特性,是把接受多个参数的函数变换成接受部分参数的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
例如: func(a, b, c, d) => func(a)(b)(c)(d) 就是一个函数的柯里化应用。柯里化函数的优点是可以很方便的基于现有的通用函数构建出一定特性的新函数。我们举一个简单的例子
123...
本文首发于 知乎专栏:饿了么大前端
俗话说「懒是程序员的美德」。在越来越注重前端工程化的今天,「Ctrl+C」、「Ctrl+V」的代码,虽然用起来一时爽,一旦需要修改就如同面临火葬场。如何「懒」出效率,是值得思考的问题。减少代码的拷贝,增加封装复用能力,实现可维护、可复用的代码,无疑是我所认为的「懒」的高级境界。鉴于笔者之前使用 React 偏多,进入饿了么后也逐步使用了不少 Vue 进行开发,所以就借此机会,谈谈在 React 和 Vue 中各种基于组件的复用与实现方式。
Mixin 混入模式最原始的一种复用方式应该就是 Mixin。通过将公用逻辑封装为一个 Mixin,通过注入的...
在前端页面的渲染这块,近几年来感觉经历了从服务端渲染(多页面)=>客户端渲染(SPA)=>同构渲染的演变,虽然对各自概念大致了解,也在网上粗略看过一些资料,但始终不求甚解。趁此机会做个简单的总结。
概念
客户端渲染在浏览器中通过JS直接进行页面的渲染路由跳转等操作,与后端的交互主要为API微服务接口的数据调用。得到数据后在前端进行分析处理和界面生成展现。比较代表性的为React,Vue,Angular三大前端框架的SPA(Single Page Application)应用。
服务端渲染后端不仅仅进行数据的获取处理操作,同时也负责页面的生成,最终传到客户端(浏览器)的是生成的...
要了解Service Worker相关知识,需要对于Web Worker有一定基础的了解。
什么是Service WorkerService Worker(简称为SW)是基于Web Worker的事件驱动的,他们执行的机制都是新开一个线程去处理一些额外的,以前不能直接处理的任务。目前SW主要功能包括了浏览器端的请求拦截代理,推送通知和后台同步等一系列功能…目前使用最多的应该是利用SW实现的本地代理缓存,从而实现良好的离线体验,这也是PWA(Progressive Web Application)技术的基础。(具体会单独开一篇讲
今天就让我们聊一聊Web的离线缓存和SW所带来的解决方案。
...
前言最近看到一个在图片里隐藏信息的东西,觉得挺有趣,就稍微去了解了下。查各种资料得知是一种叫隐写的技术,大多是借助后端完成。然后为了证明前端是无所不能的,对的。就用纯前端的方式写了个简单的 LBS 图片隐写工具。
好了,废话不多说,先丢上一些基本信息:
github: 图片隐写
正文隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。一般用来传递一些隐秘信息或者起到数字签名的一些目的。本文中采用的 LBS 算法是隐写里的基本算法,鲁棒性较低,但作为一个玩具玩玩也是不错的。
LBS 算法LBS 全称为 least sign...