如何通过命令行参数选择配置文件并在控制台输出结果,同时保持代码模块化?
如何通过命令行参数选择配置文件并在控制台输出结果,同时保持代码模块化?
当然可以实现啦!咱们可以借助Deno的命令行参数机制结合动态导入来达成需求,同时还能维持代码的模块化结构。下面是具体的实现步骤和代码示例:
步骤1:创建多个配置文件
首先,咱们需要为不同的配置创建独立的文件,每个文件导出对应的配置值:
config1.ts
export const data = 'Config1';
config2.ts
export const data = 'Config2';
config3.ts
export const data = 'Config3';
步骤2:重构处理逻辑,解耦配置依赖
原来的process.ts直接绑定了固定的配置文件,咱们把它改成一个通用的处理函数,让它只负责逻辑计算,不依赖具体配置,这样更符合模块化原则:
process.ts
export function processConfig(data: string) { return data + ' is used.'; }
步骤3:在主文件中处理命令行参数并动态加载配置
修改main.ts,让它读取命令行参数,根据参数动态导入对应的配置文件,然后调用处理函数输出结果:
main.ts
import { processConfig } from "./process.ts"; // 获取命令行传入的配置名称,Deno.args会返回所有命令行参数的数组 const configName = Deno.args[0]; // 校验参数是否存在 if (!configName) { console.error('请指定配置名称,示例:deno run main.ts config1'); Deno.exit(1); // 退出程序并返回错误码 } try { // 动态导入指定的配置文件 const { data } = await import(`./${configName}.ts`); // 调用处理函数生成结果并输出 const result = processConfig(data); console.log(result); } catch (error) { // 处理配置文件不存在的情况 console.error(`找不到配置文件 ${configName}.ts`); Deno.exit(1); }
测试效果
现在运行对应的命令就能得到想要的结果啦:
deno run main.ts config1
Config1 is used.
deno run main.ts config2
Config2 is used.
deno run main.ts config3
Config3 is used.
如果没有传入参数或者指定的配置文件不存在,程序还会给出友好的错误提示哦~
备注:内容来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

