前端工程化

1、技术选型

vue、react、element、ant

2、统一规范

eslint、husky

3、测试、布署、监控

ut、e2e、mock

4、性能优化

lazy、module

a、视图渲染

b、代码 | 结构

tree shaking

import { select, button, tip } from elementUI
Vue.use(select)
Vue.use(button)
Vue.use(tip)

模块懒加载

vue-router + trunk

noParse
webpack 升级

c、网络

5、模块化重构

SPA、多页、多 trunk

函数式编程

JS 函数式编程

特点
  1. Vue3 React16.8 全面化函数式的推动
  2. 函数式编程可以使得代码单元相对更加独立 - tree shaking 过程更顺畅,更方便做 UT
  3. 减少了对 this 的依赖,减轻了开发人员对于指向问题的困惑
  4. js 天生友好函数式:ramda、loadsh

概念

  1. 一种抽象运算过程
  2. 函数式的函数并非对于过程运算,函数的映射
  3. 幂等 - 相同的输入始终得到相同的输出
纯函数
let arr = [1, 2, 3, 4, 5];arr.slice(0, 3); // [1, 2, 3]
arr.slice(0, 3); // [1, 2, 3]arr.splice(0, 3); // [1, 2, 3]
arr.splice(0, 3); // [4, 5]

对于系统的改造

// 不纯的
let min = 18;
let limit = (age) => age > min;// 纯纯的
let limit = (age) => age > 18;

对于大型系统来说,对于外部状态的依赖,会大大的提高系统复杂性

  • 问题:
    18 被硬编码到了函数内部的,造成了功能拓展的局限

高阶函数 HOC

定义:

  1. 函数作为参数被传递到另一个函数中
  2. 函数作为返回值被另外一个函数返回
let fn = (arg) => {let outer = "outer";let innerFn = () => {console.log(outer);console.log(arg);};return innerFn;
};let closure = fn(18);
// 闭包

函数柯里化

传递给函数一部分参数用于功能调用,让他返回一个函数去处理剩下的参数

let add = (x, y) => x + y;// 柯里化后
let add = (x) => (y) => x + y;let add2 = add(2);
let add200 = add(200);add2(2); // 2 + 2 add(2)(2)
add200(50); // 200 + 50// 回到上面的limit, 纯函数化
let limit = (min) => (age) => age > min;
let limit18 = limit(18);
limit18(20); // true

是一种预加载方式

  • 问题
    包心菜代码的产生 h(g(f(x)));

组合

通过更优雅的方式实现纯函数的解耦

let compose = (f, g) => (x) => f(g(x));let add1 = (x) => x + 1;
let mul5 = (x) => x * 5;compose(mul5, add1)(2); // 15// 面试题 - 数组长度未知的情况下,拿到最后一项
let first = (arr) => arr[0];
let reverse = (arr) => arr.reverse();let last = compose(first, reverse);last([1, 2, 3, 4, 5]); // 5

