VIPER的模块模板:尽量减少忙乱的方法

简介

自从我开始研究iOS已有5年了。 这些年来,我观察到您周围的一切都会随着时间而变化,无论是编程指南,开发语言还是客户(针对敏捷开发过程)给出的初始要求范围。 但是,一件事永远不会改变…… DEADLINE 。 这个词根据情况可能会致命。

如果软件开发有自己的词典,那么DEADLINE一词将始终与之抗争……

当您在进行可伸缩项目时,通常会使用快捷方式来减少工作量。 其中一些快捷方式只是一段代码 ,可以在网上找到“第三方库”。 另一方面,某些方法只是通过将开发过程中涉及的其他过程最小化/汇总来加速整个开发过程。

VIPER一起使用,因为您的解决方案体系结构使您熟悉失去分配的每一分钟的痛苦。 在这种情况下,您应该有一些技巧来加快开发过程(如果使用VIPER,与MVC😓相比,您已经在编写3倍的代码了)。

正如我在上一个博客中所承诺的那样,今天我将说明如何为VIPER Project创建模块模板。

入门…

我们需要开发的模块模板将具有与Xcode相同的创建新文件的过程。 为此,您需要转到位置

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/developer/Library/Xcode/Templates/File\ Templates/Source/

在此位置,您可以找到许多扩展名为.xctemplate文件夹。

复制文件夹Cocoa Touch Class.xctemplate并将其粘贴到您的桌面,然后再开始浏览其内容,因为您不想弄乱Cocoa Touch默认文件模板。

现在,在Cocoa Touch Class.xctemplate (在桌面上)中,删除除TemplateIcon.pngTemplateIcon Cocoa Touch Class.xctemplateTemplateInfo.plist之外的所有内容。

现在打开TemplateInfo.plist 。 这是目前对您最重要的文件,因为它将包含许多不同的配置。 在文件中,您可以看到许多键值对集。 但是所有这些都没有必要进行讨论。 让我们逐一地介绍一个人的必要条件。

一种。 描述 (类型:字符串)-描述是指您正在制作的模板的目标/最终输出。 选择您想要描述此模板将执行的操作的任何单词。

b。 摘要 (类型:字符串)-与描述相同。

C。 MainTemplateFile (类型:字符串)-用于命名模块文件。 由于VIPER模块中的所有文件均以模块名称作为其前缀,例如LoginView.swift,LoginPresenter.swift等。这将作为一种变量类型,其值为模块名称。 由于此密钥不存在于plist文件中,因此您需要使用___FILEBASENAME___值添加它。

d。 选项 (类型:数组)-这些是在创建文件/模块时想要的一组选项/输入。 为了创建模块,我们只需要模块名称,因此我们将在同一模块下创建一个项目(类型Dictionary),该项目由以下几组键值对组成:

  • Description (类型:字符串)-指的是对此项目所需输入的简短描述。
  • 标识符 (类型:字符串)-它是一个变量,用于保存要创建的VIPER模块的名称。 这将有助于将其与“选项”中的其他项目区分开。
  • 名称 (类型:字符串)-引用字段标签。
  • 必需 (类型:字符串)-指我们通过该项所需要的输入是必需的还是可选的。
  • 类型 (类型:字符串)-指为其创建项目的输入的数据类型。
  • NotPersisted (Type:Boolean)-表示字段中值的持久性。

与此项目一起,我们将需要另一个项目来重新构建我们的模块文件内容。 我们正在制作的模板将包含具有通用文件名的模块文件。 当我们生成模块时,该项目将根据模块名称重命名文件内容。 该项目将包含以下几组键值对:

  • 默认值 (类型:字符串)-用于重命名文件内容的变量。 换句话说,该项目的默认值。 使用___VARIABLE_viperModuleName___作为其值。
  • 标识符 (类型:字符串)-同样是用于标识商品唯一性的值
  • 类型 (类型:字符串)-由于该项用于配置文件内容并且不接受任何输入,因此其类型将是静态的。

至此,我们的.plist配置结束了……

要完全完成它,只需将Cocoa Touch Class.xctemplate重命名为Module VIPER.xctemplate

模块文件配置。

配置TemplateInfo.plist文件后,这就是您的文件夹包含的内容

现在,我们需要模块模板文件。

模块模板文件将包含一些用于基本模块配置的代码。 但是除此之外,我们要关心的是使所有这些文件对于所有模块都是通用的。 它将需要使用我们之前使用的一些TemplateInfo.plist键值对。

现在,为了简化操作,您可以从此处下载尚未配置的模块文件。 这些文件只是将转换为通用模块的测试模块的文件。 请下载这些文件并将其粘贴到文件夹Module VIPER.xctemplate

选择任何您想要的文件。 例如,我使用TestWireframe.swift 。 现在打开相同的。 在最顶部,您经常会看到如下图所示的信息。

这些是文件头,旨在提供基本信息,例如FileName,ProjectName,Author,CreatedDate,CopyrightInfo等。我们将首先处理这些信息以使其通用。 将以下每个给定的单词替换为相应的单词:

  • TestWireframe.swift: ___FILENAME___
  • ViperSampleApp: ___PROJECTNAME___
  • Manish Kumar: ___FULLUSERNAME___
  • 18/08/01: ___DATE___
  • 2018年: ___YEAR___
  • Manish Kumar: ___ORGANIZATIONNAME___

现在,我们将致力于使代码通用。 但是,当我说这话时,我的意思不是任何复杂的工作。 只需一点查找和替换即可在Xcode😉中工作。

现在,由于我们只需要特定于文件模块,因此只需在class TestWireframe找到单词“ Test”(以及在类名称本身中找到单词Test)。 用___VARIABLE_viperModuleName___替换单词。 如果您还记得的话,我们将其保留为重命名文件内容的默认值。 并完成相同的工作,我们准备好通用文件内容。

您必须对每个文件遵循相同的过程。 转换Module VIPER.xctemplate所有文件后,只需复制Module VIPER.xctemplate文件夹,并将其粘贴到复制Cocoa Touch Class.xctemplate

只需退出Xcode(如果已打开),然后使用任何现有的VIPER项目启动它。 尝试添加一个新文件,您会看到创建Module VIPER的选项。

这样,我就休息了。

您可以在以下Github存储库中找到模块模板:https://github.com/manish-1612/Viper_Module_Template。

即将来临

在下一个博客中,我将写一个博客,介绍如何创建自己的项目模板(具有5个内置模块,如Login,Dashboard,Settings,SideMenu,Logout)。

如果您喜欢该博客,请别忘了鼓掌。 😊😊😊😊😊