fly63前端网

www.fly63.com

首页文章资源工具教程 栏目
  • 关于我们
  • 网站投稿
  • 赞助一下
搜索

在线工具_工作生活好帮手

打造各种简单、易用、便捷的在线工具,网友无需注册和下载安装即可使用

点击查看

关闭

提交网站

bacon.js
分享
复制链接
新浪微博
QQ 好友

扫一扫分享

网站地址:https://baconjs.github.io
GitHub:https://github.com/baconjs/bacon.js/
网站描述:一个函数响应式编程的 JS 库

BaconJS 是什么

BaconJS 是一个函数响应式编程(Functional reactive Programming)的 JS 库。虽说是函数响应式编程,但我用了会儿,感觉响应式编程更令人印象深刻,它与业界比较火的响应式编程库 RxJS 有点类似。值得一提的是,angular 内置的许多 api 就使用了 RxJS 。可见,响应式编程可能会是未来一个很重要的发展方向。


如何理解 FRP

函数响应式编程(Function Reactive Programmin),简称 FRP 。这是 BaconJS 最显著的特点,要想入门 BaconJS ,只需理解这种编程思维即可,不必被官网提供的海量 API 所困扰。

FRP = FP(Function Programming) + RP(Reactive Programming)  

顾名思义,函数响应式编程 = 函数式编程(Functional Programming) + 响应式编程(Reactive Programming)


2.1 函数式编程(FP)

函数式编程是业界很火的一个概念,我曾不止一次试图去彻底的弄懂它,但至今也是一知半解的状态~

不管怎么样, 以下几个 FP 的特点还是需要了解的:

  • 纯函数(Pure function),函数唯一的输入只会有唯一的输出。
  • 不可修改状态(Immutable state)。

我们常常把 FP 和命令式编程(Imperative programming)进行比较,我个人认为 FP 更加强调代码的可预测性(Predictable),尽可能的避免代码的副作用(Side effect),更加关心数据的映射,而命令式编程关心的是解决问题的步骤。


2.2 响应式编程(RP)

随着 Google 前端框架 Angular(Angular 1.x 称为 AngularJS,Angular v2+ 称为 Angular) 的发布,由于 Angular 几乎所有的异步接口都使用了响应式编程库 RxJS ,响应式编程得到了越来越多的关注。

我算是半个 NG 粉,有用 Angular 开发过一个项目,用下来感觉 RxJS 的开发体验特别好。总的来说,RP 有如下几个特点:

  • 流(Stream)的概念,衍生的概念有:数据流(Data stream)、事件流(Event stream) 。
  • 链式调用(Chain invoke),使代码看起来清晰、简洁。
  • 处理异步数据流的神器。

响应式编程主要是用来处理异步数据流(Asynchronous data stream),可以是 ajax 请求产生的数据流,也可以是 dom 事件(或者其他时间)产生的事件流。

对于其核心的概念:流(Stream),我的理解是:流是按照时间顺序排列的一系列正在进行的事件。在流这个概念的基础上,RP 框架提供了一系列(海量)的接口来处理流,使得我们开发出来的代码显得非常清晰。


bacon.js安装与使用

安装

npm install baconjs

使用

import { EventStream, once } from "baconjs"
let s: EventStream<string> = once("hello")
s.log()



链接: https://fly63.com/nav/2200

more>>
相关栏目
react
Facebook开发的一款高效、灵活、声明式设计的JS库
官网GitHub
AngularJS
Google推出有条理,可维护,易编程的MVVM框架
官网GitHub
backbone
提供:模型、集合、视图,开发重量级的javascript应用的框架
官网GitHub
jquery
一个快速、简洁的JavaScript代码库
官网GitHub
zepto.js
一个轻量级的针对现代高级浏览器的JavaScript库
官网GitHub
Ember
JavaScript MVC框架,它用来创建复杂的Web应用程序,消除了样板
官网GitHub
nw.js
轻量级桌面应用开发的捷径
官网GitHub
socket.io
一个WebSocket库,包括了客户端的js和服务器端的nodejs
官网GitHub
petite-vue
vue的可替代发行版,针对渐进式增强进行了优化
点击进入GitHub
ocLazyLoad
AngularJS 的延迟加载(惰性加载)模块和组件
官网GitHub
weui.js
WeUI 的轻量级 js 封装
点击进入GitHub
Qatrix
一款超轻量级JS框架
点击进入GitHub
Mootools
大部分浏览器原生对象做了扩展
官网GitHub
enyo.js
强调模块化和封装的Js应用程序框架
点击进入GitHub
workbox
谷歌推进的 web 应用新模型,将网站升级成 PWA
官网GitHub
Senna.js
快速单页应用程序引擎
官网GitHub

手机预览