前端工程化及函数式编程相关推荐

  1. 前端开发之函数式编程

    通用的函数式编程语言,是Haskell,被函数式原教旨主义者认为是纯函数式语言.函数式编程的思想也不断影响着传统编程语言,比如Java 8开始支持lambda表达式,而函数式编程的大厦最初就是基于la ...

  2. promise 浏览器实现的源码_【大前端01-01】函数式编程与JS异步编程、手写Promise...

    [简答题]一.谈谈你是如何理解JS异步编程的,EventLoop.消息队列都是做什么的,什么是宏任务.什么是微任务? 如何理解JS异步编程 众所周知JavaScript语言执行环境是"单线程 ...

  3. (送书和红包)快人一步,掌握前端函数式编程

    大家好,我是若川.上周末送出了3本新书和若干红包,抽奖名单已公布.本周又争取到了4本<前端函数式编程>书籍包邮送给大家,抽奖规则见文末,与以往不同的是除了关键词.留言.在看抽奖外,还有最早 ...

  4. JS函数式编程概念理解:函子(Functor)

    标签(空格分隔): 函数式编程 函子 functor 很多前端在学习函数式编程之前,都会被各种概念折磨的死去活来,本文的重点算是函数式编程之前的一个甜品,重点在如何切入. 函子即Functor是FP( ...

  5. 函数式编程的Java编码实践:利用惰性写出高性能且抽象的代码

    简介: 本文会以惰性加载为例一步步介绍函数式编程中各种概念,所以读者不需要任何函数式编程的基础,只需要对 Java 8 有些许了解即可. 作者 | 悬衡 来源 | 阿里技术公众号 本文会以惰性加载为例 ...

  6. 关于函数式编程的思考(1)

    作者:李英杰,美团金融前端团队成员.欢迎大家一起来探讨FP 题外话:只是单纯地谈谈个人对函数式编程的理解,欢迎大家来一起探讨.也不会提及高阶函数与范畴学的内容,只聊一些很入门的问题.函数式编程的优点这 ...

  7. 【Web技术】1008- coding优雅指南:函数式编程

    函数式编程是一种编程范式,主要思想是把程序用一系列计算的形式来表达,主要关心数据到数据之间的映射关系.同时在react hook中,其实存在了大量的函数式编程的思想.所以作为一个前端,对于函数式编程的 ...

  8. 前端基础进阶(七):函数与函数式编程

    纵观JavaScript中所有必须需要掌握的重点知识中,函数是我们在初学的时候最容易忽视的一个知识点.在学习的过程中,可能会有很多人.很多文章告诉你面向对象很重要,原型很重要,可是却很少有人告诉你,面 ...

  9. 前端进击的巨人(四):略知函数式编程

    系列更文前三篇文章,围绕了一个重要的知识点:"函数". 函数调用栈.函数执行上下文.函数作用域到闭包.可见不理解函数式编程,代码都撸不好. 函数是一等公民 函数与其它数据类型一样, ...

最新文章

  1. 没有数学何来计算机:论计算机起源的数学思想
  2. MOBA项目问题记录
  3. Docker环境安装Kafka
  4. Error while adding the mapper ‘interface *****类‘ to configuration报错原因
  5. 【CV】计算机视觉领域有哪些不错的博客?
  6. webpack多个Html,少量修改webpack配置支持打包多页面
  7. 数据挖掘—BP神经网络(Java实现)
  8. 阿里云RPA(机器人流程自动化)干货系列之一:认识RPA(上)
  9. python数组内运算_有效的数学运算在Python中用cython进行小数组运算
  10. 转载:兼容IE的内阴影和外阴影效果
  11. expect移植到powerPC平台的过程
  12. 梯度下降优化器小结(RMSProp,Momentum,Adam)
  13. cad图形如何导入到奥维地图_如何将CAD图导入奥维地图
  14. 酷开科技 × StarRocks:统一 OLAP 分析引擎,全面打造数字化的 OTT 模式
  15. 如何制作和部署war包
  16. 移动彩信大小限制307200字节?
  17. 自动驾驶货运编队行驶介绍
  18. 木头姐减持,机构却看好,京东大涨后的前景落脚何处?
  19. eMMC SI 总结
  20. vc实现魔兽3改键程序

热门文章

  1. syslog 华为 服务器_配置华为交换机把日志发送到远程centos syslog服务器上
  2. 完全基于C++ 实现的人机对战五子棋小游戏
  3. h5读取data.json渲染在页面完成动画
  4. 优化ClickHouse星型模型查询性能
  5. Oracle 分析函数(10G)语法详解
  6. 点餐系统架构模型_【socket】小项目-智能点餐系统
  7. oracle求平均值
  8. 解决Windows10多次自动修复失败,电脑无法开机的问题
  9. Java —— 引入无用包的影响及快速清理方法
  10. 关于笔记本运行调试 HTC Vive