從零開始用 Node.js 實現一個微博系統,功能包括路由控制、頁面模板、數據庫訪問、用戶注冊、登錄、用戶會話等內容。
- Express 框架、
- MVC 設計模式、
- ejs 模板引擎
- MongoDB 數據庫
MVC(Model-View-Controller,模型視圖控制器)是一種軟件的設計模式
- 模型是對象及其數據結構的實現,通常包含數據庫操作。
- 視圖表示用戶界面,在網站中通常就是 HTML 的組織結構。
- 控制器用於處理用戶請求和數據流、復雜模型,將輸出傳遞給視圖
一.Express 框架 (http://expressjs.com/)
- 1.路由控制;
- 2.模板解析支持;
- 3.動態視圖;
- 4.用戶會話;
- 5.CSRF 保護;
- 6.靜態文件服務;
- 7.錯誤控制器;
- 8.訪問日志;
- 9.緩存;
- 10.插件支持。
1.全局安裝 Express
$ npm install -g express
2.最新express4.0版本中將命令工具分家出來了(項目地址:https://github.com/expressjs/generator),所以我們還需要安裝一個命令工具,命令如下:
$ npm install -g express-generator
3.查看版本
$ express --version
二.建立工程
1.在NodeJS指南中利用以下命令建立網站的基本結構:
$ express -e microblog
(模板引擎是jade) 執行命令后ejs模板引擎就安裝好了
但是express3以上的版本把layout默認給取消了,所以現在在views文件夾下並沒有生成layout.ejs。然后改成include引入
2.運行完這個命令,繼續運行,然后進入microblog文件夾,安裝npm
$ cd microblog && npm install
3.include引入方法
如頭部views/layoutTop.ejs
<!DOCTYPE html> <html> <head> <title><%= title %></title> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <link rel='stylesheet' href='/stylesheets/reset.css' /> <link rel='stylesheet' href='/stylesheets/main.css' /> <link rel="stylesheet" href="/stylesheets/bootstrap.css"> <style type="text/css"> body { padding-top: 60px; padding-bottom: 40px; } </style> <link href="/stylesheets/bootstrap-responsive.css" rel="stylesheet"> </head> <body> <div class="navbar navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="brand" href="/">Microblog</a> <div class="nav-collapse"> <ul class="nav"> <li class="active"><a href="/">首頁</a></li> <% if (!user) { %> <li><a href="/login">登入</a></li> <li><a href="/reg">注冊</a></li> <% } else { %> <li><a href="/logout">登出</a></li> <% } %> </ul> </div> </div> </div> </div>
底部views/layoutBottom.ejs
</body> <script src="/javascripts/jquery-1.9.1.min.js"></script> <script src="/javascripts/bootstrap.js"></script> </html>
在views/index.ejs頁面中include引用入公共部分
<% include layoutTop %> <p>首頁</p> <% include layoutBottom %>
4.執行完express -e microblog 命令后, 項目生成,當前目錄下出現了子目錄 microblog,並且產生了一些文件:
create : microblog create : microblog/package.json create : microblog/app.js create : microblog/routes create : microblog/routes/index.js create : microblog/routes/users.js create : microblog/public create : microblog/views create : microblog/views/index.jade create : microblog/views/layout.jade create : microblog/views/error.jade create : microblog/bin create : microblog/bin/www create : microblog/public/javascripts create : microblog/public/images create : microblog/public/stylesheets create : microblog/public/stylesheets/style.css
5.用 Express 實現的網站實際上就是一個 Node.js 程序,因此可以直接運行。我們運行 node app.js, 看到 Express server listening on port 3000 in development mode。
輸入地址 http://localhost:3000, 你就可以看到一個簡單的 Welcome to Express 頁面了。
6.開發時使用supervisor監聽刷新修改
$ supervisor bin/www
7.退出監聽:
ctrl + c