简介
文件加载模块。提供多种文件加载和执行方法,是控制器加载、配置加载和任务执行的基础依赖。当开发者维护的 JS 模块/文件需要在 controller、service、jobs、preload 等业务层中执行或调用时,可能遇到路径或加密问题。使用 loader 可避免这些问题。
注意:loader 模块的 loadFile 函数在主 ee-core 入口中以 loaderLoadFile 导出,以避免与 core 模块的 loadFile 函数名称冲突。从 ee-core/loader 导入时使用原名 loadFile;从 ee-core(根包)导入时使用 loaderLoadFile。
导入
CJS 和 ESM:
// ESM
import { loadFile, requireFile, execFile, resolveModule, getFullpath } from 'ee-core/loader';
// CJS
const { loadFile, requireFile, execFile, resolveModule, getFullpath } = require('ee-core/loader');从主入口(别名):
// ESM
import { loaderLoadFile, requireFile, execFile, resolveModule, getFullpath } from 'ee-core';
// CJS
const { loaderLoadFile, requireFile, execFile, resolveModule, getFullpath } = require('ee-core');API
loadFile(filepath, ...inject)
说明:加载文件并自动执行函数导出。如果文件导出的是普通函数(非类或字节码类),自动使用注入参数调用该函数并返回执行结果。适用于需要根据 appInfo 动态返回内容的配置文件。相对路径基于 electron 目录(getElectronDir())解析。
参数:| 参数 | 类型 | 必填 | 说明 |
| filepath | string | 是 | 文件路径(相对路径基于 electronDir) |
| inject | unknown[] | 否 | 传递给函数导出的参数(展开传入调用) |
返回值:unknown — 文件导出内容或函数执行结果
示例:
// 加载配置文件并注入 appInfo(相对路径)
const config = loadFile('config/config.default', appInfo);
// 使用绝对路径加载
const data = loadFile('/absolute/path/to/module.js');参见:loaderLoadFile(主入口别名)、core.loadFile(不同模块)
loaderLoadFile(filepath, ...inject)
说明:loader 模块 loadFile 的别名,从主 ee-core 入口导出以避免与 core.loadFile 冲突。行为与 loadFile 相同。
参数:| 参数 | 类型 | 必填 | 说明 |
| filepath | string | 是 | 文件路径(相对路径基于 electronDir) |
| inject | unknown[] | 否 | 传递给函数导出的参数 |
返回值:unknown — 文件导出内容或函数执行结果
示例:
// 从主入口使用别名导入
const { loaderLoadFile } = require('ee-core');
const config = loaderLoadFile('config/config.default', appInfo);参见:loader.loadFile
requireFile(filepath)
说明:加载文件但不自动执行。直接返回模块导出内容,不做任何处理。适用于需要原始模块引用的场景(如子进程任务加载)。
参数:| 参数 | 类型 | 必填 | 说明 |
| filepath | string | 是 | 绝对文件路径 |
返回值:unknown — 模块导出内容
示例:
// 加载任务模块但不执行
const jobModule = requireFile('/path/to/jobs/example/timer.js');execFile(filepath, ...inject)
说明:加载并运行文件。根据导出类型决定执行方式:类/字节码类使用 new 实例化,普通函数直接调用,其他类型原样返回。注入参数传递给构造函数或函数调用。
参数:| 参数 | 类型 | 必填 | 说明 |
| filepath | string | 是 | 绝对文件路径 |
| inject | unknown[] | 否 | 传递给构造函数或函数的参数(展开传入调用) |
返回值:unknown — 实例化的类对象或函数执行结果
示例:
// 从文件实例化一个类
const instance = execFile('/path/to/service.js', appInfo);
// 从文件执行一个函数
const result = execFile('/path/to/handler.js', eventData);resolveModule(filepath)
说明:解析模块的绝对路径。先尝试 require.resolve(),再回退到基于后缀的规则:.default / .prod 尝试 .jsc(字节码版本),.js 尝试 .jsc,无后缀尝试 .js 和 .jsc。
参数:| 参数 | 类型 | 必填 | 说明 |
| filepath | string | 是 | 模块路径 |
返回值:string | undefined — 模块的绝对路径,无法解析时返回 undefined
示例:
// 解析配置文件
const configPath = resolveModule('config/config.default');
// 返回:'/project/electron/config/config.default.js' 或 '.jsc'
// 解析失败时优雅处理
const unknown = resolveModule('nonexistent/module');
// 返回:undefined参见:getFullpath
getFullpath(filepath)
说明:获取 electron 目录下文件的绝对路径。相对路径基于 getElectronDir() 解析,同时尝试 resolveModule 查找实际文件。文件不存在时抛出错误。
参数:| 参数 | 类型 | 必填 | 说明 |
| filepath | string | 是 | 文件路径(相对或绝对) |
返回值:string — 文件的绝对路径
示例:
// 获取相对文件的绝对路径
const fullPath = getFullpath('controller/example.js');
// 返回:'/project/electron/controller/example.js'
// 获取绝对文件的绝对路径
const fullPath = getFullpath('/absolute/path/to/file.js');参见:resolveModule、ps.getElectronDir
