GemElement IDE 支持

Tags
typescriptvscodegem
Created
Feb 13, 2020 9:55 AM

目前 IDE 只考虑 vscode,vscode 构架:

image

高亮:

  • createCSSSheet(css``)
  • createCSSSheet({ h1: styled.tag`css rules text` })
  • html``

代码片段:

  • 渲染到 body
  • 创建新元素

命令:

  • jsdoc 生成

跳转到定义和自动完成:

  • 自定义元素定义和自动完成
  • attr/prop/part/slot 定义和自动完成

验证:

  • attr/prop 的类型验证,required 验证
  • part 自动完成以及验证
  • slot 自动完成以及验证
  • css state 自动完成以及验证

提示:

  • 使用 store 时没有 connect
  • 使用 i18n 时没有 connect
  • 使用 styled 时没有 adopted

ESLint-plugin(?):

  • 禁止覆盖 GemElement 方法,属性
  • 禁止覆盖 HTMLElement 方法属性,覆盖
  • CustomElement 成员顺序:
    • 静态字段-字段
    • 公共方法/访问器(内部不使用的)
    • 构造函数
    • 私有字段/访问器
    • 生命周期 // willMount-shouldUpdate-render-mounted-updated-unmount

lit-plugin:

  • Strict 严格模式
  • No-missing-import 防止漏导入,而重复导入有无所谓
  • No-unknown-attribute 需要自定义元素导出 attribute

lit-analyze:验证

理想状态:用 ts 编写 GemElement,IDE 能根据装饰器理解自定义元素,不需要写 jsdoc 注释;发布时生成(web-component-analyzer) customData.json 供扩展(lit-analyze)加载,让 GemElement 作为第三方模块使用时 IDE 也能理解。

SuperMade with Super