<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="【分享】美团酒店Node全栈开发实践" id="card1">
<p> 游客</p><p>
标题:【分享】美团酒店Node全栈开发实践<br/>
正文:<br/>
前后端分离的背景“前后端分离”显然已不是什么新鲜的话题，Zakas在2013年10月份就曾发表过一篇博客《Node.js and the new web front-end》讨论Node背景下新时代的前端。毫无疑问，Node的出现给JavaScript语言带来了新的生机，也使得前端开发者有了更多的可能性。前后端分离表面上看似乎是一场“圈地运动”，但实质上前后端分离是为了解决以往开发模式的一些诟病和痛点，同时也是迎合大的行业趋势的明智之举。我所在的美团酒店事业部去年7月份成立，新的业务、新的开发团队，这一切使得我们的前后端分离推进的很彻底。截至目前，前端承载的所有业务和线上服务都是基于Node，生产环境已经有近20台服务器。如此带来的全新前后端协作方式能够让专业的人做专业的事，无论前端后端都能较之前更专注在自己擅长的方面。开发模式、技术栈传统的开发模式只需要专注在多终端的呈现上（浏览器、WebView）。而现在，浏览器只是前端的其中一环，延伸出来的还有Node端的架构、服务的运维能力等。上图是我们目前的服务架构：Nginx位于Node服务之前，用做负载均衡、服务调度、Gzip压缩等。之后便是Node服务，我们通过PM2.5进行Node服务的Cluster部署和负载均衡（充分利用多核优势），同时作为轻量的中间层，负责路由、Controllers、Views、以及视图的渲染，数据的获取通过RESTful的API接口使用JSON格式交互。而后端则只需要负责业务逻辑、数据存储、Models，并为前端提供JSON数据即可。这样改变之后，Node端可以进行首屏渲染等页面加载方面的优化，页面渲染出来之后后续的交互、渲染都交由浏览器端的JavaScript代码来完成，Node端的模板和浏览器端的模板大部分情况下都是相同的，所以我们需要考虑模板重用的问题。我们用Juicer替换了Express框架默认的模板引擎，Juicer是一个高效、轻量的前端 (Javascript) 模板引擎，效率和易用是它追求的目标。除此之外，它还可以运行在 Node.js 环境中。通过Juicer，可以解决Node端和浏览器端的模板、Helper复用问题。而且基于前后端分离的工程架构下，前端的代码仓库和后端隔离，前端独立负责前端静态资源文件、模板文件、Controller的维护和发布。按照这样重新定义前后端分<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2265&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2265&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2265&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2265&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2265&amp;Page=5">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=2265">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=2265">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>