從零構建部署Node.js+Express+Bootstrap Web應用
本文將包括以下內容:
- 建立一個Express應用
- 使用npm和
package.json
管理應用依賴 - 調整Express工程結構到MVC架構
- Route和Controller概念分離
- 建立新的Node模組(module)
- 使用Git線上部署Express應用到Heroku
在進行一切操作之前, 需要先安裝好Node.js, 對於*nix使用者來說, 直接下載解壓, 並新增到環境變數中即可完成安裝.
首先從Express著手, Express是構建在Node之上的web應用框架.
使用package.json定義依賴
每個Node應用的根目錄都有一個檔案叫做package.json
{
...
"depencencies": {
"express": "~4.9.0"
...
}
}
其中”~”表示使用最近的patch版本, 推薦使用.
使用npm安裝Node依賴
工程範圍的依賴
在和package.json
相同的目錄層級執行以下指令即可:
$ npm install
這會將所有的依賴(包括間接依賴)下載到node_modules
資料夾內. 如果後期你想向工程中追加依賴, 只需要執行以下指令:
$ npm install <package-name> --save
以上指令完成了兩步操作:
- 將指定
package
下載到node_modules
資料夾; - 將依賴條目追加到
package.json
檔案內.
全域性範圍的依賴
一些通用的依賴需要安裝成全域性依賴, 例如express generator:
$ npm install -g express-generator
依賴會被安裝到以下路徑: ${NODE_HOME}/lib/node_modules/express-generator
建立並啟動一個Express工程
- 新建一個資料夾
- 在資料夾內執行
express
npm install
按照package.json
的定義安裝所有依賴npm start
啟動程式, 瀏覽器訪問localhost:3000即可.
Express的使用者請求處理邏輯
如下圖所示
重啟一個Node應用
如果你修改了服務端的Node程式碼, 那麼需要停止應用執行, 編譯並重新啟動
重啟應用的方法有兩種, 一種是從啟動應用的控制檯ctrl+c
, 然後npm start
, 另一種方法是使用nodemon, nodemom是Node應用的監控程式, 能夠簡化Node應用的開發. 安裝方法如下:
$ npm install -g nodemon
然後使用nodemon
指令代替npm start
啟動應用程式.
如果你只是修改了Jade模板, CSS檔案, 或者客戶端的js程式碼, 無需重新啟動應用
調整Express工程結構到MVC模式
首先在根目錄下新建立一個app_server
資料夾, 將根目錄下的routes
和views
資料夾移到裡面:
然後更改app.js
檔案, 將兩者重新定位到新的位置. 具體的來說就是將原來的
app.set('views', path.join(__dirname, 'views'));
var index = require('./routes/index');
var users = require('./routes/users');
變更為
app.set('views', path.join(__dirname, 'app_server', 'views'));
var index = require('./app_server/routes/index');
var users = require('./app_server/routes/users');
Node模組(module)的生成與使用
舉個例子, 現在我們有a.js
和b.js
兩個檔案, 假設現在它們在同級目錄下, 我們想在b.js
檔案中呼叫a.js
中定義的變數或函式. 下面是a.js
檔案的內容
module.exports.logThis = function(message) {
console.log(message);
}
上述程式碼將logThis
變數(函式)暴露出來, 供其他模組使用, 經過這樣設定後我們就可以在b.js
中如下呼叫
var myModule = require("./a")
myModule.logThis("It works!")
需要注意的一點是, require()
方法並不需要加字尾, 它會自動依以下順序搜尋:
- 尋找同名js檔案
- 尋找同名資料夾下的index.js
檔案
Bootstrap安裝
- 首先下載Bootstrap發行版, 解壓並新增到Express工程下的public目錄(public目錄是用於存放靜態資源的目錄)下的bootstrap目錄(需新建).
- 由於Bootstrap依賴jquery, 所以我們還要下載jquery, 從這裡下載, 注意下載完整版的, 不要下載slim版的, 點選之後, 會跳出一個程式碼頁面, 直接拷貝全部, 然後儲存在
public/javascript/jquery-<具體的版本.min.js
檔案中即可. - 清空Express預設的樣式. 具體的來講, 就是清空
public/stylesheet/style.css
檔案中的內容
安裝Bootstrap主題
這裡以Amelia主題為例, 從這裡下載, 將解壓得到的amelia.bootstrap.css
和amelia.bootstrap.min.css
拷貝到Express工程下的public/bootstrap/css
資料夾下.
Jade模板的使用
Jade模板的使用原則是:
設計一系列的模板佈局, 然後讓其他檔案去擴充套件
這裡我們來看一個例子, 下面分別是layout.jade
和index.jade
檔案的內容:
extend layout
block content
h1= title
p Welcome to #{title}
上面程式碼的意思是index.jade
擴充套件了layout.jade
, block content
是layout.jade
中宣告的一個html填充塊, 這裡向裡面填充了一個<h1>
和一個<p>
.
下面讓我們來看一下layout.jade
.
doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
block content
script(src='/javascript/jquery-3.1.1.min.js')
script(src='/bootstrap/js/bootstrap.min.js')
layout.jade
除了用於定義html的模板, 還用來進行css和js指令碼的連線, 注意: js指令碼放在頁面最下面有利於提升網頁的載入速度. 此外, 第一行設定的viewport
有利於頁面能夠在移動裝置上良好的縮放.
到此, 使用Bootstrap的Amelia主題之後的顯示效果如下:
使用Heroku進行網站的對外線上演示
將網站託管到線上平臺上的意義是:
可以便利的進行跨瀏覽器的測試, 跨裝置測試, 並且能夠向同事和合作夥伴快速展示與交流開發階段性進展.
類似的平臺服務還有Google Cloud Platform, Nodejitsu, OpenShift等.
安裝Heroku
- 從這裡註冊一個免費賬號
- 下載Heroku toolbelt, 或者直接使用以下指令在Ubuntu中下載
bash
$ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh
- 觸發安裝
bash
$ heroku --version
- 驗證安裝成果
bash
$ heroku --version
heroku-toolbelt/3.43.15 (x86_64-linux) ruby/1.9.3
heroku-cli/5.5.6-a9ddee4 (linux-amd64) go1.7.4
You have no installed plugins.
- 登陸(實際上完成了類似ssh金鑰對生成並上傳公鑰的工作)
bash
$ heroku login
使用Heroku提交Node.js應用
首先需要保證雲端的執行環境與本地開發環境一致
具體的是在package.json
中新增一個engines
配置塊, 指明node和npm的版本, 如果不清楚的話, 還是確認一下比較好:
$ node --version
$ npm --version
下面是示例的package.json
檔案:
{
"name": "Loc8r"
...
"engines": {
"node": "~4.6.0",
"npm": "~2.15.9"
},
...
}
建立一個雲端啟動指令碼
具體來說就是建立一個啟動指令碼, 指明我們應用的型別以及啟動指令, 對於Node.js應用來說, 需要在應用的根目錄下建立一個名為Procfile
的檔案, 示例內容如下:
web: npm start
使用heroku local進行本地驗證
heroku local
的前身是foreman
, 但是現在的heroku toolbelt中已經用前者替換掉了了後者, 詳見如下官方通知
heroku local
工具是用來在提交應用前進行本地驗證的, 使用heroku local
啟動應用前需要先關閉本地應用, 然後使用以下指令啟動:
$ heroku local web
程式成功啟動後會監聽在5000埠, 我們可以通過localhost:5000
來訪問, 顯示效果應與之前本地直接執行相同.
將應用託管到Heroku
首先需要初始化一個git倉庫, 新增.gitignore檔案, 推薦使用這裡自動生成(鍵入Node即可).
然後在雲端建立一個heroku應用容器(隱式完成了本地倉庫的關聯)
$ heroku create
Creating app... done, ⬢ sheltered-everglades-85543
https://sheltered-everglades-85543.herokuapp.com/ | https://git.heroku.com/sheltered-everglades-85543.git
推送到遠端倉庫
$ git push heroku master
在heroku雲端用測試機(dyno)來執行部署的程式
每位使用者都會免費獲得一個可用的web測試機, 使用如下指令來開啟它
$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:Free
線上瀏覽部署情況
$ heroku open
自動在雲端的網址上看到部署的應用的情況
之後修改了應用程式碼後, 只需要push到heroku容器的master分支, 就會自動更新並部署.
相關推薦
從零構建部署Node.js+Express+Bootstrap Web應用
本文將包括以下內容: 建立一個Express應用 使用npm和package.json管理應用依賴 調整Express工程結構到MVC架構 Route和Controller概念分離 建立新的Node模組(module) 使用Git線上部署Express應用到
從零開始構建部署上線Node.js+Express+Bootstrap+Jade響應式網站應用—RSPT丨留學生活第一站(三)
一、Nodejs 線上伺服器部署與釋出綜述 伺服器配置生產環境所需要的步驟大致為: 整個專案部署詳細流程文字解析: 部署流程圖依照學習課程的流程: 看著這個圖,Scott老師有一段精彩的故事詮釋它: 故事還得從左下腳的角落開始,一把椅子
從零開始——搭建node.js服務
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res
從零開始的node.js-1 基礎格式、執行、打斷、路由、讀取檔案。
//打算學下後端,可是不知道選php還是node,想了想反正不打算精通只是不想和後端交流過於麻煩而已,所以還是學node。js吧,不知道能不能學會 //1 安裝node.js 不說啥了 2. 在js裡寫出如下程式碼 開啟命令列 輸入node xxx.js&
Re:Programmer 從零開始的Node.js(3)
繼續開啟命令提示符,開啟在上篇文章中新建的資料夾 nodejs_new,然後 npm start開啟網頁,輸入 localhost:3000接下來用webstort開啟專案目錄:開啟webstorm,File=>Open找到G:\Express\nodejs_new
Re:Programmer 從零開始的Node.js(6)
在成功實現前後臺互動和資料庫連線後,接下來就做一個前臺頁面獲取資料庫資料並區域性重新整理的功能。這個功能需要用到ajax,所以直接在前臺匯入jquery檔案,方便處理頁面。首先,將views資料夾下的layout.jade檔案新增jquery連結,程式碼:doctype ht
Express - 基於 Node.js 平臺的 web 應用開發框架
create down block log 功能 views div save filepath Web 應用 Express 是一個基於 Node.js 平臺的極簡、靈活的 web 應用開發框架,它提供一系列強大的特性,幫助你創建各種 Web 和移動設備應用。 API 豐
為何Node.js 能成為 Web 應用開發最佳選擇?【強推理由】
一項顛覆性的技術進入技術市場總會帶來一陣震驚,但隨之而來往往是被放棄。然而,Node.js 當然不是這樣的情況,它是一個開源的、跨平臺的基於 Chrome 的 JavaScript 執行時。Node.js 由 Ryan Dahl 於 2009 年開發,該平臺現
node.js express+ejs引擎構建第一個項目(一)
sta com 如果 node.js install 安裝 exp expr inf express+ejs初始化項目命令: express -t ejs projetName 目錄結構如下: 安裝依賴: npm install 安裝依賴後,啟動項目:
Nodejs學習筆記(七)—Node.js + Express 構建網站簡單示例
ren 結構 crypto 中間件 實現 cmd ews path releases 前言 上一篇學習了一些構建網站會用到的一些知識點:https://www.cnblogs.com/flyingeagle/p/9192936.html 這一篇主要結合前面講到的知識
angular2+node.js express打包部署
angular是客戶端JS,NODE.JS 是服務端JS,建立SPA 網站需要把這兩者統一到一起。 1、angular2專案建立,使用angular-cli ng new mypos 2、使用express命令列工具建立express專案。 expr
Node.js+Express構建Http服務(GET方式和POST方式)
Node.js 前提 環境:windows7下載地址:http://nodejs.org/download/ 安裝 官網下載一個安裝檔案點選下一步安裝完成即可. 驗證安裝是否成功:node -v 基本HTTP伺服器 c:/http.js Js程式碼
Nodejs學習筆記(六)--- Node.js + Express 構建網站預備知識
目錄 前言 前面經過五篇Node.js的學習,基本可以開始動手構建一個網站應用了,先用這一篇瞭解一些構建網站的知識! 主要是些基礎的東西... 如何去建立路由規則、如何去提交表單並接收表單項的值、如何去給密碼加密、如何去提取頁面公共部分(相當於使用者控制元件和母版頁)等等...
Nodejs學習筆記(七)--- Node.js + Express 構建網站簡單示例
目錄 前言 這一篇主要結合前面講到的知識,去構建一個較為完整的網站應用程式,對前面學到的一些知道做一個串聯加深並靈活運用! 功能主要用MySQL資料庫,包括登入、註冊、主頁三部分;下面就一步步開始吧! 新建專案、建立資料庫以及其它準備工作 1.新建express + ejs
瞭解以太坊區塊鏈智慧合約開發從零構建和部署去中心化投票
區塊鏈愛好者(QQ:53016353)編輯器選擇理論上講任何編輯器都可以編寫Solidity合約程式碼,比如:WebStorm,VSCode,Sublime,等等。我選擇的是Atom,沒有任何理由,因為Atom輕量並且介面漂亮。移步https://atom.io/地址,下載安
從零構建以太坊(Ethereum)智能合約到項目實戰——第23章 從零構建和部署去中心化投票App,decentralization Voting Dapp
上傳數據 文件 ali 安裝 存儲文件 去中心化 圖片上傳 個人 構建 P90 、1-從零構建和部署去中心化投票App-01P91 、2-從零構建和部署去中心化投票App-02P92 、3-從零構建和部署去中心化投票App-03P93 、1-IPFS環境配置P94 、2-I
Node.js, Express的服務器搭建過程的問題
節點 順序 post 模塊化 回調地獄 模塊 調試 cheerio void Node.js, Express的服務器搭建過程的問題 Express : node.js 的框架,根據2012年BYvoid的說法,是node.js官方唯一推薦的框架 怎麽搭建項目? - 安
通過新浪雲部署Node.js微信小程序商城(不用買域名、不用備案、不用配置https)
個數 bre rem faq 開發 mem nbsp edi home 本文檔為微信小程序商城NideShop項目的安裝部署教程(GitHub),歡迎star 一、購買新浪雲SAE 為什麽選擇SAE?免費二級域名和支持https訪問,不用備案,可用做微信小程序服務器。 S
用node.js express設置路徑後 子路徑下的頁面訪問靜態資源路徑出問題
ref gin images ejs title use func tle public 在routes/news_mian.js 設置了訪問news_main.html 的路徑 ‘/‘,通知設置一個訪問news-page.html的子路徑‘/newspage‘子路徑。但是
一種簡單的生產環境部署Node.js程序方法
set process 一次 ann 來安 環境配置 load 修改 evel 最近在部署Node.js程序時,寫了段簡單的腳本,發覺還挺簡單的,忍不住想與大家分享。 配置文件 首先,本地測試環境和生產環境的數據庫連接這些配置信息是不一樣的,需要將其分開為兩個文件存儲