你可以使用Swift作为Web编程语言吗?

你能技术上使用Swift作为编程语言来构build一个网站/ Web应用程序吗?


更新:看起来像很多人正在这个工作。

  • https://github.com/PerfectlySoft/Perfect
  • https://github.com/glock45/swifter
  • https://github.com/grzegorzleszek/HTTPSwiftServer
  • https://github.com/izqui/Taylor
  • https://github.com/crossroadlabs/express
  • https://github.com/IBM-Swift/Kitura
  • https://github.com/vapor/vapor

苹果官方支持: https : //swift.org/server-apis/

理论上,任何可以输出纯文本的程序都可以用于包括Swift的CGI(通用网关接口)。 所以,是的,你可以用它来进行networking编程。 但是在PHP或EJB / JSP中没有额外的工具可以让你更容易。 也许你可以自己开始做这些设施,并成为第一个这样做。

不知道这个主题是多么的活跃,但是如果将来有人发现这个话题,我想在这里宣布我已经开始编写一个在Swift中编写FastCGI应用程序的框架。

当然,您可以使用任何Objective-C Web框架(尽pipe数量不多),并且您当然可以使用Swift作为脚本语言来转储出CGI反刍的HTMLstring。 但是,(我将在这里得到所有的哲学)我认为,如果我敢于使用这个术语,那么解决这个问题的方法不是很“快速”。 Swiftdevise人员经历了很多麻烦,以确保它不仅仅是“仅仅”Obj-C,而且没有C的约束(事实上,我几乎希望他们没有说过,因为它经常被错误地引用)。 Swift也比Obj-C更接近function族(虽然仍然保留坚实的面向对象,并且pipe理添加Pythontypes的可脚本化)。 这打开了一个全新的deviseselect的世界,我认为需要探索。 此外,键入安全…但我离题了…

所有这一切,我已经自己创build了一个模块化的“微框架”,可以让你在Swift中编写Web应用程序。 在写这篇文章的时候,我将它归类为一个概念的function性certificate,但是它仍然不像我想的那样抽象,并且缺less一些对于现实世界的使用而言必要的关键特征。 贡献当然是受欢迎的。 希望有人认为这有帮助。 https://github.com/ianthetechie/SwiftCGI

Swift作为一种networking编程语言是完美的。 您可以像脚本一样执行python(用于快速开发或简单任务),然后使用XCode编译相同的代码(为了提高速度):

将以下脚本复制到Mac上的/ Library / WebServer / CGI-Executables / TestCGI(安装了Xcode 6.x的OSX Mavericks或Yosemite)。 使用chmod +x TestCGI使其可执行。 用httpd启动调用http://localhost/cgi-bin/TestCGI 。 你会得到呼叫参数回显…

 #!/usr/bin/env xcrun swift import Foundation print("Content-Type: text/html") print("Content:") print("") print("1. Process.argument(s):<br />") for s in Process.arguments { print(s + "<br />") } print("<br />") let env: Dictionary = NSProcessInfo().environment if let requestMethod = env["REQUEST_METHOD"] { print("2. Request method is: \(requestMethod)<br /><br />") } print("3. Number of environment variables: \(env.count)<br /><br />") print("4. List environment:<br />") for key in env.keys { print("\(key) == \(env[key]!)<br />") } 

苹果现在(12/03/15)开放了基础库( https://github.com/apple/swift-corelibs-foundation )以允许在Linux服务器上进行编译。

是的,您可以在Swift中创buildWeb应用程序。 裁缝是允许你这样做的网页框架之一。 它的源代码在Github上 。

是的你可以。

Swift和ObjectiveC一样,但是更容易一些。 因此,您可以使用一个非常简单的CGI接口(请参阅http://www.sveinbjorn.org/objectivecgi )来分析和回答服务器端的客户端请求(GET和POST)。

由于Swift在string操作方面很强大,因此在抽象方面,它将介于ObjectiveC和PHP / Perl之间。 对于很多目的,甚至不需要SQLite或MySQL前端。 只需将您的数据放入服务器上的某个文本文件即可。

根据其他答案,您可以以任何方式使用Apple Swift作为网站/应用程序实现的一部分。

另外,其他公司也在开发Swift语言编译器,这些语言编译器进一步扩展了function。 例如, RemObjects最近宣布 ,在他们的Elements编译器的下一个主要版本中,他们将引入一个名为“Silver”的新编译器前端,这是一个Swift编译器。

作为已经支持ObjectPascal(Oxygene)和C#(Hydrogene)的现有编译器技术的前端,这意味着您将能够使用Swift语言开发.NET和Java应用程序(包括Android)。 .NET支持,这显然意味着你可以使用Swift来创build一个ASP.NET网站/应用程序。

请注意,这是针对每个平台的本机编译器 – 没有源代码翻译/交叉编译或平台抽象或兼容性框架,例如Xamarin。 RemObjects编译器生成特定于平台的本地代码(例如.NET的MSIL,JVM的Java字节码等)。 它还允许开发人员本地使用平台库。 即为Cocoa开发时,Cocoa类直接暴露在语言中,Java开发Java类,.NET .NET .NET等等。

无论您是使用ObjectPascal,C#还是Swift语言前端(如果您愿意,可以在项目中混合搭配语言),都是如此。

8.0版本已经在beta版本已经有一段时间了,现在的元素被许可人已经在玩它了。 🙂

在Cocoa with Love这篇文章中,你可以find一个HTTP服务器的例子。 它是用Obj-C编写的: http : //www.cocoawithlove.com/2009/07/simple-extensible-http-server-in-cocoa.html

这里是我尝试创build一个快速版本: https : //github.com/grzegorzleszek/HTTPSwiftServer

浏览网页,我发现非常好的HTTP服务器的迅捷版本。 值得看看: https : //github.com/glock45/swifter