Lit vs React

请添加图片描述

Web Component

用Lit, React, 原生Javascript写web component,他们之间的区别

JavascriptLitReactNote
使用
使用方式<awc-dropdown></awc-dropdown><awc-dropdown></awc-dropdown><awc-dropdown></awc-dropdown>都可以按照普通标签的形式使用
修改样式class, styleclass, styleclass, style同普通标签一样,可用class,style修改样式
事件绑定<awc-dropdown οnchange=“onChange(event)”></awc-dropdown><awc-dropdown οnchange=“onChange(event)”></awc-dropdown><awc-dropdown οnchange=“onChange(event)”></awc-dropdown>都支持普通事件如click和自定义事件的绑定
使用难度简单简单简单都是按照普通标签使用
开发
html, css, js 文件分离html, css, js文件可分离,需要写额外的函数支持,如FetchHTML函数不可分离,js, html, css写在同一个文件,引入sass后,可将css从文件分离css文件可分离,html与js不可分离
开发难度需要自己写原生js需要自己配置打包需要拥有react开发知识
是否需要编译否, 可直接引入需要打包,build后才能引入使用需要打包,转换,build 后才能引入使用
开发难度只需掌握原生js相关知识不仅需要js相关知识,还需要build知识需要jsx,js知识,和打包,编译等知识这里包括遇到问题搜索文档,和开发所需掌握的知识
浏览器兼容性处理使用最新浏览器支持的方法函数等集成webcomponentjs导入react-web-component,其集成了webcomponentjs
浏览器加载渲染
浏览器直接渲染DOM结果图browser_js图browser_lit图browser_react在纯html中,他们的属性和事件在浏览器中渲染是一样的
浏览器加载字节数60.1 kB transferred 58.8 kB resources261 kB transferred 259 kB resources13.1 MB transferred 13.1 MB resourcesReact 体量最大,原生js写component体量最小
浏览器首次加载速度DOMContentLoaded: 1.22 s Load: 1.28 sDOMContentLoaded: 3.59s Load: 3.60 sDOMContentLoaded: 11.73s Load: 11.74sReact加载速度最慢,因为它体量最大,原生js最快
浏览器重新加载速度DOMContentLoaded: 497 ms Load: 504msDOMContentLoaded: 1.63s Load: 1.64sDOMContentLoaded: 854ms Load: 892ms当浏览器缓存一定资源后,原生重加载时间最短,Lit 时间最长
开发维护与学习使用
开发时间1 day1.5 day2 dayLit 社区少,解决问题调研时间长;React 遇到问题社区多,但是问题不好调试
维护成本1 day2 day2 day包括遇到bug, 搜索资料,解决问题,新增功能,修改样式等
学习曲线1 day2 day3 day包括遇到bug, 搜索资料,解决问题,新增功能,修改样式等
调试framework 兼容性所需时间0.5 day2 day1 dayLit 开发的component在其他framework不一定兼容; React目前使用没有遇到问题

图 browser_js
在这里插入图片描述
图browser_lit
在这里插入图片描述
图browser_react
在这里插入图片描述

Project

用react和Lit 分别作dashboard 页面,对比如下

ReactLitNote
功能
web component库@awc@awc@awc在react项目中有额外的bug,如icon显示不出来,MDCDrawer:closed 这种类型事件名称不支持
routerreact-router@vaadin/routerReact有自己的生态包, Lit 没有
storereact-reduxreduxReact有自己的生态包, Lit 没有
httpes6 - Promisees6 - PromiseReact支持axios,Lit 不支持es6 modules,如果想支持,需要自己配置babel
sasssass-loadersassReact 和Lit 如果想支持sass,都需要引入第三包才能支持
TypeScript支持jsx 和 typescript支持typescript都支持typescript
开发启动,打包,热更新
启动,打包React 项目自带功能需要引入第三方包@rollup 或者配置webpack自己配置打包,花费了开发大量的时间研究
热更新内容App目录下的文件,包括cssLit只支持js文件,不包括后来自己配置的sassLit自己配置,花费了开发大量的时间研究
热更新级别React 只会更新更改的js修改某处后,Lit 所有文件都重新加载一次在开发过程中,React更新快,所以更节省开发时间
兼容性react-app-polyfillwebcomponents/webcomponentsjswebcomponentsjs不同的版本兼容浏览器版本不同; React 安装不同polyfill控制兼容浏览器版本如react-app-polyfill/ie9
开发
文件分离默认css和js可分离,es6 import语法css 分离需要额外的配置自己配置,花费了开发大量的时间研究
开发难度React < LitReact < LitReact 相关配置与第三方包都有自己的生态,Lit 没有,需要调研哪个第三方包可用,并且与当前package里的包兼容
花费时间7 day15 day由于Lit项目现开发,组件一些逻辑可供用,所以React 时间为大约估计时间
维护成本3 day5 day包括第三方包升级和包之间的兼容性等
学习曲线2 day7 dayLit 需要自己搭建项目,学习第三方包语法,解决包版本之间的兼容性,支持es6等,而且遇到问题可搜索到的有效信息很少;React遇到问题搜索到结果很多,能快速解决,而且React有自己的生态包,包版本之间的兼容性不用我们自己搭配,所以学习简单
浏览器渲染
打包后初次加载时间DOMContentLoaded: 2.03s, Load:2.46sDOMContentLoaded: 1.50s, Load:2s打包部署后, React加载时间 稍微比Lit要慢一些
打包后初次加载JS文件大小456 kB transferred 452 kB resources1.2 MB transferred 1.2 MB resources打包部署后, React 体量要比Lit体量大得多,但是加载速度相差不多
开发过程中初次加载时间DOMContentLoaded: 347ms, Load:433msDOMContentLoaded: 479ms, Load:676ms
开发过程中初次加载js大小1.2 MB transferred 3.9 MB resources1.1 MB transferred 1.1 MB resourcesReact体量大,但是加载所需时间少
重加载时间2.7KB 2ms32.5KB DOMContentLoaded: 445 ms Load: 638 msReact 只会更新更改的js,Lit 所有文件都重新加载一次

图react_package
在这里插入图片描述

图Lit_package
在这里插入图片描述
Javascript - web component - browser
请添加图片描述
Lit - web component - browser请添加图片描述
React - web component - browser
请添加图片描述
Lit - application - browser
请添加图片描述
React - application - browser请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值