前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vapor奇幻之旅(03上手)

Vapor奇幻之旅(03上手)

作者头像
Leacode
发布2018-08-22 14:14:25
8540
发布2018-08-22 14:14:25
举报
文章被收录于专栏:代码散人代码散人

Vapor奇幻之旅(02部署)一篇中,我介绍了如何在ubuntu上部署并运行vapor项目,这篇文章我来讲讲怎么样来上手开发Vapor项目。

作为一个服务端程序,可以做的事情包括:

  • 提供接口供客户端访问
  • 提供网页供浏览器访问
  • 处理前端的请求,包括处理业务和提供数据
  • 连接数据库对数据进行操作
  • 安全相关,如加密解密
  • websocket
  • 接入其他服务,如支付、推送等

服务器端App能够作为App的业务部分,可以将一些耗时耗cpu的运算任务交给服务器,也能给用户提供内容服务,一个好的服务器程序是App和网站稳定友好的重要一环。

Vapor采用模块化来组建web应用,利用Swift Package Manager来管理不同的组建,在Package.swift里可以添加需要的package来引入新的模块,一旦package被引入,这个package包含的所有模块都可以被使用。

当我们运行

代码语言:javascript
复制
vapor new HelloWorld
vapor xcode

会生成一个新的Vapor程序

我们用xcode打开来看看这个程序有哪些东西:

1、Package.swift

image.png

可以看到这里面加入了两个依赖,一个是Vapor, 这个是Vapor项目的核心模块,另一个是FluentProvider,这是提供数据模型和数据操作的模块。

Package: Vapor

首先我来介绍一下Vapor模块,前面说到了,一旦引入了package,这个package内包含的子模块都会被引入,Vapor包含若干个模块,只需要引入Vapor就可以构建一个基本的web应用了,作为核心的web框架,Vapor可以说几乎包含了web开发所需要的所有必要的模块。

下面介绍一下这个package包含的几个主要的模块:

  • Routing 顾名思义,这个模块是用来提供路由的,也就是提供接口访问的uri,接受用户的请求(get, post, put...),返回需要的结果。
  • JSON 提供服务端的JSON支持,包括生成、处理和解析json串。
  • Node 在web应用开发的过程中我们的model可能会应用到多种场景,包括生成json,映射数据库,或者用于view,这时候就需要一个抽象的中间层,这个角色就是node了,它会让数据在你的手中像指尖陀螺一样,唯一而又瞬息万变。
  • Core 用来处理各类任务的模块,包括后台线程任务,异步操作以及RFC1123时间格式。
  • Bits bytes处理,方便数据转换以及序列化。
  • Debugging 通过Debuggable协议,可以在控制台更好的打印错误。
  • Cache 提供内存级别的缓存,也可以通过引入Fluent Provider或RedisProvider来提供本地数据库级别的缓存。
Package: FluentProvider

这是一个管理数据库连接的库,相当于java的hybernate和mybatis,默认数据库是sqlite,现在可以支持Memory级别的数据库和MySQL,引入这个package则会默认依赖上一个SQLite的模块,如果想要支持更多的库则添加相应的provider就可以,下面是现有的provider:

Package: LeafProvider

可以通过web模版新建项目,会包含leaf,也可以独立加入Package.swift

Leaf是一个生成页面的框架,有点像jsp,可以把参数或者运算直接写到xxx.leaf文件里,如果有大量交互的页面这个是很有必要的。

Package: ValidationProvider

提供数据的校验,如用户名密码等。

2、目录结构

这是我的一个demo项目的目录结构

下面一一介绍这些文件的作用

  • Commands 提供命令行的命令,这个文件夹是我加上去的,默认并没有生成
  • Controllers 请求处理的地方
  • Models 放置数据库模型和业务模型
  • Routes 路由,设置和接收各类请求
  • Setup 初始化的内容,包括组装routes,初始化provider,初始化数据库等
  • Run 包含一个可执行的main.swift,里面包含启动vapor的代码
  • Config放各类配置文件

config文件夹

  • Public 各类公共资源,如css,js,图片等都放这里面
  • Resources 放置html或者.leaf资源

本篇总结

什么,就给我讲这个?朋友别急,更多的教程在后面会发出来。

本篇介绍了一个Vapor程序所包含的依赖以及目录结构,希望通过本篇的了解你能够对vapor项目有更清晰的理解,英文好的朋友可以移步 官方文档。

国际惯例,Demo请见HelloVapor

目前vapor还在2.0,3.0不久也会放出来,我也会更新相应的教程的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Package.swift
    • Package: Vapor
      • Package: FluentProvider
        • Package: LeafProvider
          • Package: ValidationProvider
          • 2、目录结构
          • 本篇总结
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档