
目錄
1、應用場景:
2、實戰
1.環境搭建
2.代碼
3.運行結果
3、官方網站
4、總結:
關注我公眾號【香菜聊游戲】
序言:繼續接上篇的live template ,idea騷操作雖然好,但是使用范圍有限,只能是一段代碼,無法對一些重復的邏輯,重復的類進行處理,既然我們遇到了這個問題別人也會遇到,那有沒有現成的技術方案吶?of course !今天就介紹下偷懶大殺器——Freemaker,【FreeMarker 是一款 模板引擎:即一種基于模板和要改變的資料, 并用來生成輸出文本(HTML網頁,電子郵件,組態檔,源代碼等)的通用工具,它不是面向最終用戶的,而是一個Java類別庫,是一款程式員可以嵌入他們所開發產品的組件】,官方的解釋真的是高級,用一句話來說就是給程式員使用的,用來做內容生成的,
1、應用場景:
FreeMarker最初的設計,是被用來在MVC模式的Web開發框架中生成HTML頁面的,它沒有被系結到 Servlet或HTML或任意Web相關的東西上,它也可以用于非Web應用環境中,在我們的游戲專案中有一些快取類,和查詢資料庫的代碼是重復的機械性代碼,因此用來生成專案內的一些通用代碼結構,提高了生產效率,也減少了出錯的可能性,機智,
2、實戰
不管是Jsp 還是freemaker 都是內容替換,用公式來表達就是:模板 + 資料模型 = 輸出,

你要做的就是理解,然后記住那些該死的標簽,用完然后忘掉,重復,輪回,o(╯□╰)o,
1.環境搭建
創建maven 專案,或者直接下載 下面對應的包加入你的專案中,看你方便,建議使用maven,自動下載包,多happy,
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
2.代碼
模板檔案:
package ${packagePath};
public class ${className} {
public static void main(String[] args) {
System.out.println("${helloWorld}");
}
}
生成代碼
package org.pdool.d20201010;
import freemarker.template.Configuration;
import freemarker.template.Template;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
/**
* @author 香菜
*/
public class Aain {
private static final String TEMPLATE_PATH ="src/main/java/org/pdool/d20201010";
private static final String CLASS_PATH ="src/main/java/org/pdool/d20201010/gen/";
private static final String PACKAGE_PATH = "org.pdool.d20201010.gen";
public static void main(String[] args) throws Exception {
//1、 創建freeMarker配置實體
Configuration configuration = new Configuration();
String genClassName = "HelloFreeMaker";
// 2、 獲取模版路徑
configuration.setDirectoryForTemplateLoading(new File(TEMPLATE_PATH));
// 3、 準備資料,等會替換用內容,key為模板內變數
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("packagePath", PACKAGE_PATH);
dataMap.put("className", genClassName);
dataMap.put("helloWorld", "hello freeMaker,from 香菜");
// 4、 加載模版檔案
Template template = configuration.getTemplate("helloFreemaker.ftl");
// 5、將生成的內容
File docFile = new File(CLASS_PATH + genClassName + ".java");
Writer out = new BufferedWriter(new OutputStreamWriter(newFileOutputStream(docFile)));
// 6、輸出檔案
template.process(dataMap, out);
System.out.println(genClassName + ".java 檔案創建成功 !");
}
}
3.運行結果

3、官方網站
上面介紹了基本的使用,在你使用的程序中可能需要一些其他的標簽,可以查閱官方網站,
官方網站的鏈接:http://freemarker.foofun.cn/index.html,網站上有完整的介紹,今天主要還是介紹下怎么快速的入門,官方的網站上太全,等你遇到問題再去查也不著急,
4、總結:
關注我公眾號【香菜聊游戲】,專注游戲技術,還有原始碼可以領取哦,
不過是內容替換而已,相信會Java的同學基本一眼就能看明白,和Jsp 同理,跟著規則來,將生成的內容寫入到檔案,免去一些日常的代碼操作,
瘋狂提升開發效率,留點時間劃劃水,找朋友聊聊天,帶其他的同學飛,展示下你的技術,何樂而不為,
使用步驟:
第一步:創建一個Configuration物件,直接new一個物件,
第二步:設定模板檔案所在的路徑,
第三步:設定模板檔案使用的字符集,一般就是utf-8,
第四步:加載一個模板,創建一個模板物件,
第五步:創建一個模板使用的資料集,一般是Map,
第六步:創建一個Writer物件,一般創建一FileWriter物件,指定生成的檔案名,
第七步:呼叫模板物件的process方法輸出檔案,
第八步:關閉流,
寫文章不容易,求點贊轉發,關注我的公眾號【香菜聊游戲】,會有驚喜哦,點贊,轉發 三連,謝謝支持,
下一期寫下游戲內資源的管理,記得關注哦!

游戲任務系統太復雜,帶你一步一步實作
窺一斑而知全豹,幾分鐘帶你讀懂Java位元組碼,再也不怕了
浮點數的0不是0,懷疑人生了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/168829.html
標籤:其他
