美文网首页程序员
Web 渲染(1)

Web 渲染(1)

作者: zidea | 来源:发表于2019-06-06 20:21 被阅读5次

web 应用的架构

  • 渲染和加载 (Rendering 和 loading)
  • 数据/状态管理
  • 组件模式
  • 路由和转换

接收页面的过程

在用户看到浏览器中自己想要界面通常会经历三个阶段。

  • Get 请求服务端下载界面
  • 解析 bundle.js
  • 渲染界面
    Bigger JS bundle = slower performance
  • 服务端渲染 (server side render)
  • 客户端渲染 (client side render)

这些年我们经历从服务端渲染来到客户端渲染,现在又回到客户端渲染,其实并不能说哪个好,就像 OOP 和 FP 其实并不是非黑即白,其实各有优点。我们只有进行权衡,让两者达到平衡才能做出高性能的 web 应用。

在这次分享中看到熟悉面孔 jason miller , 这位 preact 作者也加入 google 团队了。
随着应用越来越复杂,我们的 bundle.js 文件体积也在迅速增肥,这样大大增加浏览器端解析的压力,降低加载页面速度,而从影响了用户的体验。
这样我们可以从新返回到服务端渲染的时代。

同样是加载有图片的列表的界面 ,如果使用服务端渲染,在 html 内容加载到浏览器,就会看到列表图片加载到界面上,而客户端渲染需要先加载列表,才开始加载图片。不过想要更好用户交互体验,唯一的选择还是客户端渲染可以提供这样体验。

SRR with Hydration(同构方式开发 web 应用,既有服务端又有客户端渲染)

  • Performance
  • SEO
  • Data Fetching
    以上是服务端渲染的优点。

Performance

服务端渲染会将页面装配好直接发送给请求的浏览,这样浏览器就减少许多工作,直接将其渲染呈现给用户

How do we render on the server then hydrate on the client?
Typical client-side rendering with Reat

import React from 'react'
import ReactDOM from 'react-dom'

ReactDOM.render(<App/>, document.getElementById('root'));
const render = (req, res) => {
    fs.readFile('./index.html','utf8',(err, data)=>{
        const html = ReactDOMServer.renderToString(<App/>);
        const document = data.replace(`<div id="root'>${html}</div>`);
        res.end(document)
    });
}

const app = express();
app.get('*',render);
import { createRenderer } from 'vue-server-renderer';

const render = (req, res) => {
    const app = new Vue({...})
    
    createRenderer().renderToString(app,(err,html)=>{
        res.end(html)
    })
}


const app = express();
app.get('*',render);
import { ngExpressEngine } from '@nguniversal/express-engine';
import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader';

app.engine('html',ngExpressEngine({
    bootstrap:AppServerModuleNgFactory,
    providers:[
        provideModuleMap(LAZY_MODULE_MAP)
    ]
}))

相关文章

  • Web 渲染(1)

    web 应用的架构 渲染和加载 (Rendering 和 loading) 数据/状态管理 组件模式 路由和转换 ...

  • 小程序底层原理

    页面渲染的方式主要有三种 1.web渲染 2.Native原生渲染 3.web与Native两者掺杂,即Hybri...

  • 微信小程序底层原理

    页面渲染的方式主要有三种 1.web渲染2.Native原生渲染3.web与Native两者掺杂,即Hybrid渲...

  • Android WebView应用

    1:简介 WebView是一个基于WebKit,展现web页面的控件。 2:作用 1:显示和渲染Web页面2:直接...

  • WebView了解

    1:简介 WebView是一个基于WebKit,展现web页面的控件。 2:作用 1:显示和渲染Web页面2:直接...

  • 小程序学习笔记-双线程

    一切始于双线程 技术选型 目前来说,页面渲染的方式主要有三种: Web 渲染。 Native 原生渲染。 Web ...

  • 渲染的工作流程

    前端web页面的渲染流程 1、构建DOM与 CSSOM浏览器通过http请求,获得静态资源后,进行页面渲染时,构建...

  • 浅谈前端路由的概念与vue-router的实现原理

    1.Web路由 1.1 后端路由 Web路由的概念简单来说就是根据不同URL渲染不同的页面。在前后端不分离的时代,...

  • 07 Vue 服务端渲染 SSR

    07服务端渲染SSR 理解 SSR 传统 web 开发 传统 web 开发,网页内容在服务端渲染完成,一次性传输到...

  • 15、渲染Web视图(1)(Spring笔记)

    一、理解视图解析 在之前的讲解中,我们使用名为InternalResourceViewResolver的视图解析器...

网友评论

    本文标题:Web 渲染(1)

    本文链接:https://www.haomeiwen.com/subject/ohmotctx.html