静态标签内置: `<element tag={tag}>` 用于标签在定义时已固定的元素
作者: ryansolid创建于 2026年9月14日更新于 2026年9月14日
标签enhancement
□ 问题
图书馆围绕一个本地元素构建组件,其标记被固定在定义时间上——spected.li',spected ("按钮")',即任何设计-系统原始工厂——没有很好的方法使该元素:
- `动力学((()-)-)标记'是从标记字符串到元素的唯一同位素路径。 它支付一份工厂备忘录加上一份每件备忘录(和一份水合物id),其价值从未改变。 在yak-bench的浏览器水合物矩阵中,使有样式的元素通过"动态()"(")"使"有样式"的"道"(geomean")比从一字形标记中编译出元素的同一码慢了1.47×(geomean";"道"中其他所有东西都是一样的. 每个元素一个备忘录就是整个空白.
- 一个运行时间工厂(
element(tag)' return a participle)去除备忘录,但不能在本地传播:一个使用地点-.rest-必须合并成道具物体,在spread()'看到它之前穿过一个组件边界,静态属性是行走而不是编译的。 - 手工滚动是指 " 服务员 " 叉子凌驾于内部(
Get Nextlement'、runHydation Events'、ShareConf.hydrating' vssrElement'),这就是下一条/下一条644。
剖析成份重的SSR病例(tabs)显示Solid自身在时间7%的渲染量和道具管道("相接","相接","相接",和所生成的GC"相接")为55%;有风格的元素接合物是大部分管道的引入地.
□提议
保留内在标记来自内侧标识符:
时间轴 : 函数样式为( tag) { 返回道具QQ( <element tag}{. filtered (props)}班(class Cls (props))}{(props)}{ 孩子们 < /元素 > (三) {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
编译器将它降下精确的字面标记,以“创建Element(tag)”取代模板克隆:
- **DOM**:`水利?获得扩展():创建Element(tag)';`spread(el,[过滤,{得到分级(){.}])'(来源数组来自#3419/#3423);`插入(el,() 个道具.子女)';`runHydration Events()'在水利时。 两个有孩子的反应性节点 一个没有,零备忘录。 静态儿童树丛编成自己的模板并附后;动态儿童通过 " 插入 " 。
- ** SSR**:`srElement(tag,[filtered,{class}]),() {dops.children, true)'-一行走(#3418),` hk'在元素上. 水相ID保持对齐,因为双方完全按照编译的散子根今天的做法行事.
- ** 大学**:“创造要素(tag)”+“传播”的制造器。
字符串“元素”从未到达 DOM 或 SSR 输出; 编译器消耗它 。 没有“tag”的“lement ” 是一个编译错误,而不是一个真正的标记。
# 静态规则
`tag'是一个评价**ce**,未跟踪的表达式,当该元素被创建时——与提供值>`相同的合同. 它从来不是反应性的,编译器也不试图证明它具有常态性(附加范围中的绑定性可以被重新分配;恒定性不能在全球范围内被证明,因此范围规则会限制真实代码而保证无所事事). 降低
. . . . . . .内容来源: solidjs/solid