Alins - 化繁为简、极致优雅的WebUI框架

最近造了个js框架 Alins,分享一下:

🚀 Alins: 最纯粹优雅的WebUI框架

English | 文档 | 演练场 | 更新日志 | 反馈错误/缺漏 | Gitee | 留言板

0 简介

0.1 前言

Alins是一款极致纯粹、简洁、优雅的Web UI框架。秉持0-API、Less is More 的开发理念,旨在帮助开发者摆脱UI框架繁杂的API调用困境,以最直观、最纯粹、最贴近vanillajs的开发方式。

您只需要了解jsx的书写规则(类似html的语法)便可以没有任何阻碍的开发 alins web应用,下面是一个最基本的计数器示例,你可以在演练场中在线体验:

let count = 1;
<button onclick={count++} $mount='#App'>count is {count}
</button>;

0.2 特性

  1. 0-API、Less is More,最贴近原生js开发
  2. 强大的响应式能力,支持属性、样式、文本、html等元素的响应式更新
  3. 具有极高的性能(优于Vue3、React)
  4. 未使用vdom,直接细粒度变更UI
  5. 具有极小的运行时体积和打包体积(优于Vue3、React)
  6. 支持双向数据绑定,支持组件开发,遵循单项数据流
  7. 内置数据共享方案,可以轻松的管理组件共享数据
  8. 丰富的周边生态支持,支持 vite、rollup、webpack、esbuild等插件,同时可以基于底层编译模块定制第三方工具
  9. 支持if、switch逻辑,同时支持 If、Switch、For等逻辑组件
  10. 支持自定义渲染器实现跨平台开发
  11. 使用jsx、tsx描述UI,内置typescript编译支持
  12. 使用ts开发,高度友好的类型支持

0.3 TODO

以下周边工具正在开发中,也希望感兴趣的开发者可以一起参与进来

  1. alins-router:单页面应用程序路由方案
  2. alins-ssr:服务端渲染方案
  3. alins-ui:官方UI库 (考虑实现ant-design或者meterial-design)
  4. alins-v:官方表单验证库
  5. alins-term:基于自定义渲染器开发命令行应用程序的工具
  6. alins-canvas: 基于自定义渲染器开发使用canvas渲染ui的应用程序的工具

1 快速开始

1.1 命令行创建

npm create alins

按照步骤执行完成之后,执行以下命令便可以安装运行起来了

cd <project>
npm i
npm run dev

您也可以直接克隆 模版代码仓库

1.2 使用Web编译器

<script src='https://cdn.jsdelivr.net/npm/alins-compiler-web'></script>
<script type='text/alins'> let count = 1;<button onclick={count++} $$body>count is {count}</button>;
</script>

注:

  1. 该方式不建议在生产环境使用
  2. 可以使用 type=‘text/babel’,这样可以获得编辑器自带的语法高亮

您也可以在 演练场 中自由使用,演练场也是使用Web编译器

2 比较

2.1 js-framework-benchmark 数据

注:分数越低表示性能越好

2.2 代码对比

2.3 编译产物对比

综合源码体积、打包代码体积和框架运行时体积,整理出表格

指标alinsvue3react
源码体积90byte281byte302byte
编译产物体积140byte620byte435byte
运行时体积26.6kb474kb139kb
体积评分1.242.741.52
运行时性能1.361.451.54
内存占用评分2.773.303.28

注:该比较仅针对当前计数器示例,仅作参考

3 文档

请参考以下在线文档

English | 中文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/73048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代理模式简介

概念&#xff1a; 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许通过创建一个代理对象来控制对原始对象的访问。代理对象充当了客户端和目标对象之间的中介&#xff0c;可以在不改变目标对象的情况下增加额外的功能或限制访问。 特点…

wx:for 微信小程序双重for嵌套如何获取内层的迭代对象

wx:for 微信小程序双重for嵌套如何获取内层的迭代对象 思路就是&#xff0c;外层for直接通过默认的item进行迭代&#xff0c;然后内层的for&#xff0c;通过wx:for-item"xxx"的方式指定内部迭代名称。 <view wx:for"{{modulesList}}" ><text>{…

【操作系统】电脑上没有IIS怎么办

文章目录 前言一、查看二、解决 前言 有的新机刚开始在计算机-管理-服务下没有IIS网络服务怎么办。 一、查看 桌面计算机/此电脑 鼠标右键&#xff1a;管理 服务和应用 发现没有IIS 二、解决 控制面板 程序和功能 启动或关闭Windows功能 IIS相关的所有功能选中&#xff…

鼠标键盘自动化工具pyautogui

安装 pip install pyautogui pip install keyboard获取鼠标实时位置 import pyautogui pyautogui.displayMousePosition()样例代码 # https://pyautogui.readthedocs.org/ # https://github.com/asweigart/pyautogui# 紧急停止&#xff0c;手动将鼠标移动到屏幕的4个角落imp…

2023年9月8日

1> 自行封装一个栈的类&#xff0c;包含私有成员属性&#xff1a;栈的数组、记录栈顶的变量 成员函数完成&#xff1a;构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 #include <iostream>using namespace std;class…

selenium的Chrome116版驱动下载

这里写自定义目录标题 下载地址https://googlechromelabs.github.io/chrome-for-testing/#stable 选择chromedriver 对应的平台和版本 国内下载地址 https://download.csdn.net/download/dongtest/88314387

