export default 可导出初始化函数(如 init、start),但需手动调用;不可自动执行,推荐导出带参函数以提升可测试性与灵活性。

在 JavaScript 中,export default 不能直接导出“初始化主函数”这个概念本身,因为 JS 没有内置的“主函数”机制(不像 C 或 Java)。但你可以用 export default 导出一个函数,它在模块被导入后由调用方主动执行,起到“初始化逻辑入口”的作用。
导出一个可立即调用的初始化函数
最常见做法是定义一个函数(比如叫 init、main 或 start),然后用 export default 导出它。注意:导出的是函数本身,不是调用结果。
✅ 正确写法(导出函数引用):
// main.js
function init() {
console.log('应用初始化开始');
// 这里放你的启动逻辑:DOM 准备、状态初始化、事件绑定等
}
<p>export default init;</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill6235" title="Java Maven Code Review"><img
src="https://img.php.cn/upload/skill/000/000/081/179084711841712.jpg" alt="Java Maven Code Review" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill6235" title="Java Maven Code Review" class="overflowclass">Java Maven Code Review</a>
<p class="overflowclass">审查Java Maven项目(ZIP压缩包或GitLab仓库URL),检查代码规范、命名、模块边界、可维护性问题以及重复代码。</p>
</div>
<a rel="nofollow" href="/xiazai/skill6235" title="Java Maven Code Review" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>在其他模块中使用它
导入后,你需要显式调用它——JS 不会自动执行导出的函数。
// index.js import init from './main.js'; init(); // ✅ 主动调用,触发初始化
想导出并自动执行?不推荐但可实现
如果真希望模块加载时就运行初始化逻辑(类似“自执行”),可以导出一个立即执行函数表达式(IIFE),但要注意这会失去函数复用性,且不利于测试和按需加载:
- ❌ 不推荐(破坏封装、难以测试):
export default (() => {
console.log('模块加载即初始化');
return { /* 可选返回值 */ };
})();- ✅ 更合理的替代方案:导出函数 + 在入口文件统一调用(如
index.js或框架的main.ts) - 保持初始化逻辑可测试、可延迟、可条件执行
常见搭配:导出带配置的初始化函数
实际项目中,初始化常需要参数(如配置对象)。导出一个接受参数的函数更灵活:
// app.js
export default function start(config = {}) {
const { debug = false, container = '#app' } = config;
if (debug) console.log('启动中...', config);
// 初始化逻辑...
}
<p>// 使用时:
// import start from './app.js';
// start({ debug: true, container: '#root' });</p>Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










