mauricemach/zappa · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
8888888888P d8888 8888888b. 8888888b. d8888 @@@ @@@
d88P d88888 888 Y88b 888 Y88b d88888 @@@@@@@@@@@@@@
d88P d88P888 888 888 888 888 d88P888 @@@@@@@@@@@@@@@@
d88P d88P 888 888 d88P 888 d88P d88P 888 @@@@@@@@ @@@@@@@@
d88P d88P 888 8888888P" 8888888P" d88P 888 @@@ @@@
d88P d88P 888 888 888 d88P 888 @@ @@@@@@@@ @@
d88P d8888888888 888 888 d8888888888 @@@@@@@@
d8888888888 d88P 888 888 888 d88P 888 @@@@@@
懒人 Node 开发
如果你能用 495 个字符描述它,为什么它需要 879 个字符?
Zappa 是一个针对 CoffeeScript 优化的 Express 和 Socket.IO 接口,它使得:
require('zappa') ->
Gizmo = require './model/gizmo'
@use 'bodyParser', 'methodOverride', @app.router, 'static'
@configure
development: => @use errorHandler: {dumpExceptions: on}
production: => @use 'errorHandler'
@get '/': -> @render 'index'
@get '/gizmos/:id': ->
Gizmo.findById @params.id, (err, gizmo) =>
@render index: {err, gizmo}
@on connection: ->
@emit welcome: {time: new Date()}
@on shout: ->
@broadcast shout: {@id, text: @data.text}
等价于:
express = require 'express'
app = express.createServer()
io = require('socket.io').listen(app)
Gizmo = require './model/gizmo'
app.use express.bodyParser()
app.use express.methodOverride()
app.use app.router
app.use express.static __dirname + '/public'
app.configure 'development', ->
app.use express.errorHandler dumpExceptions: on
app.configure 'production', ->
app.use express.errorHandler()
app.get '/', (req, res) -> res.render 'index'
app.get '/gizmos/:id', (req, res) ->
Gizmo.findById req.params.id, (err, gizmo) ->
res.render 'index', {err, gizmo}
io.sockets.on 'connection', (socket) ->
socket.emit 'welcome', time: new Date()
socket.on 'shout', (data) ->
socket.broadcast.emit 'shout',
id: socket.id, text: data.text
app.listen 3000
console.log "Express server listening on port %d in %s mode",
app.address().port, app.settings.env
并且在此过程中还加入了一些额外的功能:
require('zappa') ->
@enable 'default layout', 'serve jquery',
'serve sammy', 'minify'
@get '/': ->
@render 'index'
@on connection: ->
@emit welcome: {result: sum 1, 2}
@shared '/shared.js': ->
root = window ? global
root.sum = (x, y) -> x + y
@client '/index.js': ->
@connect()
@get '#/route': ->
$('body').append 'client routes!'
@on welcome: ->
$('body').append "welcomed: #{sum @data.result, 2}"
@view index: ->
@title = 'PicoChat!'
@scripts = ['/socket.io/socket.io', '/zappa/jquery',
'/zappa/sammy', '/zappa/zappa', '/shared', '/index']
h1 @title
了解更多
其他资源
-
位于 github 的源码 仓库
-
有问题或建议?请在 邮件列表 上联系我们
-
更喜欢实时交流?加入 freenode 上的 IRC 频道:[#zappajs]((irc://irc.freenode.net/zappajs)
-
发现 bug?在 github 上提交一个 issue
-
在 变更日志 中查看项目历史
-
从早期版本迁移?阅读公告(0.2.x/0.3.x)以了解变更概览,并遵循 TL;DR 迁移指南(0.2.x/0.3.x)
-
部署到 heroku?查看 这篇博客文章
致谢
感谢所有为让这个小项目成为可能而贡献了优秀库的人们,特别是:
-
Jeremy Ashkenas 为 CoffeeScript,这门“小”语言对我来说毫不逊色于革命性。
-
TJ Holowaychuk 为 Express,这个稳健且灵活的基石。
-
Guillermo Rauch 为(在我看来)彻底解决了 comet 问题。
-
Ryan Dahl 为 Node.js,没有它这一切都不可能。
另外:
-
Blake Mizerany 为 Sinatra,这个框架让我重新定义了“简单”。
-
why the lucky stiff,让我重新定义了“黑客”。
-
最后但同样重要的是 Frank Zappa,他的不循规蹈矩和实验精神激励着我不断前进。更不用说他还提供了背景音乐。
“仅仅因为几百万人认为你是错的,你就一定得错吗?” - FZ