@ 表达/ dom
MVC-本土JSX为浏览器DOM渲染.
@expressive/dom 使表达式MVC不作回放或Preact. 函数组件是渲染器无状态:它们将道具和MVC快照投射到DOM中,同时 Model.get() 用品依赖跟踪。 所属国家生活在班级中----一个构成部分领域或 <Component for>。 。 。 .
npm install @expressive/mvc @expressive/dom
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "@expressive/dom"
}
}
import { Model, Component } from '@expressive/mvc';
import { render } from '@expressive/dom';
class Counter extends Model {
count = 0;
increment() {
this.count++;
}
}
function Count() {
const { count, increment } = Counter.get();
return <button onClick={increment}>{count}</button>;
}
const unmount = render(
<Component for={Counter}><Count /></Component>,
document.getElementById('app')!
);
style 递归地构成有条件的类符号和内含声明. 字符串成为类;对象将从左到右并渲染入内. 使用 className 用于构成以外的浏览器特定类。 这个 class 不支持属性拼写和 CSS 声明字符串.
<button
className="external-widget"
style={[styles.button, active && 'active', { width }]}
/>
style 自动到达其主机根,包括通过组件、碎片、提供者、门户和收集边界。 一个片段应用到每个主机根上. 前进的样式超越了根本身,最外层的呼叫者获胜. 读取其 style prop在渲染时拥有放置,没有转发. 它接收一个被冻结的呼叫者内在声明的对象—— 传播,取出或自由合并; 呼叫者的班级与它一起旅行. className 仅适用于要件.
组件可登记不可变的地图 style(Component, map)A级 _name 条目是一条规则,由真理应用 _name 属性或匹配的主机标签,并作为以源命名的类释放; 嵌入在规则内,它打开了后人范围。 组件名称与时俱进 - 它们无法幸存。 赤色密钥是声明,或宏调用,一个宏拥有名称,而位于地图上方的那些则构成适用于每个组件主机根的基规则. macros是一种方法 Style 子类,其 use() 返回时 style 解析它们; 将地图传给 use() 对它样式的每个组件,在每一个组件本身的下方,都持有规则;地图内的一个函数是一个值,而不是一个定义. $name 键应用一个由 $1 命名的条件 $name 字段,或设置 CSS 变量 $name 字段声明 - 其价值为 :root 默认,或 a --name ; 地图可能是接收到的函数 var() 提到他们. _ 属性永远不会到达 DOM,以及 0 或者说 '' 留下一条规则。 地图从未到达子组件内;只有类链继承.
function Button({ active }: { active: boolean }) {
return <button _active={active}>Save</button>;
}
style(Button, {
padding: '8px',
_active: { fontWeight: 700 }
});
组件第一次渲染前的注册样式 。 一个密钥在最顶端定义, 子类中先解决; 一个宏返回自己的名字会降入下一个定义, 然后通过任意 default(value, key) 方法。 未处理的密钥到达主机, 主机会加入数组并拒绝函数和对象—— 单位属于宏, 永远不会猜测 .
内线风格总是比班级好;在班级中,呼叫者的规则比被呼叫者的规则好,而规则则通过更多的组件来传递 style 道具胜出 - 独立于渲染顺序. false, (中文(简体) ), null,以及 undefined 省略条目; 0 仍然是宏观的争论.
Component 保留适配器的语义: 字段读取 render() 是由依赖关系、自有实例挂起并用 DOM 范围清理,外部激活实例可以直接放置而不转移所有权.
第一次发布包括密钥调和,本土事件,裁判,SVG, <Component for> 供应商,直接 has 编号 : map 收集渲染、门户、懒惰组件、错误和悬念倒置、生成组件外观规则、保留承诺内容,同时 pending() 工作暂停。 它刻意排除了独立的钩子,合成事件,备忘录包装,SSR,水合,和建筑时态取出.
见 dOM 渲染器指南 对于API和制约。 这个软件包目前针对浏览器DOM;本土渲染和构建时的表达-jsx提取不包括在内.
许可证
麻省理工学院