【问题标题】:Require & Memory Consumption需求和内存消耗
【发布时间】:2018-01-03 11:54:38
【问题描述】:

require("path/to/image") 是如何工作的?

对于这样的事情:

export const images = {
   image1: require("path/to/image-1"),
   image2: require("path/to/image-2"),
   ...
};

<Image source={images.image1} />

加载图像的 I/O 操作何时发生?在require 中声明的那一刻或分配给Image 组件的那一刻?

对于 I/O,我的意思是还从磁盘上可用的图像文件中读取字节。我试图了解做&lt;Image source={require("path/to/image-1")} /&gt;&lt;Image source={images.image1} /&gt; 的后果。我想知道 I/O(磁盘读取)是否已经在应用程序启动时发生,即甚至在特定屏幕中使用图像之前。

【问题讨论】:

    标签: android ios react-native memory-management


    【解决方案1】:

    当您导入包含images 定义的文件时,文件的实际拉取发生。这是 I/O 发生的时间。但这就是它在服务器上的工作方式(如果您在服务器端渲染此组件)。如果您在客户端上执行此操作,path/to/image-1path/to/image-2 可能已经在您捆绑的 JavaScript 文件中,因此没有 I/O 操作(或 http 请求)。

    附: 如果您使用动态导入,图片看起来会有所不同,但据我所知,情况并非如此。

    附言 实际上,现在当我看到您用 react-native 标记了您的问题时,我不得不说那里的情况可能看起来有所不同。

    【讨论】:

    • 对于 I/O,我的意思是还从磁盘上可用的图像文件中读取字节。我试图了解做&lt;Image source={require("path/to/image-1")} /&gt;&lt;Image source={images.image1} /&gt; 的后果(即:我上面提到的)。我想知道 I/O(磁盘读取)是否已经在应用程序启动的那一刻发生,甚至在图像用于特定屏幕之前。
    • 如果您需要该文件并且 images 声明位于文件顶部,是的,它会被读取。如果您的要求在组件的渲染函数中,我猜还没有(但这会很奇怪)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多