vapor-docs/3.0/docs/leaf/getting-started.md

88 lines
3.2 KiB
Markdown

!!! warning
Leaf 3.0 is still in beta. Some documentation may be missing or out of date.
# Leaf
Leaf is a templating language that integrates with Futures, Reactive Streams and Codable. This section outlines how to import the Leaf package into a Vapor project.
## Example Folder Structure
```
Hello
├── Package.resolved
├── Package.swift
├── Public
├── Resources
│   ├── Views
│   │   └── hello.leaf
├── Public
│   ├── images (images resources)
│   ├── styles (css resources)
├── Sources
│   ├── App
│   │   ├── boot.swift
│   │   ├── configure.swift
│   │   └── routes.swift
│   └── Run
│   └── main.swift
├── Tests
│   ├── AppTests
│   │   └── AppTests.swift
│   └── LinuxMain.swift
└── LICENSE
```
## Adding Leaf to your project
The easiest way to use Leaf with Vapor is to include the Leaf repository as a dependency in Package.swift:
```swift
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "project1",
dependencies: [
// 💧 A server-side Swift web framework.
.package(url: "https://github.com/vapor/vapor.git", .branch("beta")),
.package(url: "https://github.com/vapor/leaf.git", .branch("beta")),
],
targets: [
.target(
name: "App",
dependencies: ["Vapor", "Leaf"]
),
.target(name: "Run", dependencies: ["App"]),
.testTarget(name: "AppTests", dependencies: ["App"]),
]
)
```
The Leaf package adds Leaf to your project, but to configure it for use you must modify configure.swift:
1. Add `import Leaf` to the top of the file so that Leaf is available to use. You will also need to add this to any file that will render templates.
2. Add `try services.register(LeafProvider())` to the `configure()` function so that routes may render Leaf templates as needed.
## Syntax Highlighting
You may also wish to install one these third-party packages that provide support for syntax highlighting in Leaf templates.
### Atom
[language-leaf](https://atom.io/packages/language-leaf) by ButkiewiczP
### Xcode
It is not currently possible to implement Leaf Syntax Highlighting in Xcode, however, using Xcode's HTML Syntax Coloring can help a bit. Select one or more Leaf files and then choose Editor > Syntax Coloring > HTML. Your selected Leaf files will now use Xcode's HTML Syntax Coloring. Unfortunately the usefulness of this is limited because this association will be removed when `vapor xcode` is run.
There appears to be a way to [make Xcode file associations persist](http://stackoverflow.com/questions/9050035/how-to-make-xcode-recognize-a-custom-file-extension-as-objective-c-for-syntax-hi) but that requires a bit more kung-fu.
### VS Code
[html-leaf](https://marketplace.visualstudio.com/items?itemName=Francisco.html-leaf) by FranciscoAmado
### CLion & AppCode
Some preliminary work has been done to implement a Leaf Plugin for CLion & AppCode but lack of skill and interest in Java has slowed progress! If you have IntelliJ SDK experience and want to help with this, message Tom Holland on [Vapor Slack](http://vapor.team)