参考-基于组件的架构
我不了解 angular 我也不了解 react , 但就我对 vue 文档的观察, 我认为基于组件的架构提供了一些常见办法 来应对日常的编程任务。有很多基于组件的架构的框架,除了 AVR ,还有老牌框架 backbone.js AngularJS 和新鲜框架 crank ,各个框架都实现了这一套 API / 约定 / 协议,虽然实现办法各不相同。未来框架也会提供这些方法。使用这些工具,面对经典需求的软件开发者将消费初始化以基于组件的架构为基本架构的框架所提供的典型 API
,消费这框架提供的性能检测和优化办法,来完成软件设计、软件实现、软件交付(delivery)。这些软件的基本功能有很多,比如样式展示 按钮事件 partial view 等。
通过纯 js 也可以实现这些功能。
- 根组件 根视图
- 组件载入 / 脚本载入到 html 页面
页面基础
- 模板 (string literal)
- 模板渲染
- 供模板渲染的变量(通过 variable interpolation 载入模板,可以定义在模板里 也可以定义在模板外)
- 模板片段 partial
- 页面组合办法 require
- 页面组合办法 yield
- 数据组装 (变量, 数组, 对象 object)
- 根据数据渲染模板 (partial view)
- 向页面传入数据
- 绑定数据和模板 data binding (单向绑定 双向绑定)
元素
- 元素 element in HTML
- 使用元素就是消费组件
- 组件状态
- 组件状态决定了元素内容
- 更新组件状态 就可以更改元素内容, 在下一个变化检测周期 组件就可以按照新的组件状态完成渲染
模板载入新数据
- runtime 检测到新数据 (略)
- runtime 给出新的渲染结果
- 用户事件 DOM 事件 如按钮 键入
- url 事件 如新 url
- 异步网络数据 1
- 多线程 (可能在 web component 里?)
- 监听 (监听 DOM 事件)
- 约定 (约定刷新时刻) 1
- 变化检测周期 (略)
- 组件操作时机
代理式时序问题解决方案
- 框架提供了一个代理式时序问题解决方案 (框架本身负责时序问题)
- 下一个变化检测周期是如何发起的
- 如何取得上一个变化检测周期里的旧数据
- interception system (组件生命周期)
对组件的要求 / 组件类型
- 纯函数
- 纯函数优点 (浪费内存 但增加程序可预测性 增加组件状态可预测性)
- fallback (如果不让用纯函数该怎么办)
- 纯函数副作用 (用纯函数方式构建组件更新组件)
- 纯函数方式提升性能 (纯函数方式构建组件更新组件)(强烈依赖组件刷新机制)
- 指针方式提升性能 (指针方式创建组件修改组件对象)
同步时序
- DOM 事件 如按钮
- 异步操作 如网络数据
- 数据请求的发起
- 新数据的获取
- 数据格式
- 等待信息如何展示 (作为组件状态的一部分)
- 纯函数副作用 新数据改变组件状态
- async 方法放在哪里
内存数据
- 组件作用域 / 类作用域
- 扩大作用域
- 缩小作用域
- local storage
- 控制器(层)
- 服务(层)
- smart component
- dumb component
- reducer
模板流程控制
- 打印变量
- 打印列表
- 追踪列表项目 (item's key)
事件
- 事件监听器 (addEventListener)
- 事件触发之后的处理 (event handler)
数据部署
- 组件自定义数据 (组件状态)
- 组件状态管理
- 向子组件传入状态
- 组件自定义事件处理器
- 向子组件传入事件处理器
- 不可变对象
- 优点 (浪费内存 但增加程序可预测性 增加组件状态可预测性)
- fallback (如果不允许用不可变对象 那么该怎么办) 1
https://developer.mozilla.org...
https://v2ex.com/t/294276?p=1...
参考
模板相关 react 常见说法
component composition (require)
子组件 props.children (yield)
子元素 pass as props
模板相关 angular 常见说法
子
projection (API
ng-content
) (yield)【参考-基于组件的架构】参考2
https://ruby-china.github.io/...
推荐阅读
- 前端WEB学习|JavaScript框架有哪些(JS框架汇总)
- 前端|Nodejs超详细安装及环境配置
- 前端|JavaScript 存储对象 -sessionStorage (会话存储) 和 localStorage(本地存储)以及 cookie(保存用户信息) 的区别
- 前端|nodejs安装和环境配置
- 达内培训期间所学的知识|CGB2111开班第二十八天
- 每日三面|每日三道前端面试题--vue 第二弹
- 前端开发|数据可视化大屏-Vue项目
- 大屏云|数据可视化大屏 - 大屏云极简使用手册
- 前端面试题|深拷贝和浅拷贝