Hippy项目源码分析总结

本文介绍了Hippy项目中的UriLoader类,特别是url-loader模块,它如何通过base64编码将图片资源内嵌到JavaScript中,提升页面性能。同时概述了Hippy架构,涉及前端、JS引擎和终端框架的交互及其在项目中的应用。
摘要由CSDN通过智能技术生成

2021SC@SDUSC


#include <memory>
#include <string>
#include <vector>

#include "base/unicode_string_view.h"

namespace hippy {
namespace base {

class UriLoader {
 public:
  using unicode_string_view = tdf::base::unicode_string_view;
  using u8string = unicode_string_view::u8string;

  UriLoader() {}
  virtual ~UriLoader() {}

  virtual bool RequestUntrustedContent(const unicode_string_view& uri,
                                       std::function<void(u8string)> cb) = 0;

  virtual bool RequestUntrustedContent(
      const unicode_string_view& uri,
      u8string& content) = 0;
};
}  // namespace base
}  // namespace hippy

补充简析url-loader:

什么是 url-loader

url-loader 会将引入的文件进行编码,生成 DataURL,相当于把文件翻译成了一串字符串,再把这个字符串打包到 JavaScript

什么时候使用

一般来说,我们会发请求来获取图片或者字体文件。如果图片文件较多时(比如一些 icon),会频繁发送请求来回请求多次,这是没有必要的。此时,我们可以考虑将这些较小的图片放在本地,然后使用 url-loader 将这些图片通过 base64 的方式引入代码中。这样就节省了请求次数,从而提高页面性能。

如何使用

1. 安装 url-loader

npm install url-loader --save-dev

2. 配置 webapck

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpg|gif)$/,
        use: [
          {
            loader: 'url-loader',
            options: {},
          },
        ],
      },
    ],
  },
};

3. 引入一个文件,可以是 import(或 require

import logo from '../assets/image/logo.png';
console.log('logo的值: ', logo); // 打印一下看看 logo 是什么

三步即可

4. 完成结果

webpack

执行 webpack 之后,dist 目录只生成了一个 bundle.js。和 file-loader 不同的是,没有生成我们引入的那个图片。上文说过,url-loader 是将图片转换成一个 DataURL,然后打包到 JavaScript 代码中。

执行 webpack 之后,dist 目录只生成了一个 bundle.js。和 file-loader 不同的是,没有生成我们引入的那个图片。上文说过,url-loader 是将图片转换成一个 DataURL,然后打包到 JavaScript 代码中。

总结

Hippy总体架构:

 

前端框架层

主要实现了JSX页面DOM转化、js/native桥接接口、View/Module的前端实现。

 JS引擎层

JS引擎层主要是JS代码通过Google V8引擎执行,然后通过so调用java代码。主要作用是打通JS和Java代码调用通道。

终端框架层

主要实现了Dom节点的终端渲染、View/Module的终端实现、Hippy的生命周期管理等功能。

Hippy项目源码分析结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值