摘要:本項目將使用配合最簡單的邏輯來展示一個基于的微服務全棧快速開發實踐的。提供一系列大型項目常用的非功能性特征,比如內嵌服務器,安全,指標,健康檢測,外部化配置。
SprintBoot-Vue
SpringBoot + 前端MVVM 基于Java的微服務全棧快速開發實踐
背景如今Web開發領域,當有人提到Java時,總會讓人覺得臃腫、古老而過時且開發效率沒有某些動態語言高效,甚至在此之前還有人高喊“Java 已死!”,但是事實真是如此嗎?其實如果你一直關注著Java,那你的感悟會更深,盡管它有很多的缺點和啰嗦,但不可否認,Java依然是工業界中最優秀的語言,而且它一直保持著與時俱進。本項目將使用SpringBoot + Vue2 + Webpack2 配合最簡單CRUD的邏輯來展示一個基于Java的微服務全棧快速開發實踐的Demo。
在某些時候,其開發效率已經并不比某些動態語言低。
為什么是SpringBoot首先先來簡單的介紹一下Spring,它是目前Java生態中最廣為人知、流行的企業級Web框架。不像其他一些框架僅聚焦在某個領域,Spring框架通過其容器化組件式管理及開發,可提供或定制各式各樣的功能來滿足企業化需求。
那么相較于Spring,Spring Boot的目標是更加容易的創建Spring應用、建立自動化、最少人為干預的生產級配置,真正意義做到開箱即用,并且對于新用戶及Spring平臺的用戶極易上手,快速開發。
下圖主要展示了Spring Boot在Spring龐大的生態圈中的層級關系
SpringBoot的目標主要:
為所有Spring開發提供一個從根本上更快,且隨處可得的入門體驗。
開箱即用,但通過不采用默認設置可以快速擺脫這種方式。
提供一系列大型項目常用的非功能性特征,比如:內嵌服務器,安全,指標,健康檢測,外部化配置。
絕對沒有代碼生成,也不需要XML配置。
下面展示的是本項目的SpringBoot相關代碼片段,你覺得簡單么?
@RestController @RequestMapping("/api/persons") public class MainController { @RequestMapping( value = "/detail/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE ) public ResponseEntity為什么是MVVMgetUserDetail(@PathVariable Long id) { /* * @api {GET} /api/persons/detail/:id details info * @apiName GetPersonDetails * @apiGroup Info Manage * @apiVersion 1.0.0 * * @apiExample {httpie} Example usage: * * http GET http://127.0.0.1:8000/api/persons/detail/1 * * @apiSuccess {String} email * @apiSuccess {String} id * @apiSuccess {String} phone * @apiSuccess {String} sex * @apiSuccess {String} username * @apiSuccess {String} zone */ Persons user = personsRepository.findById(id); return new ResponseEntity<>(user, HttpStatus.OK); } }
那么在我繼續之前,我也想和大家回顧一下Web開發的發展簡史:
第一階段: 網頁三劍客,生猛的通過原生javascript直接操作Dom樹;
第二階段: JQuery誕生,配合前端MVC為代表的Backbone.js, 讓我們可以優雅而簡單的操作Dom樹;
第三階段: 后端架構升級為MVC,前后端分工更清晰,前端工程化、ECMAScript規范開始嶄露頭角;
第四階段: 后端架構進入了微服務時代,前端架構不僅升級為MVVM,ES6更是成為目前事實上的標準;
在這里,我不想過于神化MVVM有多么的先進,JQuery為代表的MVC有多么的落后,但確實MVVM有著很多先進的特性:
低開銷
易維護
可重用
為什么選擇Vue.jsVue.js是MVVM設計模式中目前最火熱的一個前端框架之一,除了性能表現優異之外,與類似React相比,更輕量級、更容易上手。
通過Vue中的“單文件組件”特性,更靈活的定義組件,不僅使代碼結構更清晰,而且能與任何其他組件進行隨意組合,更具復用性。
Webpack是什么Webpack提供了一整套前端工程自動化的解決方案
Demo一個簡單的“上海人員信息查詢系統”作為例子
具備的功能(v0.1)
Spring Boot (后端)
通過在Spring Boot中建立基于RestFul-API并使用@ RequestMapping實現一個基本的CRUD邏輯
處理CORS(跨域資源共享)
在Spring Boot中進行單元測試
支持熱加載
增加api接口文檔
通過SpringBoot配合JPA來實現RestFul-API的分頁
VueJS & webpack (前端)
遵循ECMAScript 6 規范
如何在vue中使用‘單文件組件’進行開發編碼
演示‘非父子組件’如何進行簡單的通信以及‘父子組件’之間如何傳遞數據
如何和后端進行數據交互
如何在vue中優雅的引入第三方JS庫
格式化時間
分頁實現
可復用組件
DbHeader.vue
DbFooter.vue (sticky footer)
DbFilterinput.vue
DbModal.vue
DbSidebar.vue
DbTable.vue
得益于類似vue、react等MVVM模式,本項目的任何組件,只要您覺得合適,都可以復用在您的任何項目中,避免重復造輪子。
如何通過webpack2配置來自動化構建前端環境(包括如何配置vue2、處理靜態文件,構建不同環境等等)
本項目主要技術棧Java 1.7
Spring Boot 1.5.x
Maven
sqlite (not recommend, only convenience example)
vueJS 2.x
webpack 2.x
element ui
axios
準備工作安裝JDK1.7或更新的版本
安裝Node.js/NPM
克隆倉庫
git clone https://github.com/boylegu/Sp...
cd springboot_vue
安裝
編譯前端開發環境
cd springboot_vue/frontend
npm install
使用
運行Spring Boot后端服務
cd springboot_vue/target/
java -jar springboot_vue-0.0.1-SNAPSHOT.jar
運行前端服務
cd springboot_vue/frontend
npm run dev
未來計劃你也可以在生產環境中運行cd springboot_vue/frontend;npm run build進行編譯并配合Nginx
本項目可以作為工作參考、學習或者教學演示,之后將陸續以版本的形式,即每個版本都會新增不同的功能演示項,不定期進行發布更新,有以下功能已經在計劃之中:
用戶認證
引入更高級的vuex組件通信機制
演示vue-route的使用
加入docker部署環境
新增針對yarn的支持
... ...
. ____ _ / / ___"_ __ _ _(_)_ __ __ _ ( ( )\___ | "_ | "_| | "_ / _` | / ___)| |_)| | | | | || (_| | " |____| .__|_| |_|_| |_\__, | ===========|_|==============|___/== ? - ▌ SpringBoot-vue ? - ▌ (o) ? /- ▌ Go Go Go ! ? / =================================== ? ██
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87134.html
摘要:本項目將使用配合最簡單的邏輯來展示一個基于的微服務全棧快速開發實踐的。提供一系列大型項目常用的非功能性特征,比如內嵌服務器,安全,指標,健康檢測,外部化配置。 SprintBoot-Vue SpringBoot + 前端MVVM 基于Java的微服務全棧快速開發實踐 showImg(https://segmentfault.com/img/remote/1460000010167913...
摘要:異步最佳實踐避免回調地獄前端掘金本文涵蓋了處理異步操作的一些工具和技術和異步函數。 Nodejs 連接各種數據庫集合例子 - 后端 - 掘金Cassandra Module: cassandra-driver Installation ... 編寫 Node.js Rest API 的 10 個最佳實踐 - 前端 - 掘金全文共 6953 字,讀完需 8 分鐘,速讀需 2 分鐘。翻譯自...
摘要:前陣子,發布了一個黑科技,號稱是一個全新的通用全棧虛擬機,并具有高性能跨語言交互等逆天特性,真有這么神奇簡介是一個跨語言的通用虛擬機,不僅支持了等基于的語言,以及等基于的語言,還支持其他像和語言等。原生鏡像加速來看這段代碼,同樣來自官網。 前陣子,Oracle 發布了一個黑科技 GraalVM,號稱是一個全新的通用全棧虛擬機,并具有高性能、跨語言交互等逆天特性,真有這么神奇? Graa...
摘要:個推針對服務場景,基于和搭建了微服務框架,提高了開發效率。三容器化在微服務落地實踐時我們選擇了,下面將詳細介紹個推基于的實踐。 2016年伊始Docker無比興盛,如今Kubernetes萬人矚目。在這個無比需要創新與速度的時代,由容器、微服務、DevOps構成的云原生席卷整個IT界。個推針對Web服務場景,基于OpenResty和Node.js搭建了微服務框架,提高了開發效率。在微服...
閱讀 1049·2021-11-24 09:39
閱讀 3578·2021-11-22 13:54
閱讀 2542·2021-10-11 10:59
閱讀 773·2021-09-02 15:40
閱讀 1025·2019-08-30 15:55
閱讀 1042·2019-08-30 13:57
閱讀 2305·2019-08-30 13:17
閱讀 3025·2019-08-29 18:32