Node和NPM的安裝夠便捷了,不細(xì)說...有幾點(diǎn)基礎(chǔ)順手提一下:
首先全局安裝express 和express-generator
安裝命令中的 “-g” 表示全局(global)
express的版本不是通常的 “-v” 來查看逻炊,而是 “-V”
-
安裝express項(xiàng)目的命令如下
express -e nodejs-product-e, --ejs add ejs engine support
-J, --jshtml add jshtml engine support (defaults to jade)
PS:模板引擎之類暫時(shí)不必care,不過俺當(dāng)初學(xué)習(xí)搭建Node+express時(shí)用的是ejs嗜历,所以也就順手一直用著了
Node的小基友supervisor
每次修改代碼后會(huì)自動(dòng)重啟。懶程序員就指望這種省事省力的工具活著了:)
安裝:npm install -g supervisor
執(zhí)行:supervisor app.js
另一個(gè)小基友forever
虛擬機(jī)一關(guān)node服務(wù)就關(guān)了,不過forever可以讓node服務(wù)不停止,介紹如下枫弟,安裝和執(zhí)行不細(xì)說啦,我懶:
forever是一個(gè)簡(jiǎn)單的命令式nodejs的守護(hù)進(jìn)程鹏往,能夠啟動(dòng)淡诗,停止,重啟App應(yīng)用。forever完全基于命令行操作韩容,在forever進(jìn)程之下款违,創(chuàng)建node的子進(jìn)程,通過monitor監(jiān)控node子進(jìn)程的運(yùn)行情況群凶,一旦文件更新插爹,或者進(jìn)程掛掉,forever會(huì)自動(dòng)重啟node服務(wù)器请梢,確保應(yīng)用正常運(yùn)行递惋。
安裝
npm install forever -g
使用:
# 啟動(dòng)
forever start ./bin/www #最簡(jiǎn)單的啟動(dòng)方式
forever start -l forever.log ./bin/www #指定forever日志輸出文件,默認(rèn)路徑~/.forever
forever start -l forever.log -a ./bin/www #需要注意溢陪,如果第一次啟動(dòng)帶日志輸出文件萍虽,以后啟動(dòng)都需要加上 -a 參數(shù),forever默認(rèn)不覆蓋原文件
forever start -o out.log -e err.log ./bin/www #指定node.js應(yīng)用的控制臺(tái)輸出文件和錯(cuò)誤信息輸出文件
forever start -w ./bin/www #監(jiān)聽當(dāng)前目錄下文件改動(dòng)形真,如有改動(dòng)杉编,立刻重啟應(yīng)用,不推薦的做法咆霜!如有日志文件邓馒,日志文件是頻繁更改的
# 重啟
forever restart ./bin/www #重啟單個(gè)應(yīng)用
forever restart [pid] #根據(jù)pid重啟單個(gè)應(yīng)用
forever restartall #重啟所有應(yīng)用
# 停止(和重啟很類似)
forever stop ./bin/www #停止單個(gè)應(yīng)用
forever stop [pid] #根據(jù)pid停止單個(gè)應(yīng)用
forever stopall #停止所有應(yīng)用
# 查看forever守護(hù)的應(yīng)用列表
forever list
express安裝
首先假定你已經(jīng)安裝了 Node.js,接下來為你的應(yīng)用創(chuàng)建一個(gè)目錄蛾坯,然后進(jìn)入此目錄并將其作為當(dāng)前工作目錄光酣。
生成目錄結(jié)構(gòu)
npm install -g express
npm install -g express-generator
express -e xxx
express項(xiàng)目目錄
如上圖就是一個(gè)express項(xiàng)目結(jié)構(gòu),簡(jiǎn)單過一下:
app.js: 項(xiàng)目入口脉课,反正express愛叫app.js沒轍救军,你可以改成index.js或者main.js都成。相當(dāng)于php項(xiàng)目中的 index.php倘零、index.html
node_modules: 存放項(xiàng)目的依賴庫(kù)
package.json: 項(xiàng)目依賴配置及開發(fā)者信息(這個(gè)要說就說多了唱遭,還是看文檔好,俺就不誤人子弟了呈驶。下期看看抽個(gè)小段單說Node模塊)
public: 靜態(tài)文件如 css,js,img (PS:俺其實(shí)習(xí)慣叫static)
routes: 路由文件(學(xué)習(xí)的重要攻克對(duì)象拷泽。尼瑪業(yè)務(wù)好不好,路由是關(guān)鍵)
-
Views: 頁(yè)面文件(Ejs或者jade的模板袖瞻,默認(rèn)是jade司致,俺這用Ejs,在初階練手最重要聋迎,所以都可以試試)
打開View 文件發(fā)現(xiàn)index.ejs比較不習(xí)慣脂矫,所以對(duì)app.js進(jìn)行小改動(dòng):
“app.set('view engine', 'ejs');” 變成 “app.engine('.html', ejs.__express);app.set('view engine', 'html');”
-
上一行出現(xiàn)的ejs變量需要require ejs模塊,增加代碼“var ejs = require('ejs');”
最終的app.js如下:
代碼小解:
app.set("port",3000)//設(shè)置端口號(hào)
app.set('views', path.join(__dirname, 'views')); //應(yīng)用程序視圖的目錄或目錄數(shù)組砌庄。 如果是數(shù)組羹唠,則按照它們?cè)跀?shù)組中出現(xiàn)的順序查找視圖奕枢。
app.engine(".html",ejs.__express)
app.set('view engine', 'html'); //設(shè)置靜態(tài)模板類型(默認(rèn)為ejs)
app.use(express.json());
app.use(express.urlencoded({ extended: false })); //引入中間件接續(xù)json
app.get("/",routes.index) //使用不同的路由文件
路由
var express=require("express")
var router=express.Router()
var News=require("./news")
/**
* 獲取消息列表
*/
router.get("/",(req,res)=>{
res.render("index")
})
/**
* java服務(wù)器發(fā)送消息json到消息推送服務(wù)器
*/
router.post("/list",(req,res)=>{
var reqparams=req.body.items;
console.log(reqparams)
new News().onsendNewList(reqparams)
// res.send("c")
})
module.exports=router