Lecture02-渲染的概念

文章目录

    [toc]

    单词词性音标含义
    renderv./ˈrendə(r)/渲染,把数据填进页面结构、得到最终页面
    renderingn./ˈrendərɪŋ/渲染(过程),分为后端渲染与前端渲染两类
    templaten./ˈtemplət/模板,写“结构 + 占位”的地方,运行时被填进数据
    expressionn./ɪkˈspreʃn/表达式,开发时不知道数据只能先写占位表达式
    dynamicadj./daɪˈnæmɪk/动态的,同一页面结构显示不同数据要的就是动态填充
    server-sideadj./ˈsɜːvə saɪd/服务端的,后端渲染由服务器填好数据再返回整页 HTML
    client-sideadj./ˈklaɪənt saɪd/客户端的,前端渲染由浏览器拿到数据后自己填

    Lecture02-渲染的概念

    1、本节讲什么

    理解"渲染"到底是什么意思、为什么 HTML 做不了动态数据,以及后端渲染 / 前端渲染两种方式——从而明白 Vue 帮你做了什么事。

    2、概念速览

    什么是渲染:把"数据"填进"页面结构",得到最终页面的过程。开发时页面里写的是"表达式 / 占位",运行时执行它得到具体数据,再替换成真实内容。

    为什么需要它:同一个页面结构要显示不同数据(比如同一个表格显示不同学生),HTML 写死了就做不到,必须"动态填充"。

    两种类型:

    • 后端渲染:服务器把数据填进页面,返回完整 HTML(如 JSP、Thymeleaf)。
    • 前端渲染:服务器只返回数据,浏览器拿到数据自己填(如 Vue、React)。

    正确 vs 误区:渲染 ≠ 刷新页面。渲染是"数据填进页面结构"这个动作;前端渲染下,它发生在浏览器里。

    1、一个必须面对的问题

    image-20250515164031726

    同一个前端页面,要显示的数据结构是一样的,但数据各不相同:

     小明小红小刚
    id5721
    姓名赵大明马小红刘忠刚
    年龄253746
    专业贴膜人力资源疏通下水

    同样的数据结构,同一个页面,要显示不同数据,就会遇到一个问题:HTML做不到

    <table>
        <tr><th>id</th><th>姓名</th><th>年龄</th><th>专业</th></tr>
        <tr><td>5</td><td>赵大明</td><td>25</td><td>贴膜</td></tr>
        <tr><td>7</td><td>马小红</td><td>37</td><td>人力资源</td></tr>
        <tr><td>21</td><td>刘忠刚</td><td>46</td><td>疏通下水</td></tr>
    </table>
    

    在HTML代码中,任何数据都是写死的,不能动态更改,除非修改代码

    在项目运行过程中,每秒成千上万次请求,每次请求都索取不同数据

    那难不成让程序员每秒修改一万次代码?再重新部署一万次?这绝不可能

    所以正确的模式一定是:程序写好并部署运行之后,不需要修改代码就能够动态显示数据


    在这个要求下,我们再来看HTML,HTML标签定义好页面结构之后,具体填充数据的地方必须是动态填充数据:

    <table>
        <tr><th>id</th><th>姓名</th><th>年龄</th><th>专业</th></tr>
    	<c:foreach items="${requestScope.stuList}" var="stu">
    		<tr><td>${stu.stuId}</td><td>${stu.stuName}</td><td>${stu.stuAge}</td><td>${stu.stuSubject}</td></tr>
    	</c:foreach>
    </table>
    

    image-20250515180732288


    2、什么是渲染?

    • 开发时:程序员不知道具体数据是什么,也不可能知道,所以只能写表达式
    • 运行时:执行表达式背后的代码,得到具体数据,再用数据替换原来的表达式

    image-20250515181036052


    3、渲染的两种类型

    3.1、后端渲染

    ① 执行过程

    后端执行完渲染操作,把渲染完毕、带有所有数据的纯HTML页面返回给前端

    image-20250515182245885


    ② 相关技术

    看看就行,不用记

    • JSP
    • Thymeleaf
    • Freemarker
    • Volecity
    • ……

    3.2、前端渲染

    ① 执行过程

    image-20250515183416186


    ② 相关技术

    • 原生DOM API
    • jQuery库
    • Vue.js框架
    • React
    • AngularJS
    • ……

    4、趋势

    企业实际开发中采用前后端分离的开发方式已经不可阻挡,所以渲染方式也是以前端渲染为主

    3、先看效果

    纯概念的一节,用一张图体会"开发时写表达式 → 运行时被替换成真实数据":

    模板里写的是:<tr><td>${stuName}</td></tr>
    运行时被替换成:<tr><td>赵大明</td></tr>
    

    记住结论:Vue 属于"前端渲染"。我们后面写的模板,是运行时在浏览器里被填进数据的"表达式"。

    4、照着做

    1. 看第 1 小节的表格:同一个页面结构,数据不同——这就是"动态显示"要解决的问题。
    2. 看后端渲染流程图:服务器填数据 → 返回整页 HTML。
    3. 看前端渲染流程图:服务器只返回数据 → 浏览器填 → 才得到页面。
    4. 记住结论:Vue 属于前端渲染;我们后面写的模板是"运行时在浏览器里被填数据的表达式"。

    5、常见疑问

    • Q:渲染到底是啥? A:把"数据"填进"页面结构"、得到最终可见页面的动作。你写的是结构 + 占位,运行时用真实数据替换占位。
    • Q:后端渲染和前端渲染,实际开发用哪个? A:现在企业主流是前后端分离 + 前端渲染(Vue / React)。后端只提供数据接口(你已会的 SpringMVC),页面渲染交给前端。
    • Q:渲染和后面要学的"响应式"有什么关系? A:渲染是"一次性把数据填进去";响应式是"数据一变,页面自动重新填那部分"(第 12 节)。渲染是基础,响应式是 Vue 的进阶能力。

    6、规范要点

    • 心里有"模板 = 结构 + 占位":写模板时想清楚"哪里是数据会填进来的位置"。
    • 前后端分离下,前端只管"拿数据、填页面",别把业务逻辑堆在模板里。

    7、本节验证

    • 能说清“渲染 = 把数据填进页面结构”这个动作 ✅
    • 说得清 HTML 为什么做不到动态显示数据 ✅
    • 能分清后端渲染(返回整页 HTML)和前端渲染(只返回数据)✅
    • 知道 JSP / Thymeleaf 属后端渲染,Vue / React 属前端渲染 ✅
    • 记住 Vue 属于前端渲染,模板是运行时在浏览器里被填数据的表达式 ✅
    end