2016年12月26日 星期一

express, 在 view 目錄中新增子目錄注意事項

在 express 的架構中,我們可以指定 View 所在的目錄位置。當透過 express generator 產生專案時,預設的目錄為  /views,程式碼如下

app.set('views', path.join(__dirname, 'views'));

產生的專案會將需要用到的 view (layout, index,....)都放在 view 目錄底下。如果想要更有結構性的分配目錄結構,我們可以視需求在 views 這個目錄底下新建子目錄,例如

/views
       layout.jade
       index.jade
       error.jdae
       / frontend (放置前台需要用的 views)
       / admin (放置後台需要用的 views)
等等..

當程式需要 render 頁面時,可以使用

res.render('admin/admin');

以下為注意事項

1. 在 route 使用時,路徑不需要加入 '/',例如 '/admin/admin'
2. 在 view 使用時,要記得加 '/'  
3. 請記得修改頁面中需要引入的其他內容。

假設有一檔案 /view/admin/admin.jade 引用 /view/layout.jade,因為不屬於同一個目錄,所以請記得修改引用位置如下



2016年3月25日 星期五

如何在主機重開後自動啟動Node.js網站

測試主機:GCE with Debian Wheezy 7.9


為了在Debian中能夠同時開啟多個Node.js的站台,我們可以使用npm安裝forever,例如:
sudo npm install -g forever
安裝完成後,可以利用下面指令啟動Node.js站台
forever start app.js
[注意] 可能會需要包含位置,例如 forever start /var/www/site/app.js

如果想要看有哪些站台在運行,可以利用下面指令
forever list
不過只要當Server重新啟動之後,這些站台便無法作用。這時候可以用以下的方式

1. 開啟crontab
sudo crontab -e
2. 在crontab內加入底下內容
@reboot /usr/bin/forever start /var/www/app.js
[注意] 需要包含位置,可以用 which forever 查forever的位置

之後Server重新啟動就會自動執行 /var/www/app.js站台,因為是使用sudo編輯crontab所以如果要查看有哪些站台已經在運行,可以利用下面指令
sudo forever list