CoffeeScript
2023-03-12
26
使用 Heregexes
问题
你需要写一个复杂的正则表达式。
解决方案
使用CoffeeScript的“heregexes”——可以忽视内部空白字符并可以包含注释的扩展正则表达式。pattern = ///^\(?(\d{3})\)? # 采集区域代码,忽略可选的括号[-\s]?(\d{3}) # 采集前缀,忽略可选破折号或空格-?(\d{4}) # 采集行号,忽略可选破折号
///
[area_code, prefix, line] = "(555)123-4567".
2023-03-12
28
桥接模式
问题
你需要为代码保持一个可靠的接口,可以经常变化或者在多种实现间转换。
解决方案
使用桥接模式作为不同的实现和剩余代码的中间体。
假设你开发了一个浏览器的文本编辑器保存到云。然而,现在你需要通过独立客户端的端口将其在本地保存。class TextSaverconstructor: (@filename, @options) ->save: (data) ->class CloudSaver extends TextSaverconstructor: (@filename, @opt
2023-03-12
24
清理字符串前后的空白符
问题
你想清理字符串前后的空白符。
解决方案
使用JavaScript的正则表达式来替换空白符。
要清理字符串前后的空白符,可以使用以下代码:" padded string ".replace /^\s+|\s+$/g, ""
# => 'padded string'
如果只想清理字符串前面的空白符,使用以下代码:" padded string ".replace /^\s+/g, "
2023-03-12
18
CoffeeScript 实用手册
CoffeeScript是一门编译到JavaScript的小巧语言。在Java般笨拙的外表下,JavaScript其实有着一颗华丽的心脏。CoffeeScript尝试用简洁的方式展示JavaScript优秀的部分。
适用人群
本书着重讲解了CoffeeScript的基础语法,适合初学者。
学习前提
学习本书前,你需要了解JavaScript这门语言,应为CoffeeScript是建立在此基础上的。相关教程《javascript教程》标签:CoffeeScript
2023-03-12
27
类方法和实例方法
问题
你想创建类和实例的方法。
解决方案
类方法class Songs@_titles: 0 # Although it's directly accessible, the leading _ defines it by convention as private property.@get_count: ->@_titlesconstructor: (@artist, @title) ->@constructor._titles++ # Refers
2023-03-12
31
计算(美国和加拿大的)感恩节日期
问题
你需要在给出的年份中找到感恩节的月份和日期。
解决方案
下面的函数返回给出年份的感恩节的日期。如果没有给出任何参数,给出的结果是当前年份。
美国的感恩节是十一月的第四个星期四。thanksgivingDayUSA = (year = (new Date).getFullYear()) ->first = new Date year, 10, 1day_of_week = first.getDay()22 + (11 - day_of_week) % 7
加
2023-03-12
14
使用数组来交换变量
问题
你想通过数组来交换变量。
解决方案
使用CoffeeScript的解构赋值语法:a = 1
b = 3[a, b] = [b, a]a
# => 3b
# => 1
讨论
解构赋值可以不依赖临时变量实现变量值的交换。
这种语法特别适合在遍历数组的时候只想迭代最短数组的情况:ray1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
ray2 = [ 5, 9, 14, 20 ]intersection = (a, b) ->[a, b] =
2023-03-12
33
基本的 HTTP 服务器
问题
你想在网络上创建一个HTTP服务器。在这个方法中,我们将逐步从最小的服务器成为一个功能键值存储。
解决方案
我们将使用node.js HTTP库并在Coffeescript中创建最简单的web服务器。
开始 'hi\n'
我们可以通过导入node.js HTTP模块开始。这会包含createServer,一个简单的请求处理程序返回HTTP服务器。我们可以使用该服务器监听TCP端口。http = require 'http'
server =