CoffeeScript与Node.js等相结合用于服务器应用程序

在本 系列 的之前几个部分中,您了解了 CoffeeScript 的优势、设置了开发环境、尝试了许多特性,还使用 CoffeeScript 为一个实际应用程序编写了客户端代码。在本系列的最后一篇文章中,我们将编写服务器端 CoffeeScript 代码。

CoffeeScript 是构建在 ">JavaScript 基础之上的一种全新编程语言,提供了能够吸引 Python 或 Ruby 爱好者的整洁的语法。此外还提供了受 Haskell 和 Lisp 等语言启发得出的许多函数式编程特性。

在本 系列文章 的 第 1 部分 中,我们了解了使用 CoffeeScript 的优势。此外还设置了开发环境,运行了脚本。在 第 2 部分 中,我们在尝试解决数学问题的过程中尝试了许多 CoffeeScript 特性,探索了 CoffeeScript 编程语言。在 第 3 部分 中,为一个 Web 应用程序编写了客户端代码。

在最后的这篇文章中,您将编写服务器端组件,并完成应用程序 — 所有一切都是使用 CoffeeScript 完成的。

调用所有 Web 服务

第 3 部分 中的 Web 应用程序使用一个关键字执行了 Google 和 Twitter 搜索。对于应用程序的客户端,您模拟了来自服务器的结果。为了实际实现此类功能,您需要应用程序的服务器端调用 Google 和 Twitter 提供的 Web 服务。两家公司均提供了非常简单的搜索服务。您只需对搜索服务发出 HTTP GET 请求即可。清单 1 展示了发出 HTTP GET 请求的一般函数。

清单 1. 获取 Web 资源

http = require "http" fetch
Page = (host, port, path, callback) -> options = host: host port: port path: path req = http.get options, (res) -> contents = "" res.on 'data', (chunk) -> contents += "#{chunk}" res.on 'end', () -> callback(contents) req.on "error", (e) -> console.log "Erorr: {e.message}"

require 语句是脚本的第一条语句,在本系列的 第 1 部分 中已经对此进行了简单的介绍。这是一种 Node.js 模块导入语法,或者至少应该说是这种语法的 CoffeeScript 版本。“原生” 版本应该是 var http = require("http");。在这篇文章中,您将使用多个 Node.js 核心模块。(这些模块的工作原理不在本文讨论范围之内。)如果您安装了 Node.js,那么就应该能使用本文中使用的所有模块(请参见 第 1 部分)。对于 清单 1 中的示例,您使用的是 http 模块,它为发出和接收 HTTP 请求提供了一些非常有用的类和函数。

清单 1 随后定义了一个 fetchPage 函数,可以接受以下四个参数:

资源的 host 名称。 资源的 port。 资源的 path。 一个 callback 函数。

Node.js 中任何类型的 I/O 函数在本质上都是异步的,因此在完成时需要通过一个 callback 函数进行调用。fetchPage 函数接受一个 callback 函数作为第四个参数。随后使用前三个参数,通过 http 模块的 get 函数发出一条 HTTP GET 请求。

fetchPage 函数也获取一个 callback 函数,将有一个 ClientResponse 实例传递给后一个函数。ClientResponse 是 http 模块中定义的一个对象,它实现了 ReadableStream 接口(Node.js 中的核心接口)。这是一个异步接口,接受两个事件:data 和 end。其惟一的函数用于为这些事件注册回调。在从您发出 HTTP GET 请求的资源接收到数据时,将发生数据事件。

资源将一次性返回所有数据,但更常见的做法是分块发送数据。接收到各块时,数据事件将被触发,回调将被调用。您创建了一个名为 contents 的变量;每次接收到另一个块时,都会将其附加到 contents。接收了所有数据之后,即触发 end 事件。现在,您获得了全部数据,因此可以将 contents 传递给传入 fetchPage 函数的 callback 函数。定义了这个多用途函数之后,下面我们将为 Google 和 Twitter 搜索 API 创建一些专用函数,如 清单 2 所示。

清单 2. Google 与 Twitter 搜索函数

googleSearch = (keyword, callback) -> host = "ajax.googleapis.com" path = "/ajax/services/search/web?v=1.0&q=#{encodeURI(keyword)}" fetchPage host, 80, path, callbacktwitterSearch = (keyword, callback) -> host = "search.twitter.com" path = "/search.json?q=#{encodeURI(keyword)}" fetchPage host, 80, path, callback

清单 2 中定义了两个函数:

googleSearch,用于获取一个 keyword 和一个 callback 函数。它将固定主机,并使用 CoffeeScript 的字符串插值创建路径,随后使用 fetchPage。 twitterSearch,该函数与 googleSearch 极为相似,但使用了不同的主机和路径值。

对于两个路径值,您都要使用字符串插值和 JavaScript 提供的便捷的 encodeURI 函数来处理任何空格或其他特殊字符。现在您已经拥有了这些搜索函数,下面即可为合并搜索场景创建特殊函数。

时间: 2024-11-01 01:02:33

