运行 JavaScript 脚本文件
约 451 字大约 2 分钟
2024-05-26
BeShell 应用的主要逻辑应写在 JavaScript 文件中。
基础代码
main/main.cpp
#include <BeShell.hpp>
using namespace be ;
BeShell beshell ;
void app_main() {
// 应用文件系统模块
beshell.use<FS>() ;
// 将 flash 中 label 为 fsroot 的分区以 LittleFS 格式挂载到根目录
FS::mount("/", new LittleFS("fsroot", true)) ;
// BeShell 主循环
beshell.main("/main.js") ;
}关键步骤:
应用 FS 模块:在
BeShell::setup()前执行BeShell::use<FS>()挂载分区:使用
FS::mount()将分区 fsroot 挂载到文件系统的根目录。LittleFS构造函数第二个参数为true时,若分区未初始化则自动格式化
配置分区表
ESP-IDF 使用分区表文件 partitions.csv 定义 flash 分区。BeShell 提供了针对 4MB/8MB/16MB flash 的默认分区方案,位于项目的 img 目录。
在 idf.py menuconfig 或 VSCode ESP-IDF 扩展的 UI 界面中配置分区表文件路径,例如:img/partitions-4MB.csv

可根据实际 flash 大小和需求修改分区表。
测试文件操作
编译烧录后,使用 BeConsole 测试文件系统:
打开 BeConsole,连接 ESP32 开发板
执行
ls查看根目录(初始应为空)执行
touch main.js创建文件再次执行
ls确认文件已创建在左侧文件列表刷新根目录,找到
main.js并双击打开在编辑器中输入以下内容并保存:
import {__filename} from 'loader' console.log("Greetings from", __filename())在终端执行
reboot重新启动设备,应返回:Greetings from /main.js.命令用于运行 JavaScript 文件,与 bash 的.命令不同,不会污染命令行变量空间。BeShell 提供了类似 NodeJS 的
__filename和__dirname,但它们是函数而非变量,需从loader模块导入
