Spring Boot是一種基于Spring Framework的快速開發應用框架。每個應用程序都具有固有的特定領域和特殊需求,通過Spring Boot輕松快速地創建Spring based應用程序,從而使開發人員能夠專注于編寫健壯,功能完善,生產就緒的應用程序。Vue.js 是一套用于構建用戶界面的 JavaScript 庫。Spring Boot與Vue.js的結合,可以實現靈活、高效的多終端應用開發。本文將主要介紹如何使用Spring Boot訪問Vue頁面的方法。
首先,需要在Vue中生成生產模式的靜態文件。
npm run build
這個命令會將Vue的代碼生成到dist目錄中,即一個生產環境使用的靜態HTML、CSS和JavaScript的構建版本。
接下來,在Spring Boot中構建靜態資源服務。這可以通過在Spring Boot的主類中添加注釋@EnableWebMvc和實現WebMvcConfigurer接口來實現。
@RestController @EnableWebMvc public class WebController implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations("classpath:/static/"); } }
在上面的代碼中,我們通過實現WebMvcConfigurer接口并重寫addResourceHandlers方法來為Spring Boot創建ResourceHandler。資源處理程序將資源請求重定向到classpath:/static/路徑,這是一個ClasspathResource,包含Vue.js生成的dist目錄下的靜態文件。使用注釋@EnableWebMvc啟用Spring MVC。
在運行Spring Boot應用程序時,Spring Boot將Vue中生成的靜態HTML、CSS和JavaScript文件放置在src/main/resources/static目錄中供服務使用。
最后,現在我們可以在Spring Boot應用程序中創建一個Controller來提供Vue靜態頁面的響應。Spring RestController是一種簡單有效的方式,可以在自己的方法上使用@RequestMapping注釋來直接提供URI路徑。使用Java 8函數式編程的另一個絕妙特性類型是Supplier。Supplier接口接受無參并返回一個結果。它與IoC容器的自動化依賴注入機制很好地交互,并提供了Spring Boot應用程序中非常整潔的響應代碼。
@RestController public class VueController { @RequestMapping("/") public Supplier>welcome() throws IOException { InputStream file = getClass().getClassLoader().getResourceAsStream("index.html"); BufferedReader reader = new BufferedReader(new InputStreamReader(file)); return () ->reader.lines(); } }
上面的代碼是一個使用Spring RestController的VueController類。為了避免重復讀取文件,我們聲明一個InputStream,并將getResourceAsStream()方法用于檢索靜態文件的內容。將其封裝在BufferedReader并返回響應流供讀取使用。Spring Boot中的Supplier回調返回一個流,并由Spring MVC自動釋放響應的連接。
用這種方式,Spring Boot將可以訪問Vue靜態頁面。更重要的是,在Spring Boot應用程序中提供Vue頁面,可以實現Spring Boot的好處和Vue的JavaScript庫優勢的結合,從而創造出極具革命性影響力的應用程序,甚至可以實現多終端響應編程。