设计理念
用互联网技术栈做 IoT 开发
从 Arduino 开箱即用,到 ESP32 SDK 源码编译,技术难度曲线平缓
在单片机上实践现代化程序设计:ES2020, C/C++ 14/17
保持接口优雅,易于扩展
BeShell特性
我们将常用的 ESP-IDF API 和 许多第三方库都封装成了 JavaScript 接口,为你提供了成吨功能。
JavaScript引擎
完整的ES2020标准
GPIO
GPIO 控制 JS API
片上外设
I2C/SPI/UART 等
驱动
电机、屏幕、摄像头、传感器、控制器 等
文件系统
LittleFS/Fat32/RawFS/SDCard
WiFi
STA / AP / Both
协议
TCP UDP HTTP HTTPS WS MQTT SMTP SNTP 等
GUI
集成 LVGL 图形界面库
数据库
集成 SQLite3
Web后端
在 EPS32 上实现 NodeJS 的体验
自由剪裁
只引用必要的功能以便保持较小编译尺寸
跨平台
支持 Linux MacOS Windows 等平台
WebAssemble
可以在浏览器里运行
混合编程
C/C++ 和 JavaScript 双向访问
工具
提供 Web IDE,支持文件管理,代码编辑,命令行,交互式运行
多种开发环境
以多种框架组件形式发布:Arduino、ESP-IDF
预编译版本
烧录即用
静态库
提供静态库,减少编时间
镜像发布
提供 GitHub 和 Gitee 同步镜像
开源
源码和文档完全开源
单片机上的 JavaScript
在 BeShell 框架中,JavaScript 是"一等公民"
完整支持 ES2020 标准
支持 async/await、Proxy、匿名函数 等现代 JS 程序设计
All in JavaScript
单片机底层、外设、驱动都封装为 JS API
混合编程
C/C++ 和 JS 双向调用,你可灵活切换语言开发
文件系统
在单片机上实现文件系统,可模块化组织 JS 代码,支持 import/export AMD规范
更多特性
交互式运行(REPL),文件传输,SQLite3数据库等, 这里写不下了
图形界面 和 媒体
BeShell 集成了 LVGL 图形界面库,支持丰富的图像和音频处理功能
集成 LVGL 9.x
在单片机平台上最流行的图形界面库 (GUI)
JS 前端
JS 比 C语言 (LVGL原生) 更适合前端
类 CSS 样式
层叠样式表和结构分离,可更换主题
字体文件
字体以文件形式加载,仅编译打包用到的字型
图像解码
PNG JPG BMP GIF(动画)
音频解码
MP3 WAV PCM 音频解码,MIDI 音符渲染,I2S DAC 播放输出
网络
BeShell 提供完整的 TCP/IP 协议栈,支持以太网、WIFI 等网络连接
TCP/IP 协议栈
可通过 WiFi 或 以太接入互联网/本地网络
丰富的应用层协议
TCP UDP HTTP HTTPS MQTT SMTP SNTP 等
后端开发
提供多种协议的网络 server 端接口,在单片机平台上实现 "类NodeJS" 的开发体验
前端长链接
支持 WebSocket 长连接,可实现即时通讯