淺談Nodejs應用的主文件index.js的組成部分


前言

Node妹子的問世,着實讓我們前端攻城獅興奮了一把,尤其本屌聽說Javascript可以寫服務端后,興奮的像是看到了二次元蘿莉的胖子...(●'◡'●)。呃哼...YY先到這里,原諒本屌是個二次元蘿莉控。

正文

想談好對象,並不是要new一個就行了,必須要先認識人家后慢慢的才可以上手,然后慢慢推上床<( ̄︶ ̄)>。
想想自己搞前端開發的時候,為了盡力讓頁面在瀏覽器君體內完美展現,也是做了不少功課,其中最不可少的就是要認識認識。這玩意是什么,能干什么。
對於寄宿在瀏覽器中的Javascript就不多說了,之前發過一篇簡單的文章《前端Javascript與Nodejs的異同》
,大概描述了下Nodejs與前端javascript的異同,如果你好好看的話肯定能明白的。

index.js

搭建一個Node應用,少不了一個主文件,不少人根據各自喜好來定義名字,像app.jsmain.js
這里尊重npm init時的默認配置為index.js,其實個人還是挺喜歡app.js這個命名的。
為了方便,本屌也使用了express這個高大上的框架。
好!!!下面,我們來看看index.js里應該有的內容。

//引用依賴模塊
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// 視圖引擎設置
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

//中間件
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

//路由
app.use('/', routes);
app.use('/users', users);

//遇到錯誤時的中間件
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});

//拋出 提供給www.js 並通過www.js來開啟服務
module.exports = app;

以上代碼是通過express腳手架生成的一個比較標准的內容,個人在里面做了簡單的注釋。然后我想說,請童鞋們不要急着看每一行代碼是什么意思,因為如果你熟悉nodejs不用看也知道寫的什么,如果你不了解,也暫時不要去了解,我們看一本新書的時候,一定要先看一下它的目錄才能大概知道書的內容。
現在我們來整理一下這個index.js的大概目錄,不難發現,它有幾個重要的部分組成:

  1. 引入依賴模塊

  2. 設置相關配置

  3. 定義中間件

  4. 定義路由

  5. 開啟服務

幾乎所有的入口文件都少不了這幾個組成部分,而且順序也是按照上面列表從上到下依次編寫。這里需要說的是中間件這一部的編寫,大部分中間件是寫在路由之前,但是有些中間件應該在路由之后執行,比如處理錯誤的中間件,一般放在路由后面執行。

其實一個完整的入口文件並不是只有上面說的那么多,它還有一些可選項來構成完整的index.js。為了方便比較,就直接列舉出來吧:

  1. 引入依賴模塊

  2. 設置相關配置

  3. 連接數據庫(可選)

  4. 定義中間件

  5. 定義路由

  6. 開啟服務

  7. 在多核系統上啟動cluster多核處理模塊(可選)

可以看出,添加了連接數據庫和多核處理兩個可選組成部分。

總結

一個完整的index.js由7個部分組成,大家只要把主文件當成白雪公主,把7個組成部分當作七個小矮人就行了,哈哈,這個記法真天才。
不過話說回來,並不是每個應用都必須7個大將全上場,可能是5個,可能是6個,也可能是7個,大家在組織代碼的時候根據應用和硬件需求來自定義構建即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM