网站首页 > 技术文章 正文
老规矩,开头先上正菜:
官网:dlight.dev
Github:dlight.dev
现在关注这个框架还是非常非常早的。但是无妨让我们来探索、了解它。
现在官网首页已经有汉化了,我们看看它的code style,DX真的是Max:
@View
class MusicChooser {
@Prop musics
musicIdx = this.random()
music = this.musics[this.musicIdx]
random() {
return Math.floor(Math.random() * this.musics.length)
}
View() {
PrettyBtn("Get a new song!")
.onClick(() => {
this.musicIdx = this.random()
})
MusicDisplay(music)
}
}
让我们从最基础的开始
声明一个div,非常简单:
div("Hello world")
改变div的样式?添加div的class/id?添加div的事件?也非常简单,采用链式语法,一路.下去:
div("Hello world")
// 添加行内样式
.style({ padding: "10px" })
// 设置Id
.id("app")
// 设置class
.class("root")
// 添加事件
.onClick(() => {
// 在这里添加逻辑
})
如果你了解过鸿蒙的ArkTS,又或者是做过苹果的原生Swift UI的开发,你应该能倍感亲切;但是有些东西还是和ArkTS是不一样的,比如自定义一个元素内部的内容,dlight.js是这么写的:
div().onClick(() => {
// 在这里添加逻辑
}); {
// 在这里自定义内容
}
而ArkTS的语法是这样的:
Text() {
// 在这里自定义内容
}.onClick(() => {
// 在这里添加逻辑
})
可以看到,dlight.js的div(),实际上由;分号隔了两段,实际上是由两段代码组合而成的;那么,怎么渲染到页面上呢?
没错,Babel插件嘛。仓库是Monorepo的,看到这个文件夹,我就已经知道了()
有兴趣的可以看看:dlight/packages/core/babel-preset-dlight
再谈流程控制,都直接{}了,你想要在这个{}中操作整个View类的上下文干什么都可以了,比如亲爱的if/else、switch-case、for循环:
响应式
一般的字符串,和数字,直接声明一个类属性即可:
@View
class MusicChooser {
// 如果这个属性在View函数中用了,它就是响应式的;
// 如果没有用,它就是正常的类变量。非常智能了属于是
test: string = "Hello world"
View() {}
}
Props,也能很好地响应:
@View
class MusicChooser {
// 有这个@Prop,就是一个prop
// 如果 = 了required,就表示是必传的
@Prop
test: string = required
View() {}
}
TypeScript支持
特别是子组件,非常需要TypeScript的支持,因为dlight的组件设计是去除new关键字的组件,所以导出一个组件的时候,必须要用一个比较蹩脚的as any as T:
interface MyCompProps {
/** 这是 prop1 */
prop1: string
/** Prop2是一个number */
prop2: number
/** Prop3是一个布尔值 */
prop3: boolean
}
@View
class MyComp implements MyCompProps {
@Prop prop1 = required
@Prop prop2 = required
@Prop prop3 = required
View() {}
}
// 这个Pretty实际上就是any更语义化,语义化一点嘛(
export default MyComp as Pretty as Typed<MyCompProps>
性能
这方面文档上没有明说,但是据说与solid.js差不多哦,贴一个dlight团队发的链接,可以看到benchmark:
https://link.juejin.cn/?target=https%3A%2F%2Fkrausest.github.io%2Fjs-framework-benchmark%2Fcurrent.html
整体大概这么多。整个看下来,这个框架无疑是极好的((((就是还没生态
现在Dlight还有一个叫Model的东西,类似React hook Vue hook这种,用于抽象API,以方便在视图中使用,但是文档现在还没有,再等等吧()
作者:文博知浅
链接:https://juejin.cn/post/7341593721100124200
- 上一篇: 水路前端要不要加装前置过滤器?终于有师傅说出实话,多亏提醒
- 下一篇: 如何使文章排版更好看
猜你喜欢
- 2025-01-08 要说oa办公软件界面的设计谁做的好,飞书当仁不让
- 2025-01-08 如何使文章排版更好看
- 2025-01-08 水路前端要不要加装前置过滤器?终于有师傅说出实话,多亏提醒
- 2025-01-08 最好的善良(深度好文)
- 2025-01-08 GrapesJS 火了!这是前端最好零代码框架?
你 发表评论:
欢迎- 581℃几个Oracle空值处理函数 oracle处理null值的函数
- 576℃Oracle分析函数之Lag和Lead()使用
- 561℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 561℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 556℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 546℃【数据统计分析】详解Oracle分组函数之CUBE
- 534℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 530℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)