Noze.io

Swift3 Swift4 Swift5 macOS iOS Linux Travis

"Das Haus das Verrückte macht."

注意 (2021-11-09): 不建议在生产环境中使用此项目,尽管它仍然是一个不错的演示。 此项目更现代且非常值得推荐的版本是 Macro.swift,它基于 SwiftNIO(而不是像 Noze.io 那样基于 GCD)。

Noze.io 是一项尝试,旨在将 Node.js 的理念移植到 Swift 中。 它使用 libdispatch 来实现事件驱动、非阻塞的 I/O。 Noze.io 构建于类型安全、支持背压的拉取流(使用 Swift 泛型),并以批处理方式操作项目。 与其仅仅操作字节,不如操作 Unicode 行、数据库记录或 HTML 响应等批次数据 - 你懂的。 高效:流式处理一切并进行批处理。

重点是保持 API 与 Node 相似。 这并非总是可能 - Swift 不是 JavaScript - 但已经非常接近了。 它自带常用功能,Noze.io 是自包含的,不需要任何额外的依赖项。 它包含诸如 cowsleftpadexpressredis 等模块。

Noze.io 可以在 Cocoa 环境以及 Linux 上运行。 请访问我们的 Start 页面以获取安装说明。

这是一个好主意吗?告诉我们。 不确定,但我们认为这可能是个好主意,因为:a) 虽然 Swift 看起来非常像 JavaScript,但它实际上是一种高性能的静态类型和 AOT 编译语言,b) 代码在 Swift 中通常看起来更好,主要是由于尾随闭包语法,c) 没有猴子补丁,同时仍然提供扩展。 也有缺点。

给我们展示一些代码!

这里有一个相当大的简单、专注的集合:Noze.io 示例。 但是,这是“标准”的 Node 示例,一个 HelloWorld httpd

import http

http.createServer { req, res in 
  res.writeHead(200, [ "Content-Type": "text/html" ])
  res.end("<h1>Hello World</h1>")
}
.listen(1337)

一个回声守护进程,只需将套接字的输入端管道连接到其自身的输出端

import net

net.createServer { sock in
  sock.write("Welcome to Noze.io!\r\n")
  sock | sock
}
.listen(1337)

更复杂的内容,包括一个 Todo-MVC 后端,可以在 Noze.io 示例中找到。 喜欢你所看到的? 请访问我们的 Start 页面开始使用。

联系方式

嘿,我们喜欢反馈。 加入邮件列表、Slack 频道,或者直接给我们发送电子邮件,告诉我们为什么这个项目很糟糕(或者不糟糕?)。

支持的 Swift 版本

操作系统 Swift Xcode Make SPM
macOS 3.0 Xcode 8 👍🏻 👍
macOS 3.1 Xcode 8.3 👍🏻 👍
tuxOS 3.0.2 👍🏻 👍
tuxOS 3.1 👍🏻 👍

随着 Swift 3 的发布,Noze.io 停止支持 Swift 2.x。 如果您仍然有兴趣在 2.x 中使用它,则最后一个版本仍然可以在 GitHub 上的 legacy/swift23 分支中找到。

状态

关于我们

Noze.io 由 The Always Right InstituteZeeZide 为您带来。 如果有更多人愿意加入这项工作,我们会非常高兴 :-)