MeanJS框架中app.start()及server.js启动后的控制流解析
拆解MEANJS启动流程:从
node server.js到app.start() 咱们一步步把这个启动流程拆明白,帮你理清控制流的来龙去脉:
1. node server.js的整体控制流
当你在终端敲下node server.js,Node.js会立刻执行这个入口文件的代码:
- 第一行
var app = require('./config/lib/app');:Node会加载./config/lib/app.js这个模块,把模块导出的内容(也就是start方法)挂载到app变量上。 - 第二行
var server = app.start();:直接调用模块导出的start方法,正式开启MEANJS的启动流程。
2. app.start()的执行细节
从你给出的代码片段来看,start方法的核心逻辑是这样的:
module.exports.start = function start(callback) { var _this = this; _this.init(function (app, db, config) { // Start the app by listen... }); };
咱们把这个流程拆成两步:
第一步:调用_this.init()完成初始化
init方法是MEANJS脚手架的核心初始化入口,它会默默完成一堆关键工作(这些都是脚手架帮你封装好的):
- 加载项目的配置文件:包括数据库连接信息、服务器端口、环境变量(开发/生产)、第三方服务配置等(对应回调里的
config参数)。 - 连接MongoDB数据库:建立和数据库的连接,拿到数据库实例(对应回调里的
db参数)。 - 初始化Express应用:创建Express实例,配置所有必备的中间件(比如
body-parser处理请求体、cors跨域、passport认证、静态资源托管等),同时注册项目的路由和API接口(对应回调里的app参数)。
第二步:初始化完成后启动服务器
当init方法把所有准备工作做完,就会触发传入的回调函数function (app, db, config)。在这个回调里,MEANJS会执行app.listen(config.port),让Express应用开始监听指定的端口,同时通常会输出类似Server running on port 3000的日志,告诉你服务器已经启动成功。
简单来说,start方法就是先让init把所有“前置工作”搞定,再启动服务器对外提供服务——这也是MEANJS脚手架帮你简化开发的地方,把复杂的初始化逻辑都封装在了init里,你只需要调用start就能启动整个应用。
内容的提问来源于stack exchange,提问作者Vivek
相关产品推荐
相关产品推荐

