! ]: |( s: l+ c% o备注:主要组件还是以React为主, 截止2019年02月17日更新博客前对Vue的支持还不太完善,目前尚处于观望阶段 ! q/ b8 v" P7 Y5 }* B @ ( Z9 g/ b( V# d ' @6 _$ R6 S7 M. B+ }1 fVantUI) R) G# N0 |' n, N8 u% h4 }
& M0 ~0 B G" Y" B4 w
& a, z q0 i+ a0 w2 u1 M9 g8 uVant UI是有赞前端团队基于有赞统一的规范实现的Vue组件库, 提供了-整套UI基础组件和业务组件。通过Vant, 可以快速搭建出风格统一的页面,提升开发效率。+ e: f! ~; P# V
+ h2 v/ w1 V# j
# G- G: {( P- v K8 M9 U
官网地址 $ D' A+ Z" O5 V3 m4 V8 eGithub8 M$ T4 w3 x i2 \6 I- n. O
AtUI$ w% L1 {& K6 m; g: l
: u5 |8 B8 i% }, r5 |& I! H
) b$ r$ `4 X. f$ y# H0 }
at-ui是一款基于Vue 2.x的前端UI组件库, 主要用于快速开发PC网站产品。它提供了一套n pm+web pack+babel前端开发工作流程, CSS样式独立, 即使采用不同的框架实现都能保持统一的UI风格。! I/ c/ }2 s$ d
·官网地址8 B$ a. d) T7 u2 c1 e. O
·Git hub 6 a4 Z% x/ j: u9 M2 L ! }/ C F9 [9 N! S5 X 5 P6 t/ v: d) t. W/ d* y) lCube Ul8 B% q2 x, ]+ y( I3 H
' K5 C! }8 }. U 3 k1 z W# M/ W$ tcube-ui是滴滴团队开发的基于Vue js实现的精致移动端组件库。支持按需引入和后编译, 轻量灵活;扩展性强,可以方便地基于现有组件实现二次开发。" e3 z `( N8 k
& r. X# x2 ^; `: M6 K- w/ e
, i+ F. H# O- a
官网地址 0 }0 W% L6 o/ h. d3 ` ^5 t# Y6 g' A- dGithub + V& k6 L% }5 p: y/ [ h混合开发' g! z t+ r7 ?
2 P o p! V9 u# b0 i
8 M k. `# n5 n: H) z% l( B: EFlutter ; K' ~# i" D" g% @. o " ~" g. P0 z# |; t: D% ~ & A4 ?5 Z" L7 ]/ @4 mFlutter是谷歌的移动端UI框架, 可在极短的时间内构建Android和iOS上高质量的原生级应用。Flutter可与现有代码一起工作, 它被世界各地的开发者和组织使用, 并且Flutter是免费和开源的。 * |; b3 q: @7 Q7 _# ]5 O7 I! C% o+ h1 {% m
8 O, A5 X+ U3 L4 Q# j
官网地址0 R) R* G. H0 X5 e0 q: E1 t
Github+ o0 y; u& `# z, [! J
备注:Google出品, 主要特点是快速构建原生APP应用程序, 如做混合应用该框架为必选框架 6 X& x; P; y+ z" j3 J* }9 _: i6 tlonic8 @! [9 A+ }* B: y
5 f/ w3 x* [5 m) S
, h; f |6 J* H
lonic既是一个CSS框架也是一个Javascript UI库, lonic是目前最有潜力的一款HTML 5手机应用开发框架。通过SASS构建应用程序, 它提供了很多UI组件来帮助开发者开发强大的应用。它使用JavaScript MV VM框架和Angular JS/Vue来增强应用。提供数据的双向绑定, 使用它成为Web和移动开发者的共同选择。6 y7 e& m& a! R& E% D
( j: h- E' @/ e7 l& @5 u" k" r
2 t. B/ g t% {, I
官网地址 1 \! p) d2 \! m! V6 |( {% I: b1 F- g·官网文档! M% _+ S' g4 [1 s& c: T7 G4 b
·Git hub: I& a/ s! |! m1 l
) ~' @# b9 \% \* h3 V8 N' f/ V! ?8 Y& |. ?# K+ l* v
微信小程序& \5 r+ x6 o5 i x( t% i
9 s7 M9 }" X" }; C
( P* A( m$ H; k5 A- f% n
mpvue , n1 j1 i# X' s6 t3 O# z/ c + h! u' @* ^) T6 L! Q5 t& \ 8 h) P" T4 z8 m" a" _mpvue是美团开发的一个使用Vue.js开发小程序的前端框架, 目前支持微信小程序、百度智能小程序,头条小程序和支付宝小程序。框架基于Vue.js, 修改了的运行时框架runtime和代码编译器compiler实现, 使其可运行在小程序环境中, 从而为小程序开发引入了Vue.js开发体验。6 z9 }' i( }; e8 V( j' k* I. B
·官网地址 0 a* c# z) u( J' d! \$ `·Git hub$ N- e7 i; G% H' C! B! B2 y( A
备注:完备的Vue开发体验, 井且支持多平台的小程序开发, 推荐使用 ( l2 R- f5 @: G; I$ a: F $ P3 y8 {! c5 q8 U( @1 N# Q; m" S+ K7 }5 |
WeUI / b" {# t7 j" X' V: ~/ g( }1 @! J0 K* i( n. T. f$ I7 {
2 b4 _* ~! |; t; z5 @2 B
WeUI是一套同微信原生视觉体验一致的基础样式库, 由微信官方设计团队为微信内网页和微信小程序量身设计, 令用户的使用感知更加统一。包含button、cell、dialog、toast、article、icon等各式元素。 $ u# r/ e) g S9 R' z& _+ T" T/ l$ S- u! g: |3 J
/ b* r0 i; _; O9 z0 J' Q: c& i
官网地址: I% U* T6 l Y* T: F
Github 6 z( ^$ N: |. m5 J R三、了解前后分离的演变史& o' C) A/ e, V" C
为什么需要前后分离 ' z- u6 \0 E/ R6 g2 n% g3 X' c 2 s$ n% N1 L2 ]/ P( H8 Q4 H$ d, H4 _* X6 ?8 h/ o8 ?; L
3.1、后端为主的MVC时代( ~% f T. X# a
为了降低开发的复杂度, 以后端为出发点, 比如:Struts、Spring MVC等框架的使用, 就是后端的MVC时代; & N* b* i0 Y% }3 e以SpringMVC流程为例: % c8 M: y, ? Z/ `3 S ! d: o9 Z8 e# f 7 m: N5 `* [6 ~" D! ]7 J, j. Y% x7 ^
1 F d' v) k& Z2 J发起请求到前端控制器(Dispatcher Servlet)8 n8 F! I* _! J4 M1 x2 o6 Q
前端控制器请求HandlerMapping查找Handler,可以根据xml配置、注解进行查找 ) X# }/ c! @1 F* M% A处理器映射器HandlerMapping向前端控制器返回Handler8 {& ?. H2 e6 I# p
前端控制器调用处理器适配器去执行Handler8 [/ ~; R' R! t6 M
处理器适配器去执行Handler ) g5 A% ]- U9 |. a& j) X/ `/ M. }Handler执行完成给适配器返回ModelAndView i, j5 D( J! u _0 i# y! g/ s处理器适配器向前端控制器返回ModelAndView,ModelAndView是SpringMvc框架的一个底层对象,包括Model和View ) T0 b' U1 y; U1 F前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(JSP) , d/ ~" R& T! F% y: `7 }视图解析器向前端控制器返回View% v/ y2 ], n c: c
前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域( R6 Y0 p* E4 n0 t& P; \* n
前端控制器向用户响应结果( W2 e& Q4 y: w& @; N2 |) x$ J
优点 ; B/ o5 y; l2 e3 t4 Z" l4 cMVC是一个非常好的协作模式, 能够有效降低代码的耦合度从架构上能够让开发者明白代码应该写在哪里。为了让View更纯粹, 还可以使用Thyme leaf、Frree marker等模板引擎, 使模板里无法写入Java代码, 让前后端分工更加清晰。& n( v9 c F; f. |4 U, H
缺点. m9 e& H& N; b6 Z$ G* G+ ~9 w5 v
前端开发重度依赖开发环境,开发效率低,这种架构下,前后端协作有两种模式: % \; l1 v6 j" g/ V第一种是前端写DEMO, 写好后, 让后端去套模板。好处是DEMO可以本地开发, 很高效。不足是还需要后端套模板,有可能套错,套完后还需要前端确定,来回沟通调整的成本比较大;. Q7 t' U7 r" Z; J: u8 X0 }
另一种协作模式是前端负责浏览器端的所有开发和服务器端的View层模板开发。好处是UI相关的代码都是前端去写就好,后端不用太关注,不足就是前端开发重度绑定后端环境,环境成为影响前端开发效率的重要因素。 8 @$ f! A, e% L* P前后端职责纠缠不清:模板引擎功能强大,依旧可以通过拿到的上下文变量来实现各种业务逻辑。这样,只要前端弱势一点,往往就会被后端要求在模板层写出不少业务代码,还有一个很大的灰色地带是Controller, 页面路由等功能本应该是前端最关注的, 但却是由后端来实现。Controller本身与Model往往也会纠缠不清,看了让人咬牙的业务代码经常会出现在Controller层。这些问题不能全归结于程序员的素养, 否则JSP就够了。 : H3 W0 C/ |- `7 ]" G/ R7 Q对前端发挥的局限性:性能优化如果只在前端做空间非常有限,于是我们经常需要后端合作,但由于后端框架限制,我们很难使用[Comet】、【Big Pipe】等技术方案来优化性能。, N7 [) s; F- k1 l! u4 M
注:在这期间(2005年以前) , 包括早期的JSP、PHP可以称之为Web 1.0时代。在这里想说一句, 如果你是一名Java初学者, 请你不要再把一些陈旧的技术当回事了, 比如JSP, 因为时代在变、技术在变、什么都在变(引用扎克伯格的一句话:唯一不变的是变化本身);当我们去给大学做实训时,有些同学会认为我们没有讲什么干货,其实不然,只能说是你认知里的干货对于市场来说早就过时了而已 9 E; R- G8 d9 H# a, v1 N. r3.2、基于AJAX带来的SPA时代) Y* O* H4 A; o" W0 x6 Z1 z% U
时间回到2005年A OAX(Asynchronous JavaScript And XML, 异步JavaScript和XML,老技术新用法)被正式提出并开始使用CDN作为静态资源存储, 于是出现了JavaScript王者归来(在这之前JS都是用来在网页上贴狗皮膏药广告的) 的SPA(Single Page Application) 单页面应用时代。% P S& @; c8 ?2 u! I' l! l
p W! d+ R: c1 j$ F $ O. L7 u. [& h' ~' V优点4 B. s* }3 H$ P4 z: g
这种模式下, **前后端的分工非常清晰, 前后端的关键协作点是AJAX接口。**看起来是如此美妙, 但回过头来看看的话, 这与JSP时代区别不大。复杂度从服务端的JSP里移到了浏览器的JavaScript,浏览器端变得很复杂。类似Spring MVC, 这个时代开始出现浏览器端的分层架构:# b+ P' |6 B; H