<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[刘新修]]></title> 
<link>http://pic1.liuxinxiu.com:80/index.php</link> 
<description><![CDATA[刘新修的个人博客 (Liuxinxiu'S Blog)]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[刘新修]]></copyright>
<item>
<link>http://pic1.liuxinxiu.com:80/ExpressJs_demo/</link>
<title><![CDATA[Express.js 构建工程实例 ---- [ 环境安装、控制器/路由设置、Post+Jsonp接口、ejs模版、全局变量 ]]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[NodeJs平台]]></category>
<pubDate>Sat, 28 May 2016 13:40:34 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/ExpressJs_demo/</guid> 
<description>
<![CDATA[ 
	<p><strong><span style="color: rgb(204, 0, 0); font-family: arial; font-size: 13px; line-height: 20.02px;">Express</span><span style="color: rgb(51, 51, 51); font-family: arial; font-size: 13px; line-height: 20.02px;">.</span><span style="color: rgb(204, 0, 0); font-family: arial; font-size: 13px; line-height: 20.02px;">js </span><span style="font-family: Verdana, Tahoma; font-size: 12px;">构建工程实例 ---- [ 环境安装、控制器/路由设置、Post+Jsonp接口、ejs模版、全局变量 ]</span></strong></p><p>ExpressJS在Node环境上安装( <strong><span style="color: rgb(0, 0, 255);"><a href="http://liuxinxiu.com/wmnp" target="_blank"><span style="color: rgb(0, 0, 255);">绿色版Node运行环境套件下载</span></a></span></strong> )：</p><p><img src="http://at.liuxinxiu.com/2016/05/image/n1.GIF" width="550" height="241" alt="" /></p><p><img src="http://at.liuxinxiu.com/2016/05/image/n2.GIF" width="606" height="533" alt="" /></p><p><img src="http://at.liuxinxiu.com/2016/05/image/n3.GIF" width="550" height="599" alt="" /></p><p><img src="http://at.liuxinxiu.com/2016/05/image/n4.GIF" width="550" height="679" alt="" /></p><p><img src="http://at.liuxinxiu.com/2016/05/image/n5.GIF" width="550" height="438" alt="" /></p><p>app.js 代码如下：</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/******************************************************</span> </span></li><li><span><span class="comment"> *************** global modules&nbsp;&nbsp;******************</span> </span></li><li class="alt"><span><span class="comment">******************************************************/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="keyword">var</span><span> express=require(</span><span class="string">'express'</span><span>);&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> path=require(</span><span class="string">'path'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> favicon=require(</span><span class="string">'serve-favicon'</span><span>);&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> logger=require(</span><span class="string">'morgan'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> cookieParser=require(</span><span class="string">'cookie-parser'</span><span>);&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> bodyParser=require(</span><span class="string">'body-parser'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="keyword">var</span><span> routes=require(</span><span class="string">'./routes/index'</span><span>);&nbsp;&nbsp;</span></span></li><li><span><span class="comment">//var redis=require('./routes/redis');</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="keyword">var</span><span> app=express();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/******************************************************</span> </span></li><li class="alt"><span><span class="comment"> *************** view engine setup&nbsp;&nbsp;******************</span> </span></li><li><span><span class="comment">******************************************************/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">/******************&nbsp;&nbsp;jade模版&nbsp;&nbsp;&nbsp;&nbsp; *********************/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comment">/*******************************************************</span> </span></li><li class="alt"><span><span class="comment">app.set('views',path.join(__dirname,'views/jade/'));</span> </span></li><li><span><span class="comment">app.set('view engine','jade'); //jade or ejs</span> </span></li><li class="alt"><span><span class="comment">********************************************************/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/******************&nbsp;&nbsp;ejs模版&nbsp;&nbsp;&nbsp;&nbsp; *********************/</span><span>&nbsp;&nbsp;</span></span></li><li><span>app.set(<span class="string">'views'</span><span>,path.join(__dirname,</span><span class="string">'views/ejs/'</span><span>));&nbsp;&nbsp;</span></span></li><li class="alt"><span>app.set(<span class="string">'view engine'</span><span>,</span><span class="string">'ejs'</span><span>); </span><span class="comment">//jade or ejs</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comment">/******************&nbsp;&nbsp;ejs模版&nbsp;&nbsp;&nbsp;&nbsp; *********************/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/******************************************************</span> </span></li><li class="alt"><span><span class="comment"> ****************** routes setup&nbsp;&nbsp;********************</span> </span></li><li><span><span class="comment">******************************************************/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">// uncomment after placing your favicon in /public</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comment">//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>app.use(logger(<span class="string">'dev'</span><span>));&nbsp;&nbsp;</span></span></li><li><span>app.use(bodyParser.json());&nbsp;&nbsp;</span></li><li class="alt"><span>app.use(bodyParser.urlencoded(&#123;extended:<span class="keyword">false</span><span>&#125;));&nbsp;&nbsp;</span></span></li><li><span>app.use(cookieParser());&nbsp;&nbsp;</span></li><li class="alt"><span>app.use(express.<span class="keyword">static</span><span>(path.join(__dirname,</span><span class="string">'public'</span><span>)));&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>app.use(<span class="string">'/'</span><span>,routes);&nbsp;&nbsp;</span></span></li><li><span><span class="comment">/****************** routes setup&nbsp;&nbsp;*********************/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">/*******************************************************</span> </span></li><li><span><span class="comment">app.use('/redis',redis);</span> </span></li><li class="alt"><span><span class="comment">app.use('/jsonp',routes);</span> </span></li><li><span><span class="comment">app.use('/login',routes);</span> </span></li><li class="alt"><span><span class="comment">*************************************************/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/******************************************************</span> </span></li><li class="alt"><span><span class="comment"> ****************** 服务错误处理&nbsp;&nbsp;********************</span> </span></li><li><span><span class="comment">******************************************************/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/***** catch 404 and forward to error handler *****/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>app.use(<span class="keyword">function</span><span>(req,res,next)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="keyword">var</span><span> err=</span><span class="keyword">new</span><span> Error(</span><span class="string">'404 Not Found'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;err.status=404;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;next(err);&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">// error handlers</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comment">// development error handler</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">/***** 通用错误处理程序 *****/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">if</span><span>(app.get(</span><span class="string">'env'</span><span>)===</span><span class="string">'development'</span><span>)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;app.use(<span class="keyword">function</span><span>(err,req,res,next)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;res.status(err.status&#124;&#124;500);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;res.render(<span class="string">'sys/error'</span><span>,&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message:err.message,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error:err,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version:process.version&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">// production error handler</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comment">// no stacktraces leaked to user</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>app.use(<span class="keyword">function</span><span>(err,req,res,next)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;res.status(err.status&#124;&#124;500);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;res.render(<span class="string">'sys/error'</span><span>,&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;message:err.message,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;error:&#123;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;);&nbsp;&nbsp;</span></li><li><span><span class="comment">/***** 通用错误处理程序 *****/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>module.exports=app;&nbsp;&nbsp;</span></li></ol></div><p>routes/index.js 代码如下：</p><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/******************************************************</span> </span></li><li><span><span class="comment"> *************** router&nbsp;&nbsp;*************************</span> </span></li><li class="alt"><span><span class="comment">******************************************************/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> express=require(</span><span class="string">'express'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> router=express.Router();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="keyword">var</span><span> url=require(</span><span class="string">&quot;url&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//解析GET请求&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> query=require(</span><span class="string">&quot;querystring&quot;</span><span>);&nbsp;&nbsp;</span><span class="comment">//解析POST请求</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/************* GET home page demo *************/</span><span>&nbsp;&nbsp;</span></span></li><li><span>router.get(<span class="string">'/'</span><span>,</span><span class="keyword">function</span><span>(req,res,next)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;res.render(<span class="string">'sys/index'</span><span>,&#123;title:</span><span class="string">'Express'</span><span>&#125;);&nbsp;&nbsp;</span></span></li><li><span>&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>router.get(<span class="string">'/jsonp'</span><span>,</span><span class="keyword">function</span><span>(req,res,next)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;res.render(<span class="string">'main/jsonp'</span><span>,&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'jsonp'</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li><span>&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>router.get(<span class="string">'/login'</span><span>,</span><span class="keyword">function</span><span>(req,res,next)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;res.render(<span class="string">'main/login'</span><span>,&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'The Entrar-shadow Website'</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fonts:<span class="string">'Member Login'</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username:<span class="string">'Liuxinxiu'</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li><span>&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>router.get(<span class="string">'/test_load'</span><span>,</span><span class="keyword">function</span><span>(req,res,next)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> build=req.query.build;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;res.render(<span class="string">'test/test_load'</span><span>,&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'build'</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;build:build&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li><span>&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>router.get(<span class="string">'/test_page'</span><span>,</span><span class="keyword">function</span><span>(req,res,next)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> build=req.query.build;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;res.render(<span class="string">'test/test_page'</span><span>,&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'test_page'</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;build:build&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;);&nbsp;&nbsp;</span></li><li><span>&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/*</span> </span></li><li><span><span class="comment">app.get('/jsonp',function(req,res,next)&#123;</span> </span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp; res.jsonp(&#123;status:'jsonp'&#125;);&nbsp;&nbsp;</span> </span></li><li><span><span class="comment">&#125;);</span> </span></li><li class="alt"><span><span class="comment">*/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/************* 自造Json数据 *************/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">var</span><span> userData=</span><span class="string">'PHN0eWxlPip7bWFyZ2luOjA7cGFkZGluZzowO31oMXtmb250LXNpemU6MTZweDt0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6NDVweDt9Ym9keXtjb2xvcjojMzMzO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtZmFtaWx5OiJNaWNyb3NvZnRZYWhlaSI7YmFja2dyb3VuZDojQjdDQUNDO31kaXZ7Ym9yZGVyOjFweCBzb2xpZCAjNDA1RTdCOyBib3JkZXItYm90dG9tOjA7IHdpZHRoOjk1JTsgbWFyZ2luOjAgYXV0bztiYWNrZ3JvdW5kOiNmZmY7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlO2NsZWFyOmJvdGh9bGl7bGluZS1oZWlnaHQ6MzVweDtsaXN0LXN0eWxlOm5vbmU7d2lkdGg6MjUlO3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0MDVFN0I7ZmxvYXQ6bGVmdDt9PC9zdHlsZT48aDE+5pyA6L+R6aOO5LqR5Lq65ZGY5ZCN5Y2VPC9oMT48ZGl2Pg0KCTx1bD4NCgkJPGxpPumjjua4heaJrDwvbGk+DQoJCTxsaT4xMTAxPC9saT4NCgkJPGxpPjIzPC9saT4NCgkJPGxpPjUyODE5OTExPC9saT4NCgk8L3VsPg0KCQ0KCTx1bD4NCgkJPGxpPuiuuOW/l+mjnjwvbGk+DQoJCTxsaT4xMTAxPC9saT4NCgkJPGxpPjIzPC9saT4NCgkJPGxpPjUyODE5OTExPC9saT4NCgk8L3VsPg0KCQ0KCTx1bD4NCgkJPGxpPuS7pOeLkOWGsjwvbGk+DQoJCTxsaT4xMTAyPC9saT4NCgkJPGxpPjIxPC9saT4NCgkJPGxpPjUyODE5OTAxPC9saT4NCgk8L3VsPg0KCQ0KCTx1bD4NCgkJPGxpPuS7u+aIkeihjDwvbGk+DQoJCTxsaT4xMTAzPC9saT4NCgkJPGxpPjIyPC9saT4NCgkJPGxpPjUyODE5OTkxPC9saT4NCgk8L3VsPg0KCQ0KCTx1bD4NCgkJPGxpPuS7u+ebiOebiDwvbGk+DQoJCTxsaT4xMTA0PC9saT4NCgkJPGxpPjI0PC9saT4NCgkJPGxpPjUyODE5OTgxPC9saT4NCgk8L3VsPg0KCQ0KCTx1bD4NCgkJPGxpPuS4nOaWueS4jei0pTwvbGk+DQoJCTxsaT4xMTA1PC9saT4NCgkJPGxpPjI2PC9saT4NCgkJPGxpPjUyODE5OTgxPC9saT4NCgk8L3VsPg0KCTwvZGl2Pg=='</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span> dataJson=&#123;status:1,message:</span><span class="string">&quot;这是一个JSONP接口,success!&quot;</span><span>,dataList:userData,JsonArray:[0,1,2,3,4,5]&#125;;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">/************* 处理GET请求(jsonp需判断参数单独处理) *************/</span><span>&nbsp;&nbsp;</span></span></li><li><span>router.get(<span class="string">'/API/sendGet/jsonpInfo.do'</span><span>,</span><span class="keyword">function</span><span>(req,res)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//res.contentType('json');//返回的数据类型</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//res.writeHead(200,&#123;&quot;Content-Type&quot;:&quot;text/json&quot;&#125;);</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;res.setHeader(<span class="string">'Content-Type'</span><span>,</span><span class="string">'text/json;charset=UTF-8'</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> params=url.parse(req.url,</span><span class="keyword">true</span><span>).query; </span><span class="comment">//解释url参数部分name=zzl&amp;email=zzl@sina.com</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**** 获取请求过来的跨域回调函数名称 ****/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> reqQuery=req.query,Jsoncallback=req.query.Jsoncallback;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**** 如果有Jsoncallback的情况 ****/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(reqQuery&amp;&amp;Jsoncallback)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//console.log(params.query.Jsoncallback);</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//res.jsonp(&#123;status:200,message:&quot;这是一个JSONP接口&quot;,data:[]&#125;);</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//res.send(JSON.stringify(&#123;status:200,message:&quot;success!这是一个JSONP接口&quot;,data:[]&#125;));</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**** 拼成一个JS字符串 ****/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span> str=Jsoncallback+</span><span class="string">'('</span><span>+JSON.stringify(dataJson)+</span><span class="string">')'</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//res.json(str);</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//res.write(str);</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res.end(str);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**** 没有Jsoncallback的情况 ****/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span><span>&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res.json(&#123;status:200,message:<span class="string">&quot;这是一个JSON接口&quot;</span><span>,data:[]&#125;);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&#125;);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="comment">/************* 处理POST请求(Body/x-www-form-urlencoded) **************/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>router.post(<span class="string">'/API/sendPost/loginSubmit.do'</span><span>,</span><span class="keyword">function</span><span>(req,res)&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="keyword">var</span><span> username=req.body.username;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;<span class="keyword">var</span><span> password=req.body.password;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;<span class="comment">//console.log(username!='');</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="keyword">if</span><span>((username&amp;&amp;password!=</span><span class="string">''</span><span>))&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="string">&quot;Username=&quot;</span><span>+username+</span><span class="string">&quot;,password=&quot;</span><span>+password);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/**********************************************************************************</span> </span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;/**************&nbsp;&nbsp; JSON.stringify(v) 和 res.json 都是格式数据&nbsp;&nbsp; ********************/</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*********************************************************************************</span> </span></li><li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res.json(&#123;status:1,info:&quot;数据提交成功！&quot;,username:JSON.stringify(username)&#125;);</span> </span></li><li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;/*********************************************************************************/</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;res.json(&#123;status:1,info:<span class="string">&quot;数据提交成功！&quot;</span><span>,username:username&#125;);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&#125;<span class="keyword">else</span><span>&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;res.end(<span class="string">&quot;0&quot;</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>module.exports=router;&nbsp;&nbsp;</span></li></ol></div><p>ejs 模版：</p><div class="codeText"><div class="codeHead">XML/HTML代码</div><ol start="1" class="dp-xml"><li class="alt"><span><span>&lt;!DOCTYPE html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>test</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">charset</span><span>=</span><span class="attribute-value">&quot;utf-8&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">link</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">'text/css'</span><span> </span><span class="attribute">href</span><span>=</span><span class="attribute-value">&quot;/css/login/home.css&quot;</span><span> </span><span class="attribute">rel</span><span>=</span><span class="attribute-value">'stylesheet'</span><span> </span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;viewport&quot;</span><span> </span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;width=device-width, initial-scale=1&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>test/</span><span class="attribute">build</span><span>=</span><span class="tag">&lt;/</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span>%if(1+</span><span class="attribute">1</span><span>===2)&#123;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span>%= build %</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span>%&#125;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span>%if(</span><span class="attribute">build</span><span>==null)&#123;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comments">&lt;!-- 引入require.js和入口文件&#124;&#124;默认开放环境 --&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">script</span><span> </span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;http://localhost:3000/js/lib/require.js&quot;</span><span> </span><span class="attribute">data-main</span><span>=</span><span class="attribute-value">&quot;http://127.0.0.1:3000/js/test/app_page.js&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comments">&lt;!--&lt;script src=&quot;http://localhost:3000/js/test/yy.js&quot;&gt;&lt;/script&gt;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span>%&#125;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="tag">&lt;</span><span>%if(build!=null&amp;&amp;</span><span class="attribute">build</span><span>==1)&#123;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="comments">&lt;!-- 引入require.js和入口文件&#124;&#124;判断参数用于测试build后生产环境版本js --&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">script</span><span> </span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;http://localhost:3000/js/lib/require.js&quot;</span><span> </span><span class="attribute">data-main</span><span>=</span><span class="attribute-value">&quot;http://127.0.0.1:3000/js/test-built/test/app_page.js&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;</span><span>%&#125;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;</p><br/>Tags - <a href="http://pic1.liuxinxiu.com:80/tags/express/" rel="tag">express</a> , <a href="http://pic1.liuxinxiu.com:80/tags/jsonp/" rel="tag">jsonp</a> , <a href="http://pic1.liuxinxiu.com:80/tags/node/" rel="tag">node</a>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/ExpressJs_demo/#blogcomment</link>
<title><![CDATA[[评论] Express.js 构建工程实例 ---- [ 环境安装、控制器/路由设置、Post+Jsonp接口、ejs模版、全局变量 ]]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/ExpressJs_demo/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>