<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 一、java web開發經歷的幾個階段 1. jsp開發階段:現在仍然有很多企業項目使用jsp開發。可以說jsp就是頁面端的servlet,jsp文件糅合了三種元素:Java代碼、動態的數據、HTML代碼結構。從抽象層次來看,Java代碼部分不僅用來組織數據,還被用來控制HTML頁面結構。這樣在層次劃分上屬于比較含糊不清的。當然企業可以通過規范的方式去限制,不允許在jsp頁面寫java代碼,但這只是規范層面的事,實際怎樣無法控制。 2. 使用java模板引擎:在這個階段就出現了freemarker、velocity這樣的嚴格數據模型與業務代碼分離的模板引擎。實現了嚴格的MVC分離,模板引擎的另外一個好處就是:宏定義或者說是組件模板,比jsp標簽好用,極大的減少了重復頁面組件元素的開發。另外,相對于jsp而言,模板引擎的開發效率會更高。我們都知道,JSP在第一次執行的時候需要轉換成Servlet類,開發階段進行功能調適時,需要頻繁的修改JSP,每次修改都要編譯和轉換,那么試想一天中我們浪費在程序編譯的時間有多少。但是java模板引擎,仍然是使用的服務器端的渲染技術,也就是沒有辦法將html頁面和后臺服務層面全面解耦,這就要求前端工程師和后端工程師在同一個項目結構下工作,而且前端工程師及其依賴于后端的業務數據,頁面無法脫離于后端請求數據在瀏覽器獨立運行。 3. 前端工程化:隨著VUE、angularjs、reactjs的大行其道,開始實現真正的前后端分離技術。前端的工程師負責頁面的美化與結構,后端工程師可以專注于業務的實現。在ajax和nodejs出現之后,可以說為前端的發展帶來了革命性的變化,前端可以做自己的工程化實踐。這些新的前端技術通常是“所見即所得”,寫完的代碼可以直接在瀏覽器上查看,將前端后端的串行化工作模式轉變為并行工作的模式。前端專注于布局、美化,后端專注于業務。專業的人越來越專業,工作效率也更高。 ## 二、java模板引擎的選型。 常見的模板引擎有Freemarker、Thymeleaf、Velocity等,下面我們就分別來說一下。 spring boot目前官方集成的框架只有freemarker和Thymeleaf,官方明確建議放棄velocity。很多人說thymeleaf是官方推薦使用的模板引擎,說實話我沒找到這個說法的出處。 ![](https://box.kancloud.cn/3fff30fd58206f4ad079195d9fe782df_1065x243.png) ### Thymeleaf: Thymeleaf的最大優點也是他的最大的缺點,就是它使用靜態html嵌入標簽屬性,瀏覽器可以直接打開模板文件,便于前后端聯調。也就是貼近于“所見即所得”。但是也正是因為,thyme使用標簽屬性去放數據,也導致它的語法違反了程序員對于html的理解。另外Thymeleaf的性能一直為人所詬病。 Thymeleaf代碼和下面freemarker對一個對象數組遍歷的代碼對比一下: ~~~ <tr th:each="item : ${users}"> <td th:text="${item.userId}"></td> <td th:text="${item.username}"></td> <td th:text="${item.password}"></td> <td th:text="${item.email}"></td> <td th:text="${item.mobile}"></td> </tr> ~~~ FreeMarker代碼: ~~~ <#list users as item> <tr> <td>${item.userId}</td> <td>${item.username}</td> <td>${item.password}</td> <td>${item.email}</td> <td>${item.mobile}</td> </tr> </#list> ~~~ 很明顯FreeMarker更符合開發人員對于HTML的使用規范,將展示內容放在標簽內,而不是作為標簽屬性存在。 ## 三、最后 綜上,目前為止如果使用java模板引擎,我還是推薦freemarker。當然,我還有一個建議,去學LayUI等前端框架,或者去學vue、angularjs、reactjs,不要用純java模板引擎,這些東西用的會越來越少。 ![](https://box.kancloud.cn/21b73195a71239c68b1e910ea5a2d0e4_1640x675.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看