CoffeeScript与Node.js等相结合用于服务器应用程序的相关文章

使用coffeescript编写node.js项目的方法汇总_javascript技巧

Node.js 基于JavaScript编写应用,JavaScript是我的主要开发语言.CoffeeScript是编译为JavaScript的编程语言.其实CoffeeScript语言因其可以一对一的翻译为JavaScript的特性,使用起来也非常灵活.将其引入项目的方式也有很多种,在此,我将使用coffeescript编写node.js项目的方法做一个汇总. 直接使用coffee指令运行纯coffeescript项目 一般提起coffeescript,自然而然地会想到他是javascript

Node.js + Web Socket 打造即时聊天程序嗨聊

前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术.像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端.瞬间就有了一统天下的感觉,来往穿梭于前后端之间代码敲得飞起,从此由前端晋升为'前后端'. 图片来自G+ 本文将使用Node.js加web socket协议打造一个网页即时聊天程序,取名为HiChat,中文翻过来就是'嗨聊',听中文名有点像是专为寂寞单身男女打造的~ 其中将会使用到express和socket.io两个包模块,下面会有介绍

从零开始搭建Node.js, Express, Ejs, Mongodb服务器

第1部分 – 15分钟安装 如果你真的是从零开始学,那就花点时间先把环境搭建起来吧.这不难,我用的是Win8,所以这看上去跟那些用Mac和Ubuntu或者其它*nix系统的教程有点区别,不过大致是一样的. 第1步 – 安装Node.JS 这很容易,进入Node.js官方网站,点击绿色的大Install按钮,它会自动检测你的系统并给你一个正确的安装文件的下载.(如果没有,点击Download按钮选择你需要的下载).运行安装程序,这样就好了.你已经装上了Node.js,和NPM(Node包管理器)可

node.js结合coffeescript使用方式汇总教程

其实coffeescript这种语言因其可以一对一地翻译为javascript的特性,使用起来其实非常灵活. 将其引入项目的方式也不止一个.这里,我先就node项目引入coffeescript的方式作一个汇总,并对比一下各个方式的优劣性. 直接使用coffee指令运行纯coffeescript项目 一般提起coffeescript,自然而然地会想到他是javascript的小弟,总脱离不了js的阴影.其实你完全可以把它认作是独立的语言. 我们都知道,在node平台上全局安装完coffee-scr

为Node.js程序配置使用Nginx服务器的简明教程_nginx

Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用,如实时聊天等等.然而对于gzip编码,静态文件,HTTP缓存,SSL处理,负载平衡和反向代理等,都可以通过nginx来完成,从而减小node.js的负载,并通过nginx强大的缓存来节省网站的流量从而提高网站的加载速度.流程图 nginx配置如下: http

零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门_node.js

本文改自非鱼的<[翻译]前端开发人员入门指南,从零开始搭建Node.js, Express, Jade, Mongodb服务器>,之所以把Jade换成Ejs,是因为我觉得ejs更符合WEB编程人员的习惯,更确切说应该是更符合PHP.ASP程序员的使用习惯.好了,废话不多说,直接开始教程. 第1部分 – 15分钟安装 如果你真的是从零开始学,那就花点时间先把环境搭建起来吧.这不难,我用的是Win8,所以这看上去跟那些用Mac和Ubuntu或者其它*nix系统的教程有点区别,不过大致是一样的. 第

Node.js 实现简单的接口服务器

通过node.js来实现接口服务器的功能.主要特点为: 1) 增加接口不需要重启 2) 异步执行,但接口阅读的时候是同步的代码(从上而下),或者可以按需求并行,串行 这里只是抛出基本思路,所以使用GET,也没有加密之类的 首先启动监听端口,配置好访问规则.(通过识别特定URL ,动态执行相应的接口脚本) -----    |----HamstrerServlet | ------ command3G     | ------ login.js   //登录脚本(这里只是简单演示)   | ---

node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用

 在开发或调试Node.js应用程序的时候,当你修改js文件后,总是要按下CTRL+C终止程序,然后再重新启动,即使是修改一点小小的参数,也总是要不断地重复这几个很烦人的操作.有没有办法做到当文件修改之后,Node.js自动重新启动(或重新加载文件)以节省时间呢?一开始我是想到用grunt的watch模块来监控文件变化,但后来在网上一查,原来我们想到的,别人早已想到,并且已经做得很好.Node Supervisor正是这样一个可以实现这种需求的Node.js模块. 根据Github上的说明,No

node.js环境搭建教程

  Node.js是一个JavaScript运行环境,但是实际上他是多谷歌V8引擎进行封装,node对一些特殊的用例进行了优化,提供了API,让V8更加好的在非浏览器情况下运行,下面小编就为大家介绍一下node.js环境搭建教程 Node.js是一个事件驱动I/O服务端JavaScript环境.由于其拥有异步非阻塞.环境搭建简单.实践应用快等特性,使得其在新一代编程开发中更为流行.同时,由于Node.js 基于JavaScript语法,因此在学习Node.js时也可以了解和学习JavaScrip