Lit Element
是一款基于Web Component的轻量级库,今天来学习一下如何在原生JavaScript中使用Lit Element
。
使用Vite创建项目
首先我们使用Vite创建一个原生JavaScript项目,在命令行下运行如下命令:
1 | npm create vite@latest my-lit-element-app --template vanilla |
执行这条命令后,Vite会询问用户选择一个模板,我们选择vanilla
模板。接下来,Vite会询问我们使用JavaScript
还是TypeScript
,我们选择JavaScript
。
然后执行如下命令进入项目目录并安装依赖。
1 | cd my-lit-element-app |
安装Lit Element
运行以下命令来安装lit
。
1 | npm install lit |
创建Lit Element组件
在项目的src
目录下创建一个新的文件夹components
,然后在该文件夹下创建一个新的文件my-element.js
,并添加以下代码:
在下面的代码中,我们创建了一个名为my-element
的自定义元素,它继承自LitElement
。
1 | import { LitElement, html, css } from 'lit'; |
使用Lit Element组件
在src/main.js
中导入我们刚刚创建的组件,并在页面中使用它:
1 | import './style.css'; |
在上面的代码中,我们在页面中使用了my-element
组件,使用web component就是使用普通的html标签一样。
运行项目
删除项目中的src/counter.js
文件,因为我们不需要它们。
最后,在命令行中运行以下命令来启动开发服务器:
1 | npm run dev |
然后在浏览器中打开http://localhost:5173
,页面上显示Hello, world!
。
Vanilla JavaScript中无法使用装饰器
需要注意的是,如果你使用原生JS开发Lit Element组件,是不能使用装饰器的,至少目前的JS还不支持,比如下面这些装饰器都无法使用:
@customElement
@property
@state
如果你使用了这些装饰器,浏览器会报错,以@customElement为例,报错信息如下:
1 | my-element.js:5 Uncaught SyntaxError: Invalid or unexpected token (at my-element.js:5:1) |
一个代替的方案是使用如下的方式:下面的代码中,我们使用了static properties
来定义属性,使用constructor
来初始化属性。
需要注意的是@click
- 这是Lit的模板中的事件绑定语法,而非装饰器,所以@click
是可以被原生JS支持的,有Lit在运行是转义为addEventListener
来实现的。
1 | import { LitElement, html } from 'lit'; |
@
是Lit用作事件绑定的语法,除了@click
,还有@input
、@change
、@submit
等事件绑定语法。