# 核心库 jiess-core 

## @jiess/plus 版本迭代记录

### 1.2.0-beta.x

* 新增：子组件与父组件共享上下文的拓展组件
* 拓展：对Midder类追加订阅，广播的能力
* 优化：$if内置属性在JiessComponet的使用逻辑
* 底层：对底层的渲染逻辑进行了优化，更加健壮

### 1.2.x

* 优化：对Midder追加tag，以后订阅覆盖先订阅的原则，防止多操作时重复添加订阅

### 1.3.0-beta.x

* 响应式的整体重构，优化结构和性能
* 移除不常用的API： JPromise

### 1.3.1

* 修复一个和插槽相关的BUG
* 其他一些细微优化

### 1.3.2

* 新增内置属性 $render 用于定制化渲染：如实现 react 环境使用 vue 组件

### 1.3.3

* 追加 $props 字段，用于存放外部传入的完整数据
* 修复了内置key算法造成的BUG

### 1.3.4

* 从使用习惯来考虑，移除 $props 字段，将完整的传入数据放在第二个形参

### 1.3.5

* 将 radio，checkbox，select 统一起来，通过 options 配置生成子项

### 1.3.8

* 将关联性较弱的Midder模块移出到@jiess/utils中

### 1.3.9

* 优化处理各环境下默认插槽和children的关系

### 1.3.0-beta.x

* 解决获取原框架props参数变动的问题,从而实现如ant.Form.Item下封装表单组件的能力

### 1.4.0-beta.x

* 新增对 uni-app【vue2环境】的支持
* 新增对 uni-app【vue3环境】的支持
* 新增对 react-native 的支持

### 1.4.1

* 对插槽进行优化，如果没对插槽指定默认参数，则不进行任何渲染（原来会渲染成空div）
* 追加`JiessFragment`空组件，解决顶层元素动态更新的问题

### 1.4.3

* 解决`JiessFragment`无法支持多层嵌套的问题
* 追加内置属性`$injectPJR`，可以观察注入父级`JsRender`的过程
* 优化`vue2`环境根节点的判断，展开后大于两个子元素，才自动追加外层
* 插入子集的元素，强制同步上下文，使插入元素正确响应式更新
* 对于数据注入`provide/inject`的全面优化和测验

### 1.4.4

* 进一步对`provide/inject`进行优化
* 增加vue2环境下的构建响应式的方法
* 修复hookData与生命周期自动关联的问题
* 优化vue2环境下事件的提取方案：排除on前缀，并且将首字母改成小写，其余部分的字符串保持不变
* 修复了vue2环境下空数据过滤的产生的属性更新的bug
* 对普通节点追加生命周期观察，并返回相应ref等参数
* 移除对Jiess组件节点的生命周期观察
* 移除内置属性`$injectPJR`
* 对计算属性的赋值取值增加了`value`约束

### 1.4.5

* 对响应式的进一步优化
* 生命周期回调钩子允许为异步函数
* 对观察器的触发机理进行重构，实现了手动观察响应式数据时，对最终结果值的调整

### 1.4.6

* 追加add方法添加元素时按权重排序的能力 $weight
* 在setup中获取当前组件的name，可用于中介者标记
* 优化对元素注入key的算法

### 1.4.7

* 内部梳理，规范化内部结构
* 重写diff算法，用于判定响应式新旧值的更新
* 对响应式赋值自循环对象的比对结果进行优化
* 提供delete移除属性并触发响应式观察的能力

### 1.5.0

* react环境下采用函数式组件构建基础原框架组件
* react环境下的ref节点获取采用回调式
* vue3环境下加入指令构建的功能
* props仅参与数据类型的校验，不再过滤数据
* 对Jiess组件赋予的Jiess观察器，直接穿透组件，不做处理
* $watchEffect在同步模式下，提供第一时间的变动参数

### 1.5.1

* 修复了Jiess观察器对Jiess组件透传后，$if在使用时不生效的问题
* vue和react环境中均使用模拟forceUpdate来更新页面
* 对$isReactive进行算法优化
* 对Observe观察触发器增加forceUpdate属性，用于自定义diff算法

### 1.5.2

* 修复对全局注册的Jiess组件赋予Jiess观察器，关联的穿透问题

### 1.5.4

* 移除和父级共享上下文的能力（该功能使用场景较少，且较大的增加复杂度）
* 增加对setup异步函数的支持，大幅度提升开发体验
* 对else和elseIf的优化和调试
* 对数据注入，以及插槽插入元素，动态更新元素的上下文进行完美绑定
* 移除$render，一是函数式react与vue的节点获取不统一，会造成冗余代码；另一方面可使用ref替代

### 1.5.5

* vue2环境中，is属性从attrs中读取，而不再从props中读取
* 以`_static_`为前缀的key，在Jiess构建过程中，直接应用该key

### 1.5.6

* vue2中不允许使用is传递参数，所以JiessComponent中使用`component`接收渲染的Jiess组件
* 数据校验的优化，对各种状态下的数据校验进行了验证

### 1.5.7

* 对底层进行了优化，无功能性的变动

### 1.5.8

* 初始注册jiess，不带param参数时的问题修复
* 统一三种技术栈对class的定义：
    * 在vue3中用class定义类名
    * 在vue2和react中用className定义类名
    * 在Jiess中用class或className均可直接定义类名

