node.js工程的结构
生活随笔
收集整理的這篇文章主要介紹了
node.js工程的结构
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們使用express生成了package.json,它只產生了javascript的app.js和routes/index.js。模版引擎ejs有文件index.ejs,此外還有樣式表style.css。
??12講問題:創建工程時候一直使用jade。要求用ejs
一、app.js 工程的入口。
分析代碼: /*** Module dependencies.*/ /*引用模塊*/ var express = require('express'), routes = require('./routes'), user = require('./routes/user'), http = require('http'), util=require('util'), path = require('path'),engine=require('./system'); /*實例化express對象*/ var app = express();/*配置app的參數和啟用中間件*/ app.configure(function(){app.set('port', process.env.PORT || 3000);//告訴我們的頁面模版目錄app.set('views', __dirname + '/views');//告訴它我們使用那種模版引擎app.set('view engine', 'ejs');app.use(express.favicon());app.use(express.logger('dev'));app.use(express.bodyParser());app.use(express.methodOverride());app.use(app.router);app.use(express.static(path.join(__dirname, 'public'))); });//配置開發模式 app.configure('development', function(){app.use(express.errorHandler()); }); //指定路由控制 app.get('/', routes.index); app.get('/pcat', routes.pcat); app.get('/user/:username',function(req,res){res.send("user :"+req.params.username);});app.get('/users', user.list); app.all('/test/:username',function(req,res,next){console.log("all methods is call");//我們在這里驗證用戶名是否存在。//如果存在直接send或者調用next(new Error('用戶已經存在'));//如果不存在我們調用next()把控制權交給下一個路由規則next();res.send('all的路由規則完畢。') });app.get('/test/:username',function(req,res){res.send("user:"+req.params.username) }) app.get('/abc',routes.pcat) //改造ejs引擎中的方法 app.engine('ejs', engine); //將layout的模版布局模版設置為默認 app.locals._layoutFile='layout' //片段視圖 app.get('/list',function(req,res){res.render('list',{title:'片段視圖',items:['marico',1991,'pcat']}) }); //視圖助手 app.locals({inspect:function(obj){return util.inspect(obj,true)+" 解析成功";} }) app.get('/view',function(req,res){res.locals({headers:function(req,res){return req.headers;}})res.render('view',{title:"PCAT"}); }) //創建服務并監聽端口 http.createServer(app).listen(app.get('port'), function(){console.log("Express server listening on port " + app.get('port')); });????????????1.我們導入了express模塊,前面我們通過npm install依賴上了,在這里就可以直接通過require獲取、
????????????2.routes是一個文件夾形式的本地模塊,即./routes/index.js,他的功能是為指定的路徑組織返回內容,相對于mvc架構中的控制器。
????????????3.app.set是Express的參數設置工具,接受一個鍵(key)和一個值(value),可以用的參數如下:
basepath:基礎機制,通常用于res.redirect()跳轉 views:視圖文件的目錄,存放模版文件 port:指定的端口 view engine:視圖模塊引擎(推薦使用ejs) view options:全局視圖參數對象 view cache:啟用視圖緩存 case sensitive routes:路徑區分大小寫 strict routing:嚴格路徑,啟用后不會忽略路徑末尾的"/" jsonp callback:開啟透明的jsonp支持?????????4.Express依賴于connect,connect更加短小精悍,是一個偏向基礎設施的框架,提供了大量的中間件,可以通過app.use啟用。
中間件:一系列的組件連接到一起,然后讓http的請求依次流過這些組件。這些被connect串聯起來的組件被稱為中間件 app.configure中啟用了五個中間件: bodyParser:解析客戶端請求。 router:項目的路由支持 static:提供靜態文件支持。 methodOverride:函數重寫 errorHandler:錯誤控制器 connect詳解:http://cnodejs.org/topic/4fb79b0e06f43b56112b292c????????5.app.get('/',routes.index),是一個路由控制器,用戶如果訪問'/'路徑,則routes.index來控制。
????????6.通過express.createServer()函數創建一個應用的實例
?????二、routes/index.js是路由文件,相當于控制器,用于組織展示的內容。
app.js中通過app.get('/',routes.index)將'/'路徑映射到exports.index函數下,其中只有一個語句,res.render('index',{title:"pcat"}),功能是調用模版解析引擎,并傳入一個對象作為參數,這個對象只有一個屬性,即title 三、index.ejs模版文件,即routes.index.js中調用的模版。 它的基礎是HTML語言(我們降低了學習難度),其中包含了<%=title%>的標簽,功能是顯示引用的變量。即res.render函數的第二個參數出啊如的對象的屬性.總結
以上是生活随笔為你收集整理的node.js工程的结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构实验之排序五:归并求逆序数
- 下一篇: QAQ的幸运数字 数学