Swift3.0服务端开发(三) Mustache页面模板与日志记录
本篇博客主要介绍如果在Perfect工程中引入和使用Mustache页面模板与日志记录系统。Mustache页面模板类似于PHP中的smarty模板引擎或者Java中的JSTL标签。当然Mustache页面模板的功能要弱的多。Mustache页面模板的主要功能是将html页面中的标签变量(比如“{{name}}”)进行替换,要想引入Mustache页面模板相关的库,只需要在Package.swift文件中添加相应的库的连接地址然后再编译连接即可。本篇博客还会介绍如果将日志记录到相应的日志文件,在开发中日志是不可或缺的,所以日志系统的引入与配置也是必不可少的。
下方会对Mustache页面模板与日志系统的配置进行介绍。
一、Mustache页面模板
1.Mustache页面模板的引入
Mustache对应的模板地址包如下:
.Package(
url: "https://github.com/PerfectlySoft/Perfect-Mustache.git",
majorVersion: 2, minor: 0
)
我们需要在Package.swift文件中进行依赖包的配置,如下所示。引入包后,使用命令行进行编译:"swift build"即可。如果你的项目是使用Xcode进行编译的话,还需要重新执行“swift package generate-xcodeproj”命令再次生成xcodeproj文件即可。
2.Mustache页面模板的使用
首先我们在相应的静态页面中添加上相应的标签,我们还是以上篇博客中使用到的index.html为例,在该html页面中,添加上相应的标签,该标签会被替换成相应的内容。下方的标签为{{title}}。
处理完静态页面,然后我们该处理服务端的代码了。下方代码是从Prefect的官方文档上摘下来的,不过改了一下Value的key。所有处理Mustache页面模板的句柄都需要继承自MustachePageHandler,在extendValuesForResponse()方法中进行模板变量的处理,如下所示:
下方是对index.html进行重定向,将index.html交给上述的处理句柄进行处理。
上述实例的运行结果如下,{{title}}被换成了Swift用户,如下所示:
二、日志系统的配置与使用
日志系统在服务端开发中是不可或缺的,接下来我们要做的事情是讲每次请求或者相应的内容写入到日志文件中,当然平时调试打印的一些信息也可以输出到日志文件中。接下来,我们就要来介绍一下Perfect框架中日志系统的引入和使用方式。
1.引入日志相关包
要做到上述的功能,我们需要引入下方的两个依赖包。引入包后与上述页面模板的做法一致,还是需要重新使用命令行编译和运行工程的,当然要重新生成xcodeproj文件。在此就不做过多赘述了。
//Request请求日志过滤器
.Package(url: "https://github.com/dabfleming/Perfect-RequestLogger.git",
majorVersion: 0),
//将日志写入指定文件
.Package(url: "https://github.com/PerfectlySoft/Perfect-Logger.git",
majorVersion: 0, minor: 0),
2.将日志写入文件
接下来我们就可以调用日志系统将日志写入指定的文件了,首先我们需要检查存储日志文件的目录是否存在,如果不存在就创建。创建完毕后,将该目录赋值给日志系统的文件目录即可,如下第一个框中的内容。然后添加请求和相应的日志过滤器。最下方的框是LogFile的几个方法的使用,这些信息都会被存储到相应的文件。
进行上述配置后,我们还需要将RequestLogger()中的日志输出形式切换成LogFile的形式,如下所示:
配置完毕后,我们就可以使用日志系统进行日志输出了,最终结果如下所示:
今天的博客就先到这而把,下篇博客会介绍MySql的连接与相关操作。
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 19.2px "Myriad Pro"; color: #4d4d4d; background-color: #ffffff }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff }
span.s1 { color: #de38a5 }
span.s2 { }
Swift3.0服务端开发(三) Mustache页面模板与日志记录的更多相关文章
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)
前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...
- Swift3.0服务端开发(二) 静态文件添加、路由配置以及表单提交
今天博客中就来聊一下Perfect框架的静态文件的添加与访问,路由的配置以及表单的提交.虽然官网上有聊静态文件的访问的部分,但是在使用Perfect框架来访问静态文件时还是有些点需要注意的,这些关键点 ...
- Swift3.0服务端开发(四) MySQL数据库的连接与操作
本篇博客我们来聊聊MySQL数据库的连接与操作.如果你本地没有MySQL数据库的话,需要你先安装MySQL数据库.在Mac OS中使用brew包管理器进行MySQL的安装是及其方便的.安装MySQL的 ...
- kafka客户端和服务端开发(三)
前面我们已经搭建了kafka的单机和集群环境,分别写了简单的实例代码,对于代码里面使用到的参数并没有做解释.下面我们来详细说一下各个参数的作用. 1. 创建kafka生产者 kafka生产者有3个必选 ...
- 微服务项目开发学成在线_day01_CMS服务端开发
05-CMS需求分析-什么是CMS 什么是CMS?CMS (Content Management System)即内容管理系统,不同的项目对CMS的定位不同.CMS有哪些类型? 每个公司对每个项目的C ...
- Day01_搭建环境&CMS服务端开发
学成在线 第1天 讲义-项目概述 CMS接口开发 1 项目的功能构架 1.1 项目背景 受互联网+概念的催化,当今中国在线教育市场的发展可谓是百花齐放.如火如荼. 按照市场领域细分为:学前教育.K12 ...
- 俯瞰 Java 服务端开发
原文首发于 github ,欢迎 star . Java 服务端开发是一个非常宽广的领域,要概括其全貌,即使是几本书也讲不完,该文将会提到许多的技术及工具,但不会深入去讲解,旨在以一个俯瞰的视角去探寻 ...
- 在线教学、视频会议 Webus Fox(2) 服务端开发手册
上次在<在线教学.视频会议软件 Webus Fox(1)文本.语音.视频聊天及电子白板基本用法>里介绍了软件的基本用法.本文主要介绍服务器端如何配置.开发. 1. 配置 1.1 IIS配置 ...
随机推荐
- [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)
原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下 ...
- CSS中选择器优先级顺序实战讲解
原文:CSS中选择器优先级顺序实战讲解 我们有些程序猿在给一个元素(比如div)应用样式的时候,会有一些疑问,为什么我写在后面的样式不能覆盖前面的样式呢,不是说CSS是层叠样式表吗? 如果你在开发中也 ...
- ASP.NET MVC创建的网站
ASP.NET MVC创建的网站 最近在写一个网站,昨天刚写完,由于要和朋友一起测试,但是他电脑上没有环境,所以希望我在自己电脑上部署一下,让他直接通过浏览器来访问来测试,所以从昨晚到今天上午,通 ...
- WebApp 框架
Razor 在WebApp 框架的运用 前面有两章介绍了WebApp框架<WebApp MVC,“不一样”的轻量级互联网应用程序开发框架>和<WebApp MVC 框架的开发细节 ...
- linux有用技巧:使用快照制作虚拟机
在日常的学习其中,假设遇到了集群和负载均衡类的实验,须要用到大量的虚拟机,假设一个一个的去创建,显然是很费力和低效的.所以今天交给大家怎样用快照来制作虚拟机.想要多少给你多少^_^.仅仅要内存够用! ...
- PHP 9: 表达式
原文:PHP 9: 表达式 本章介绍PHP的表达式.PHP的表达式其实和其他语言没有什么区别.普通的赋值是表达式,函数也是表达式,通过函数赋值也是.三元条件运算符也是,即: $first ? $sec ...
- [译]在运行时内存中的Java对象是怎么样的
(文章翻译自What do Java objects look like in memory during run-time?) 我们知道函数在内存中是作为一个活动记录栈来实现的.而且我们知道Java ...
- The Native POSIX Thread Library for Linux - 设计文档
nptl-design
- js 实现复制粘贴文本过滤(保留文字和图片)
实现复制粘贴文本过滤(保留文字和图片) demo如下: <head> <meta http-equiv="Content-Type" content=" ...
- const 还是 static readonly
到底是 const 还是 static readonly 真的一样? const 和 static readonly 常在程序中用来声明常量,调用方法也没有什么不同,他们真的一样吗?我们可以做个试 ...