### 1.6.0

#### 拆分jiess实例

为支持按需引入，将jiess实例上的工具方法拆分出来，以工具函数的形式导出：

* 使用时需要以导入的形式引入工具
* 配合自动导入插件，可实现无导入使用

#### 移除内置全局注册

* 在以往安装Jiess时，会自动在上下文注入jiess实例，现已移除，可手动注入
* 在以往的vue环境中，会自动注册全局组件</jiess>，现已移除，可手动注册JiessComponent实现

#### 其他迭代点

* 解除$component对注册组件的限制，实现了对vue和react组件的全局注册
* vue3的JiessComponent对指令的支持
* add加入的元素为Promise类型，则取出真实值，实现异步加载
* Observe观察器增加了动态矫正功能
* children和childs合并处理，不再按权重二选一
* vue2插槽可直接作用于JsRender节点

### 1.6.1

* 安装Jiess时需要提供两个参数，并移除Jiess实例的$param
	* 参数一：合并于Jiess实例中
	* 参数二：动态注入组件上下文中

### 1.6.2

* Jiess实例获取的优化
* children属性与childs集合合并时的优化
* Jiess实例中增加缺省属性$render，可用于接管createElement的渲染


### 1.6.3

* 移除框架中针对taro和uni兼容的旧代码
* 响应观察器中，result结果值的矫正
* package.json导出的简化
* this.add的链式处理
* 合并子元素的优化处理

### 1.6.4

* Observe观察器优化，在初始化时会获取初始值，从而取代绑定回调获取初始值
* 对$show的优化，解决与`display:none`的冲突

### 1.6.5

* 进一步对$show进行优化，当值为undefined时，该节点不做隐藏显示处理

### 1.6.6

* 组件props数据校验的优化：即针对JiessRef数据传参时的特殊处理
* 优化观察器对响应式数据的数据矫正，支持直接通过第三参提供函数了

### 1.6.7

* 追加了 isRef 校验，可以校验组件传入的数据是否为JiessRef数据类型
* 对响应式观察时默认值的优化，使得异步矫正时，能够第一时间呈现defaultValue

### 1.6.8

* 在异步矫正响应式数据时，对defaultValue以及默认值的优化
* 对beforeUpdate和updated增加零时生命周期的能力，该回调仅执行一次，就立即销毁

### 1.6.9

* 对响应式更新后的旧节点的响应关系进行销毁处理（含子组件中的所有子节点），防止旧节点中的响应式再次执行
* 针对一个观察者多处使用（不建议），可配置allowDestory属性，手动控制是否允许响应式节点观察器被销毁
* 从新启用$render内置属性，只是其概念与旧版不一样，提供一个函数，用于定制化构造JsRender配置对象
* 对children属性，子元素，default插槽中的节点进行梳理，打通了节点中使用children响应式

### 1.6.10

* 针对1.6.9的问题的紧急修复

### 1.6.11

* 观察者函数$val接收的值不为响应式数据的灵活处理方案
* 当Jiess组件直接使用$if:false时，导致的异常保存处理

### 1.6.12

* 对react环境下的基础组件进行优化
* react环境下的基础组件引入useTransition，并将isPending, startTransition放入组件上下文
* 在Jiess组件中追加了methods和data两个数据，分别用于暴露方法和数据

### 1.6.13

* 关于子元素渲染的权重，三者取其一： default > children > childs
* 移除mergeChildren，子元素不再合并处理(即三选一)，权重关系同上
* 对插槽的细节优化，以及多条件验证
* 修复了JIESS_IS的入口验证的BUG


### 1.6.14

* 组件的入参注入到上下文中，方便data和methods中获取
* 对于非响应式数据，初始化式也会执行矫正器，使数据矫正更统一
* 对JsRender和Context中的内置方法和属性统一前缀短横线

### 1.6.15

* 打包的统一处理

### 2.0.0

* 移除核心语法`this.render`，完全使用配置式；向低代码迈进
* 原来`render`函数的首参后子元素，统一由children接管
* Jiess组件插槽的定义由`this.slot()`，变为`$slot:插槽名`
* 总结：本次迭代重新回到以配置为核心的主导思想，代码更加纯粹

### 2.0.1

* 移除观察者中的响应式修正correct
* 原来`$val`定义响应式观察着，变为`$proxy:响应式对象`
* 对`$ref`定义的响应式数据，默认观察其`value`值
* 多层响应式嵌套观察的重复叠加优化

### 2.0.2

* `$set`的优化，可以加入任意类型的数据
* 一些综合性的优化



## @jiess/core 版本迭代记录

### 5.0.0

* 重新启用 `@jiess/core` 库，但原记录中的代码和当前代码完全不同
* 库名更换，将原@jiess/plus库更新为当前的@jiess/core
* 原观察模式`model`字段，改为`flush`


### 5.0.1

* 全面自循环移除函数，从而受控区域不再有自循环函数的困扰
* 全面使用clone自循环移除函数，从而受控区域不再有自循环函数的困扰
* 响应式创建不再需要深度控制

### 5.0.2

* 新增ref响应式对象同步$ref节点方案
* 各种更新，与@jiess/plus@3.1.8一致
