mirror of https://github.com/vapor/docs.git
88 lines
3.2 KiB
Markdown
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)
|