Cotowali 模块系统完整指南:require 本地 mod 文件与命名空间的 5 个最佳实践

📅 2026/8/26 20:15:01
Cotowali 模块系统完整指南:require 本地 mod 文件与命名空间的 5 个最佳实践
Cotowali 模块系统完整指南require 本地 mod 文件与命名空间的 5 个最佳实践【免费下载链接】cotowaliA statically typed scripting language that transpile into POSIX sh项目地址: https://gitcode.com/gh_mirrors/co/cotowaliCotowali 是一门静态类型脚本语言可转译为 POSIX sh 脚本。它的模块系统由require语句与mod文件组成用一行代码引入本地.mod.li文件通过module声明创建独立命名空间即可在 shell 生态中获得清晰的代码组织方式。本指南将带你快速掌握 Cotowali 模块加载与命名空间的最佳实践。为什么要用 Cotowali 模块系统 写 shell 脚本时共享函数往往只能靠复制粘贴或 source 一堆文件既容易冲突又难以维护。Cotowali 的模块系统解决了这个问题静态类型模块内的函数、变量在编译期即可检查类型命名空间隔离不同模块中的同名函数互不干扰纯 POSIX 输出引入模块不会破坏最终产物是标准 sh 脚本的特性三步上手require 本地 mod 文件第 1 步创建 mod 文件。按约定模块文件命名为模块名.mod.li内部用module声明命名空间。可参考官方测试用例 mod.mod.limodule mod { fn hello(): string { return hello mod } var one 1 }第 2 步在主程序中 require。使用相对路径即可引入本地文件如 require_test.lirequire ./mod.mod.li assert(mod::hello() hello mod)第 3 步用::访问命名空间。模块内的函数与变量通过mod::hello()这样的形式调用前缀就是命名空间名一目了然。require 的三种路径解析方式require支持三种路径解析逻辑在 stmt.v 中实现路径形式示例说明相对路径require ./mod.mod.li相对于当前文件加载最常用远程 URLrequire http://...编译期拉取远程模块内置路径require math从 Cotowali 内置标准库加载⚠️ 注意路径必须是常量字符串字面量不能是拼接出来的变量否则会报cannot require non-constant path错误。以内置标准库为例math_test.li 展示了对 math.li 的加载require math var sqrt2 math::sqrt(2)命名空间进阶多级 module 与模块互相引用module支持a::b形式的多级命名空间解析逻辑见 module.v。模块之间也可以互相引用例如 mod.mod.li 内部先require ./mod2.mod再声明自己的module mod——这样就形成了清晰的依赖层次。 建议模块名即命名空间名用小写短名如math、http多级模块用::分隔保持与文件命名xxx.mod.li一致。最佳实践清单校验和验证对关键模块可以在require后用花括号声明校验和防止模块内容被意外篡改。支持md5、sha1、sha256三种算法解析与校验逻辑见 stmt.vrequire ../empty.li { sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855, }实际用例可参考 require_with_checksum_test.li错误提示则定义在 require_with_checksum.err.li。校验和不匹配时编译器会直接报出期望值与实际值便于快速定位问题。5 个最佳实践速查模块文件统一命名为模块名.mod.li放在modules/或同级目录本地引入一律使用require ./xxx.mod.li相对路径每个 mod 文件内用module声明与文件名一致的命名空间只导出必要的fn和var避免命名空间污染对共享或远程模块加上sha256校验和总结快速回顾模块系统要点语法作用参考文件require 路径编译期引入模块require_test.limodule 名称 { ... }声明命名空间mod2.mod.li命名空间::函数()访问模块成员require_test.lirequire 路径 { sha256: ... }校验和验证require_with_checksum_test.li更多模块相关的测试用例集中在 tests/require/ 目录标准库模块位于 std/ 目录可直接打开阅读学习。掌握requiremod文件 module命名空间这三件套你的 Cotawali 项目结构将整洁得像一个成熟的工程化语言项目 【免费下载链接】cotowaliA statically typed scripting language that transpile into POSIX sh项目地址: https://gitcode.com/gh_mirrors/co/cotowali创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考