hive 分隔符

在 Hive 中,分隔符用于指定数据文件中字段之间的分隔符。当你创建外部表或加载数据文件时,你可以指定分隔符,以便 Hive 正确地解析文件中的数据。 1. 创建外部表时指定分隔符: 当你创建外部表时,可以使用 ROW FORMAT 子句来指定数据文件中字段的分隔符。例如,如果你的数…

WorkPlus AI助理,基于ChatGPT的企业级知识问答机器人

随着人工智能技术的发展&#xff0c;WorkPlus AI助理以ChatGPT对话能力为基础&#xff0c;将企业数据与人工智能相结合&#xff0c;推出了面向企业的知识问答机器人。这一创新性的解决方案帮助企业高效管理和利用自身的知识资产&#xff0c;助力企业级人工智能的构建。与传统的…

【MySQL】数据库的约束

MySQL 数据库的约束 文章目录 MySQL 数据库的约束01 数据库的约束1.1 约束类型1.1.1 NOT NULL1.1.2 UNIQUE1.1.3 DEFAULT1.1.4 PRIMARY KEY1.1.5 FOREIGN KEY1.1.6 CHECK 继上文 MySQL基础&#xff08;一&#xff09;&#xff0c; MySQL基础&#xff08;二&#xff09;&#…

介绍串行和并行两种通信方式

前言 参考文章&#xff1a; 串行和并行- CSDN搜索 并行传输和串行传输的区别_金陵大掌柜的博客-CSDN博客 串行和并行介绍 &#xff08;1&#xff09;串行和并行是计算机领域中两个重要的概念。串行是指在计算机中&#xff0c;任务按照顺序一个一个执行&#xff0c;每个任务执行…

详解初阶数据结构之顺序表(SeqList)——单文件文件实现SeqList的增删查改

目录 一、线性表 二、顺序表 2.1概念及结构 2.2接口实现 2.3动态顺序表的创建 2.3动态顺序表的初始化 2.3.1传值初始化 2.3.2传址初始化 2.4动态顺序表的清空 2.5动态顺序表的扩容 2.6动态顺序表内容的打印 三、动态顺序表的使用 3.1尾插尾删 3.1.1尾插 3.1.2尾删…

基于Bert+Attention+LSTM智能校园知识图谱问答推荐系统——NLP自然语言处理算法应用(含Python全部工程源码及训练模型)+数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境服务器环境 模块实现1. 构造数据集2. 识别网络3. 命名实体纠错4. 检索问题类别5. 查询结果 系统测试1. 命名实体识别网络测试2. 知识图谱问答系统整体测试 工程源代码下载其它资料下载 前言 这个项目充分利用了…

linux编辑器-vim

1.vim是什么 vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用。简单的来说&#xff0c; vi 是老式的字处理器&#xff0c;不过功能已经很齐全了&#xff0c;但是还是有可以进步的地方。 vim 则可以…

前端uniapp块样式写法

<template><view class"block"><view class"block_box"><view class"block_box_content"><view class"block_box_left">左边</view><view class"block_box_right">右边</view…

线性代数的学习和整理22:矩阵的点乘(草稿)

4 矩阵乘法 A,B两个同阶同秩N阵&#xff0c;看上去结构一样&#xff0c;但两厢相乘&#xff0c;在做在右&#xff0c;地位差别巨大。 在左&#xff0c;你就是基&#xff0c;是空间的根本&#xff0c;是坐标系&#xff0c;是往哪去、能到哪的定海神针&#xff0c;是如来佛手&a…

华为云云耀云服务器L实例评测|华为云云耀云服务器L实例评测使用

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

Kotlin学习记录

Kotlin学习记录 1. 权限修饰符1.1 internal 修饰符1.2 open 修饰符 2 其它修饰符2.1 lateinit 修饰符2.2 inline 修饰符2.3 var 修饰符 (变量)2.4 val 修饰符 (常量)2.5 typealias 3 申明对象3.1 申明对象不赋值3.2 申明对象并实例化3.3 申明常量并用 by lazy 懒加载 4 类、接口…

day-45 代码随想录算法训练营(19)动态规划 part 07

70.爬楼梯&#xff08;进阶&#xff09; 分析&#xff1a;基本动态规划转换为完全背包&#xff0c;因为1、2 两种上楼梯方式是无限选择的 思路&#xff1a; 1. j 表示 容量为 j 时&#xff0c;装满有dp[j]种方法2. dp[j]dp[j-nums[i]]3. 初始化 dp[0]1,dp[1]14. 遍历顺序&am…

[docker]笔记-portainer的安装

1、portainer是一款可视化的容器管理软件&#xff0c;利用portainer可以轻松方便的管理和创建容器。portainer本身是一个容器&#xff0c;完全免费并且具有汉化版。本文介绍portainer的安装和使用。 2、安装好容器并配置好容器环境&#xff0c;可参照https://blog.csdn.net/bl…

智安网络|面临日益增长的安全威胁:云安全和零信任架构的重要性

随着云计算技术的快速发展和广泛应用&#xff0c;云安全和零信任架构变得愈发重要。在数字化时代&#xff0c;云计算技术得到了广泛的应用和推广。企业和组织借助云服务提供商的强大能力&#xff0c;实现了高效、灵活和可扩展的IT基础设施。然而&#xff0c;随着云环境的快速发…