SwiftWasm으로 시작된 웹 애플리케이션 개발
12153 단어 SwiftWebWebAssemblyswiftwasmtech
SwiftWasm 소개
WebAssembly는 현대 웹 브라우저에서 현지인에게 접근하는 공연을 실행할 수 있는 조합식 언어이다.(생략) C/C++ 또는 Rust 등의 언어를 컴파일하는 객체로 네트워크에서 이러한 언어를 실행할 수 있습니다.
SwiftWasm은 Swift의 WebAssiembly 지원을 추진하는 프로젝트다.
WebAssembly를 컴파일하여 브라우저에서 Swift를 실행할 수 있습니다.
간단한 앱을 만들어 보도록 하겠습니다.
0. SwiftWasm 설치
SwiftWasm 응용 프로그램을 구축할 때 carton 이 도구를 사용합니다.먼저 캐튼을 설치합니다.
$ brew install swiftwasm/tap/carton
Linux 환경의 경우 현재 상황에서 자체적으로 구축해야 하기 때문에 README.힘내세요.1. 프로젝트 만들기
그럼 우리 프로젝트를 합시다.
프로젝트 디렉터리를 만들고
carton init
명령을 실행합니다.--template tokamak
는 앞으로 사용될 Tokamak이라는 UI 프레임워크 생성 프로젝트를 위한 옵션이다.$ mkdir SampleApp
$ cd SampleApp
$ carton init --template tokamak
프로젝트 구성은 다음과 같다.SwiftPM 패키지와 동일합니다.$ tree
.
├── Package.swift
├── README.md
├── Sources
│ └── SampleApp
│ └── main.swift
└── Tests
├── LinuxMain.swift
└── SampleAppTests
├── SampleAppTests.swift
└── XCTestManifests.swift
main.swift
의 내용은 SwiftUI와 유사한 코드입니다.import TokamakShim
struct TokamakApp: App {
var body: some Scene {
WindowGroup("Tokamak App") {
ContentView()
}
}
}
struct ContentView: View {
var body: some View {
Text("Hello, world!")
}
}
TokamakApp.main()
2. 시운전
우리는 방금 프로젝트를 하나 했으니, 우리 빨리 행동합시다.프로젝트 디렉터리에서 명령을 실행하면 프로그램을 실행할 수 있습니다.방문http://127.0.0.1:8080 후 실제 동작의 상황을 확인할 수 있습니다.
처음 실행할 때 공구체인을 설치하기 때문에 2~3분 정도 걸릴 수 있으니 주의하세요.
$ carton dev
...
[ NOTICE ] Server starting on http://127.0.0.1:8080
올바른 동작이 표시될 때 이 표시가 나타납니다.참 쉽네.3. ToDo 어플리케이션 사용 시도
이러면 너무 쉬워요. ToDo 앱을 다시 태어나게 하세요.
프로젝트 작성 시 지정된Tokamak은 SwiftUI와 호환되는 UI 프로그램 라이브러리로 개발된 것으로 SwiftUI의 쓰기 스타일과 기본적으로 같아 프로그램을 조립할 수 있다.
기분 좋아졌네.
import TokamakShim
struct TokamakApp: App {
var body: some Scene {
WindowGroup("Tokamak App") {
ContentView()
}
}
}
struct Item {
var isCompleted: Bool = false
var text: String
}
struct ContentView: View {
@State var newItem = ""
@State var items = [Item]()
func addNewItem() {
items.append(Item(text: newItem))
newItem = ""
}
var body: some View {
VStack(alignment: .leading) {
HStack {
Button("+", action: addNewItem)
TextField("New todo item", text: $newItem, onCommit: addNewItem)
}
List {
ForEach(0..<items.count, id: \.self) { i in
Toggle(
items[i].text,
isOn: Binding(get: { items[i].isCompleted }, set: { items[i].isCompleted = $0 })
)
}
}
}
}
}
TokamakApp.main()
총결산
이 글은 아래 창고의 README입니다.단지 일본어로 MD에 적힌 내용을 소개했을 뿐인데 프로젝트에 조금이라도 관심이 있다면 기쁘겠습니다.
Reference
이 문제에 관하여(SwiftWasm으로 시작된 웹 애플리케이션 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/katei/articles/swiftwasm-web-tutorial텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)