Node实战:6 扩展Web服务器

6.1 使用Stream处理静态内容

    Stream最基本的用法是使用on方法,将监听函数(listener)添加到事件(event)上。当事件触发时就会调用所提供的函数。readable事件会在输入流读取了进程里的一些内容之后触发。end事件在Stream不再进行内容读取时触发,而error事件会在错误发生时触发。

    读取文件

    使用Buffer操作二进制数据


6.2 在客户端组装内容:模板

    客户端可以选择如何展现返回的数据。脚本、样式表甚至大部分HTML都可以托管在文件服务器或内容分发网络(CDN)中。

    对于Web浏览器端的应用,可以使用客户端模板。这种方式需要

  1. 客户端下载HTML页面的骨架,包含了JavaScript文件、CSS文件以及一个来自Node服务器的空body元素的指针。
  2. 引入的JavaScript文件中有个加载器(bootstrapper),它会处理包括收集所有数据和组装页面等所有工作。需要给HTML模板的名字以及一个供调用的服务器JSON API。引导程序下载模板,然后使用模板引擎将返回的JSON数据应用到模板文件中。
  3. 返回的HTML代码被插入页面的body元素中,服务器所需要做的仅仅是处理一点点JSON数据。

    在生产环境中,应该将这些文件移到CDN中,并适当地更新指向它们的URL。

    模板引擎:如jQuery,本书使用mustache.js

Node实战:6 扩展Web服务器

     HTML骨架页面

     JavaScript加载器

     使用Mustache模板化

     首页Mustache模板

     整合应用