您能使用Swift作为web编程语言吗?
从技术上讲,您能否将Swift用作构建网站/web应用程序的编程语言您能使用Swift作为web编程语言吗?,swift,Swift,从技术上讲,您能否将Swift用作构建网站/web应用程序的编程语言 更新:看起来很多人都在做这个 苹果的官方支持:当然是理论上的 任何可以输出纯文本的程序也可以用于CGI(公共网关接口),其中也包括Swift 因此,是的,您可以使用Swift进行web编程。但是,目前,没有其他库(如PHP或EJB/JSP中的库)可以使这个过程变得简单。看看一些流行的Swift web框架,例如。是的,您可以 Swift与ObjectiveC的功能相同,但更简单。因此,您可以使用一个非常简
更新:看起来很多人都在做这个
苹果的官方支持:当然是理论上的 任何可以输出纯文本的程序也可以用于CGI(公共网关接口),其中也包括Swift 因此,是的,您可以使用Swift进行web编程。但是,目前,没有其他库(如PHP或EJB/JSP中的库)可以使这个过程变得简单。看看一些流行的Swift web框架,例如。是的,您可以 Swift与ObjectiveC的功能相同,但更简单。因此,您可以使用一个非常简单的CGI接口(请参阅)在服务器端分析和回答客户机请求(GET和POST)
由于Swift在字符串操作方面很强大,因此它在抽象方面将介于ObjectiveC和PHP/Perl之间。出于许多目的,甚至不需要SQLite或MySQL前端。只需将您的数据放入服务器上的某个文本文件中。根据其他答案,您可以通过多种方式使用Apple Swift作为网站/应用程序实现的一部分 此外,其他公司也在开发Swift语言编译器,进一步扩展了功能。例如,在Elements编译器的下一个主要版本中,他们将引入一个名为“Silver”的新编译器前端,这是一个Swift编译器 作为已经支持ObjectPascal(Oxygene)和C#(Hydrogene)的现有编译器技术的前端,这意味着您将能够使用Swift语言开发.NET和Java应用程序(包括Android)。有了.NET支持,这显然意味着您可以使用Swift创建ASP.NET网站/应用程序 请注意,这是每个平台的本机编译器-不涉及源代码翻译/交叉编译或平台抽象或兼容性框架,例如Xamarin。RemObjects编译器生成特定于平台的本机代码(即.NET的MSIL、JVM的Java字节码等)。它还允许开发人员本机使用平台库。i、 e.在为Cocoa开发时,Cocoa类直接暴露在语言中,在为Java开发时,Java类也是如此 无论您使用的是ObjectPascal、C#还是Swift语言前端,都是如此(如果您愿意,您可以在项目中混合和匹配语言)
8.0版本已经测试了一段时间,因此现有的元素被许可方已经开始使用它了。:) Swift作为一种web编程语言非常完美。您可以编写类似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 />")
}
#/usr/bin/env xcrun swift
进口基金会
打印(“内容类型:文本/html”)
打印(“内容:”)
打印(“”)
打印(“1.进程.参数:
”)
对于进程中的s.arguments{
打印(s+“
”)
}
打印(
)
让env:Dictionary=NSProcessInfo().environment
如果let requestMethod=env[“请求方法”]{
打印(“2.请求方法为:\(请求方法)
”)
}
打印(“3.环境变量数:\(环境计数)
”)
打印(“4.列表环境:
”)
对于env.keys中的键{
打印(“\(键)=\(环境[键]!)
”)
}
苹果现在已经(12/03/15)开源库()允许在Linux服务器上编译。 不再确定这个主题有多活跃,但是如果有人在将来发现这个问题,我想在这里宣布我已经开始在SWIFT中编写FASCGI应用程序的框架。 当然,您可以使用任何Objective-C web框架(尽管很少),并且您当然可以使用Swift作为脚本语言来转储HTML字符串,以供CGI返回。然而,(我将在这里得到所有哲学)我认为,如果我敢使用这个术语,接受这样一种方法并不是很“迅速”。斯威夫特的设计师们费了很大的劲才确保它不仅仅是没有C限制的Obj-C(事实上,我几乎希望他们没有这么说,因为它经常被错误引用)。Swift也比Obj-C更接近于函数族(同时仍然保持坚实的面向对象并设法添加Python风格的脚本能力)。这打开了一个全新的设计选择的世界,我认为需要加以探索。还有,类型安全。。。但我离题了
总而言之,我自己创造了一个模块化的“微框架”,可以让你在一个非常高的水平上用Swift编写网络应用程序。在撰写本文时,我将其归类为功能性概念证明,但它仍然没有我所希望的那么抽象,并且缺少了一些实际使用所必需的关键特性。当然欢迎捐款。希望有人觉得这有帮助 在文章Cocoa with Love中,您可以找到HTTP服务器的一个示例。它是用Obj-C写的: 以下是我创建swift版本的尝试: 浏览网页,我发现了非常好的HTTP服务器的swift版本。值得一看:
是的,您可以在Swift中创建web应用程序。是允许您这样做的web框架之一。其源代码已打开。请看以下问题:。这个想法是相似的。另外,您还需要LLVM编译器(但是您可以