最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Angular/Vue/React 联合教程(二)封装单位

    正文概述 掘金(杜帅在掘金)   2021-03-26   608

    作为处理同一领域问题的工具,Angular, React, Vue 的基础,都是挂载在 document 下的那几个 virsual dom api,比如 createElement,append ...

    也因此,在开发思想上,三大框架面临同样的问题,需要相似的解决方案,原理上不会有太大区别

    真正将三大框架区分开来的,只有两点:

    1. 封装单位
    2. 框架生态

    什么是封装单位呢?简单来说,就是你的组件(服务,模块),是用什么结构进行包裹的

    • Angular - class

    • React - function

    • Vue - proxy object (代理对象)

    这是三大框架被区分开来的根本原因,甚至可以说,任何一个技术栈,都会有因为封装单位而产生的不同主流框架,只是在前端表现为 Angular,React,Vue 而已

    为了彻底理解三种封装单位的区别,我们需要细致地了解这三种抽象封装的特性

    Class 人类心智的模拟

    Class 是什么?

    Class 是一个形式系统,是对人类心智的模拟,早在战国时期,我国就有思想家有过 “白马非马” 的表述,意识到了人类思维中,关于抽象概念class和实际事物object的区别

    英语中有代词 the,中文中有代词 那个、此,就像一个实例化函数一样,将我们心中的抽象概念,指向现实生活中的具体事物

    将具体事物用抽象概念Class指代,我们就能在思维中进行模拟和预演,从而实现

    抽象编程

    因为天生具有和人类心智的亲和性,class 天生具有 自解释性

    因此代码的可读性,可维护性都会比其他封装结构高得多

    比如 Angular 的常用工具 Compodoc,就能自动生成一个项目的完整文档和蓝图,可以轻易地理解项目的结构和依赖关系

    Angular/Vue/React 联合教程(二)封装单位

    function 计算的一般抽象

    function 是对计算过程的抽象,或者说是对 现实世界数学表述 的抽象

    接受一个输入,返回一个输出

    也因此,在讨论封装性的时候, class 和 object 可以避开不谈, 但是 function 必须单独解释:

    函数的封装性,需要保证其返回结果只由输入决定,运行过程中不会产生其他变化

    相同的输入,总是会产生相同的输出

    是的,这就是在使用 React 时,老生常谈的 ——

    不变性!副作用!

    因为这个概念在 React 开发中是非常基础且前置的概念,难免会引起很多误解

    比如:

    • 不变性和副作用在 以函数为基本封装单位的系统中 非常重要,但是在 class 和 object 中没有用处,this 直接可以保证封装性,而在同其他 class,object 进行交互的时候,组合要有效率的多

    • 不变性指的是,函数参数在整个函数运行过程中不会变化,而不是指这个参数永远不变

    • 直接在函数里运行其他函数会产生副作用,但是将函数作为参数传递再调用就不会有副作用(为啥?之后有关数据流,函数流的内容会阐述)

    函数的优势在于运行时,对于一个只由输入输出决定的系统(并且可以嵌套),测试将变得无比简单

    函数的组合开发方式,称为函数式,是非常优秀的开发方式,也是很多优秀程序员的终极追求

    Angular/Vue/React 联合教程(二)封装单位

    Proxy Object 直接解决问题

    js 有自己的对象机制,与 proxy 进行配合,用户代码也能被框架感知到

    既然 js 本身已经有如此易用的机制,为何不直接采用 proxy object 进行封装呢?

    Vue 就是采用这样的方案(setup 返回结果,也是向 proxy 添加响应的属性)

    可以说,如果你的目标主要就是 解决问题 ,Vue 是个非常方便且易学的方案


    起源地下载网 » Angular/Vue/React 联合教程(二)封装单位

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元