JavaScript >> Javascript 文檔 >  >> Node.js

Express.js 基礎知識:Express.js 的基本概述

Express.js 是 Node.js 項目的一個了不起的框架,並在大多數此類 Web 應用程序中使用。不幸的是,缺乏關於如何編寫良好的生產就緒代碼的教程和示例。為了緩解這種需求,我們發布了 Express.js 指南:Express.js 綜合手冊。但是,一切都是從基礎開始的,因此我們將在這篇文章中讓您體驗一下框架,以便您決定是否要繼續學習。

Express.js 安裝

假設你下載並安裝了 Node.js(和 NPM),運行這個命令:

$ sudo npm install -g [email protected]

Express.js 命令行界面

現在我們可以使用命令行界面 (CLI) 來生成新的 Express.js 應用程序:

$ express -c styl expressfun
$ cd expressfun && npm install
$ node app

在 http://localhost:3000 打開瀏覽器。

這是expressfun/app.js的完整代碼 如果您現在沒有時間創建應用程序:

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

Express.js 中的路由

如果你打開expressfun/app.js ,你會在中間看到兩條路線:

...
app.get('/', routes.index);
app.get('/users', user.list);
...

第一個基本上是處理對主頁的所有請求,例如 http://localhost:3000/ 後者對 /users 的請求 ,如 http://localhost:3000/users .這兩個路由都以不區分大小寫的方式處理 URL,其處理方式與尾部斜杠相同。

請求處理程序本身(index.js 在這種情況下)很簡單:來自 HTTP 請求的所有內容都在 req 中 並將結果寫入 res 中的響應 :

exports.list = function(req, res){
  res.send("respond with a resource");
};

作為 Express.js 骨幹的中間件

路由上面的每一行都是一個中間件:

app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

中間件是一個傳遞函數,在請求沿每個函數傳遞時為請求添加一些有用的東西,例如 req.bodyreq.cookie .有關更多中間件的文章,請查看 Express.js 簡介:參數、錯誤處理和其他中間件。

Express.js 應用程序的配置

下面是我們在典型的 Express.js 應用中定義配置的方式:

app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

普通設置涉及名稱(例如,views ) 和一個值(例如,模板/視圖所在的文件夾的路徑)。定義特定設置的方法不止一種,例如 app.enable 用於布爾標誌。

Jade 是 Express.js/Node.js 的 Haml

Jade 模板引擎在使用空格和縮進的方式上類似於 Ruby on Rails 的 Haml,例如 layout.jade

[旁注]

閱讀博客文章很好,但觀看視頻課程更好,因為它們更具吸引力。

許多開發人員抱怨 Node.js 上缺乏負擔得起的高質量視頻材料。觀看 YouTube 視頻會讓人分心,花 500 美元購買 Node 視頻課程很瘋狂!

去看看 Node University,它有關於 Node 的免費視頻課程:node.university。

[旁注結束]

doctype 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    block content

除此之外,還可以在 Jade 模板中使用成熟的 JavaScript 代碼。

關於 Express.js 框架的結論

如您所見,使用 Express.js 創建 MVC Web 應用程序毫不費力。該框架對於 REST API 也很出色。如果您對它們感興趣,請訪問教程:Node.js and MongoDB JSON REST API server with Mongoskin and Express.js 和 Intro to Express.js:Simple REST API app with Monk and MongoDB。

如果您想知道其他中間件和配置是什麼,請查看 Express.js API 文檔、Connect 文檔,當然還有我們的書 — Express.js 指南。對於那些已經熟悉 Express.js 一些基礎知識的人,我建議您通過 ExpressWorks——一個自動化的 Express.js 研討會。


Tutorial JavaScript 教程
  1. 如何在javascript中調用自身內部的函數?

  2. Express 路由的請求解析器。

  3. 使用 React 構建並使用 S3 和 Lambda 部署到 AWS 的雲簡歷

  4. 貓鼬打開(刪除)

  5. 如何使用 Nx、Next.js 和 TypeScript 構建 Monorepo

  6. CI土地歷險記

  7. Nuxt.js 中的 SEO 與 Head 屬性

  1. 打字稿:任何與未知

  2. 可以自定義 Firebase 錯誤消息模板或警報以顯示自定義警報嗎?

  3. ProjectMan🦸來了!將項目添加到收藏夾並從命令行打開它們

  4. Project Saga:編寫網絡遊戲講故事工具

  5. 在 Typescript 中創建一個新對象會給出一個錯誤,它需要一個額外的逗號 [關閉]

  6. 監控微服務架構:企業最佳實踐

  7. React 18、Next 12.1 和其他版本 - 前端新聞 #24

  1. 第 2 部分:使用 OhMyZSH + VSCode 🔥⚡️🔥 插件、字體、圖標等讓您的開發環境變得很棒

  2. 帶有 Next.js 的動態站點地圖

  3. Deno Deploy Beta - 首次查看和啟動時間

  4. 讓我們深入了解 React (Pt. 3)