Node实战:6 扩展Web服务器
6.1 使用Stream处理静态内容
Stream最基本的用法是使用on方法,将监听函数(listener)添加到事件(event)上。当事件触发时就会调用所提供的函数。readable事件会在输入流读取了进程里的一些内容之后触发。end事件在Stream不再进行内容读取时触发,而error事件会在错误发生时触发。
读取文件:
使用Buffer操作二进制数据:
6.2 在客户端组装内容:模板
客户端可以选择如何展现返回的数据。脚本、样式表甚至大部分HTML都可以托管在文件服务器或内容分发网络(CDN)中。
对于Web浏览器端的应用,可以使用客户端模板。这种方式需要:
- 客户端下载HTML页面的骨架,包含了JavaScript文件、CSS文件以及一个来自Node服务器的空body元素的指针。
- 引入的JavaScript文件中有个加载器(bootstrapper),它会处理包括收集所有数据和组装页面等所有工作。需要给HTML模板的名字以及一个供调用的服务器JSON API。引导程序下载模板,然后使用模板引擎将返回的JSON数据应用到模板文件中。
- 返回的HTML代码被插入页面的body元素中,服务器所需要做的仅仅是处理一点点JSON数据。
在生产环境中,应该将这些文件移到CDN中,并适当地更新指向它们的URL。
模板引擎:如jQuery,本书使用mustache.js
HTML骨架页面:
JavaScript加载器:
使用Mustache模板化:
首页Mustache模板:
整合应用: