1. 程式人生 > >【Express】nodejs+express簡單入門篇

【Express】nodejs+express簡單入門篇

個人感覺不錯【開始建個工程試試】

首先註明一下版本,因為express因為版本的不同使用的方式也不同,我這算是目前最新的了吧

還沒有裝express的可以移步到 這裡 看看express框架的獲取安裝

1.簡單地專案初始化

進入你的nodejs安裝路徑下邊,如圖,然後執行命令  express -e test  (這裡把專案名設定為test)

出現如上圖所示,看到install dependencies沒有,它說如果你想安裝依賴就先進入專案test目錄,然後執行 npm install安裝依賴模組。

那就開始吧,網路環境差的可能安裝會出錯..出現很長一大串一般就行了

如此一來,專案初始已經完成,可以執行一下專案 npm start 看是否正常。

ok 還算正常,下面先來基本分析一下生成的初始專案

 

之前 那篇文章 已經說過 

專案建立成功之後,生成四個資料夾,主檔案app.js與配置資訊檔案packetage.json

bin是專案的啟動檔案,配置以什麼方式啟動專案,預設 npm start

public是專案的靜態檔案,放置js css img等檔案

routes是專案的路由資訊檔案,控制地址路由

views是檢視檔案,放置模板檔案ejs或jade等(其實就相當於html形式檔案啦~)

express這樣的MVC框架模式,是一個Web專案的基本構成

先來看看檔案資訊package.json  一般專案的主要資訊都會在這裡產生

複製程式碼 複製程式碼
{
  "name": "test",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.12.0",
    "cookie-parser": "~1.3.4",
    "debug": "~2.1.1",
    "ejs": "~2.3.1",
    "express": "~4.12.2",
    "morgan": "~1.5.1",
    "serve-favicon": "~2.2.0"
  }
}
複製程式碼 複製程式碼

看看主檔案 app.js   這是它的初始形式,這個模組還要繼續匯出給 bin資料夾下的www檔案使用

複製程式碼 複製程式碼
 1 var express = require('express');
 2 var path = require('path');
 3 var favicon = require('serve-favicon');
 4 var logger = require('morgan');
 5 var cookieParser = require('cookie-parser');
 6 var bodyParser = require('body-parser');
 7 
 8 var routes = require('./routes/index');
 9 var users = require('./routes/users');
10 
11 var app = express();
12 
13 // view engine setup
14 app.set('views', path.join(__dirname, 'views'));
15 app.set('view engine', 'ejs');
16 
17 // uncomment after placing your favicon in /public
18 //app.use(favicon(__dirname + '/public/favicon.ico'));
19 app.use(logger('dev'));
20 app.use(bodyParser.json());
21 app.use(bodyParser.urlencoded({ extended: false }));
22 app.use(cookieParser());
23 app.use(express.static(path.join(__dirname, 'public')));
24 
25 app.use('/', routes);
26 app.use('/users', users);
27 
28 // catch 404 and forward to error handler
29 app.use(function(req, res, next) {
30   var err = new Error('Not Found');
31   err.status = 404;
32   next(err);
33 });
34 
35 // error handlers
36 
37 // development error handler
38 // will print stacktrace
39 if (app.get('env') === 'development') {
40   app.use(function(err, req, res, next) {
41     res.status(err.status || 500);
42     res.render('error', {
43       message: err.message,
44       error: err
45     });
46   });
47 }
48 
49 // production error handler
50 // no stacktraces leaked to user
51 app.use(function(err, req, res, next) {
52   res.status(err.status || 500);
53   res.render('error', {
54     message: err.message,
55     error: {}
56   });
57 });
58 
59 
60 module.exports = app;
複製程式碼 複製程式碼

www檔案內容:這裡擁有著http伺服器的基本配置

 View Code

再來介紹一下專案使用到的ejs模板,比如看看這個view裡邊的index.ejs (我們待會可以直接把它轉為html,差不多的)

複製程式碼 複製程式碼
<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
  </body>
</html>
複製程式碼 複製程式碼

<%= title %> 這就是ejs的使用範例,title的值通過路由routes資料夾下index.js程式碼傳入(後面再談)

好了,基本介紹了專案的初始情況

2.基於初始專案的改進-- 註冊登入功能

設計如下:

一個初始介面(其實就是原始地址:比如 localhost:3000(index.html  路徑為/ ) ,在初始介面選擇登入或註冊

跳進來之後會先跳進登入介面(login.html  路徑為 /login),可以選擇先註冊(跳轉 register.html  路徑為/register)

跳進註冊介面後就會跳進(register.html 路徑為 /register),註冊成功後就跳轉登入介面(login.html  路徑為 /login)

在登入介面登入成功後就跳轉(home.html  路徑為 /home). 在home這裡還提供了登出的功能(無頁面檔案,它的路徑為 /logout

如果瀏覽器直接輸入localhost:3000/home  要先判斷是否登入成功,未登入不允許進入

看到上訴,應該瞭解到:我們是通過一個路徑,然後通過這個路徑的解析,從而渲染出這個路徑對應的模板檔案,其中我們這裡的模板檔案為.html字尾的

首先展示一下基本介面形態: