精华内容
下载资源
问答
  • Fragment懒加载

    2016-08-08 09:15:07
    Fragment 懒加载是什么意思?   所谓懒加载,即Fragment 的 UI 对用户可见时才加载数据。 以前我没啥经验,一股脑的从服务器拉取数据之后立马把数据绑定到 Fragment 的 UI 组件上,可能不符合部分产品的...

    1

    Fragment 懒加载是什么意思?

       

    所谓懒加载,即Fragment 的 UI 对用户可见时才加载数据。

    以前我没啥经验,一股脑的从服务器拉取数据之后立马把数据绑定到 Fragment 的 UI 组件上,可能不符合部分产品的需求。


    • 那么懒加载的技术关键点是什么?


    根据定义:

    所谓懒加载,即Fragment 的 UI 对用户可见时才加载数据。


    需要判断何时 Fragment 的 UI 才对用户可见。


    • 如何判断 Fragment 的 UI 是否对用户可见?


    Fragment 提供了一个方法 public void setUserVisibleHint(boolean isVisibleToUser),API 的注释如下:


    Set a hint to the system about whether this fragment's UI is currently visible to the user. This hint defaults to true and is persistent across fragment instance state save and restore.


    所以,只需要判断参数 isVisibleToUser 是否为 True 即可知道该 Fragment 的 UI 是否对用户可见。


    • setUserVisibleHint 在什么时候调用?


    对于单个 Fragment,setUserVisibleHint 是不会被调用的,只有该 Fragment 在 ViewPager 里才会被调用。所以,我写了一个 ViewPager + Fragment 的 Demo,打印了一下 Log可以看到 setUserVisibleHint 的执行顺序如下:

    setUserVisibleHint: isVisibleToUser = false
    onAttach
    onCreate
    setUserVisibleHint: isVisibleToUser = true
    onCreateView
    onActivityCreated
    onStart
    onResume
    onPause 
    onStop
    onDestroyView
    onDestroy
    onDetach

    2代码   

    为了方便,封装一个基类 LazyLoadFragment,提供一个 loadData() 方法供调用去加载数据



    等等,为什么 loadData() 会在两个地方执行?


    在 setUserVisibleHint 方法里执行我还能理解,为什么 onActivityCreated 也要执行呢?


    因为,ViewPager 默认显示第一页,第一页肯定要先加载数据啊,而且 setUserVisibleHint 的执行顺序又是在 onCreatView 之前,同时 onCreatView 需要初始化界面和修改 isViewCreated 的值。所以就需要在 onActivityCreated 里执行一次咯。


    3wait...   

    文章写到这里,我听到了一个不同的声音


    ViewPager 不是有 setOffscreenPageLimit(int limit) 方法吗?我调用 viewPager.setOffscreenPageLimit(0) 不就行了吗?

    我想说:思路是对的,但是这样做没效果。为什么?看一下 setOffscreenPageLimit 的方法实现就知道了




    limit 默认为 1 ,就算传一个 0 也无济于事啊。(ps:留言下方有人提出可以修改ViewPager源码)


    本文总结

    • 懒加载的技术关键点

    • setUserVisibleHint 的执行顺序

    • 为什么 ViewPager.setOffscreenPageLimit(0) 无效?



    展开全文
  • 懒加载

    2021-01-20 14:16:09
     首先我们要了解一下什么是图片的懒加载,所谓图片懒加载意思就是说这张图片很懒,喜欢临时抱拂脚,等到出现在我们的视线内才会去加载。这种加载数据的方式可以优化网页,提高系统的响应速度,最大程度的减少了...
  • Fragment 懒加载实战

    2016-08-08 10:56:24
     Fragment 懒加载是什么意思? 所谓懒加载,即Fragment 的 UI 对用户可见时才加载数据。以前我没啥经验,一股脑的从服务器拉取数据之后立马把数据绑定到 Fragment 的 UI 组件上,可能不符合部分产品的需求。 ...
    1
    

            Fragment 懒加载是什么意思?

    所谓懒加载,即Fragment 的 UI 对用户可见时才加载数据。以前我没啥经验,一股脑的从服务器拉取数据之后立马把数据绑定到 Fragment 的 UI 组件上,可能不符合部分产品的需求。


    那么懒加载的技术关键点是什么?


    根据定义:

    所谓懒加载,即Fragment 的 UI 对用户可见时才加载数据。


    需要判断何时 Fragment 的 UI 才对用户可见。

     

    如何判断 Fragment 的 UI 是否对用户可见?

    Fragment 提供了一个方法 public void setUserVisibleHint(boolean isVisibleToUser),API 的注释如下:


    Set a hint to the system about whether this fragment's UI is currently visible to the user. This hint defaults to true and is persistent across fragment instance state save and restore.


    所以,只需要判断参数 isVisibleToUser 是否为 True 即可知道该 Fragment 的 UI 是否对用户可见。


    • setUserVisibleHint 在什么时候调用?


    对于单个 Fragment,setUserVisibleHint 是不会被调用的,只有该 Fragment 在 ViewPager 里才会被调用。所以,我写了一个 ViewPager + Fragment 的 Demo,打印了一下 Log可以看到 setUserVisibleHint 的执行顺序如下:

    setUserVisibleHint: isVisibleToUser = false
    onAttach
    onCreate
    setUserVisibleHint: isVisibleToUser = true
    onCreateView
    onActivityCreated
    onStart
    onResume
    onPause 
    onStop
    onDestroyView
    onDestroy
    onDetach
    2代码

    为了方便,封装一个基类 LazyLoadFragment,提供一个 loadData() 方法供调用去加载数据



    等等,为什么 loadData() 会在两个地方执行?


    在 setUserVisibleHint 方法里执行我还能理解,为什么 onActivityCreated 也要执行呢?


    因为,ViewPager 默认显示第一页,第一页肯定要先加载数据啊,而且 setUserVisibleHint 的执行顺序又是在 onCreatView 之前,同时 onCreatView 需要初始化界面和修改 isViewCreated 的值。所以就需要在 onActivityCreated 里执行一次咯。


    3wait...

    文章写到这里,我听到了一个不同的声音


    ViewPager 不是有 setOffscreenPageLimit(int limit) 方法吗?我调用 viewPager.setOffscreenPageLimit(0) 不就行了吗?

    我想说:思路是对的,但是这样做没效果。为什么?看一下 setOffscreenPageLimit 的方法实现就知道了




    limit 默认为 1 ,就算传一个 0 也无济于事啊。(ps:留言下方有人提出可以修改ViewPager源码)















    展开全文
  • Fragment 的懒加载

    2016-11-06 17:18:20
    Fragment 懒加载是什么意思? 所谓懒加载,即Fragment 的 UI 对用户可见时才加载数据。 以前我没啥经验,一股脑的从服务器拉取数据之后立马把数据绑定到 Fragment 的 UI 组件上,导致性能低下。后来知道了这一技术,...

    Fragment 懒加载是什么意思?

    所谓懒加载,即Fragment 的 UI 对用户可见时才加载数据。

    以前我没啥经验,一股脑的从服务器拉取数据之后立马把数据绑定到 Fragment 的 UI 组件上,导致性能低下。后来知道了这一技术,才明白这才是移动端加载数据的正确姿势。

    懒加载的技术关键点是什么?

    根据定义:

    所谓懒加载,即Fragment 的 UI 对用户可见时才加载数据。

    需要判断何时 Fragment 的 UI 才对用户可见

    如何判断 Fragment 的 UI 是否对用户可见?

    Fragment 提供了一个方法 public void setUserVisibleHint(boolean isVisibleToUser),API 的注释如下

    Set a hint to the system about whether this fragment's UI is currently visible to the user. This hint defaults to true and is persistent across fragment instance state save and restore.

    所以,只需要判断参数 isVisibleToUser 是否为 True 即可知道该 Fragment 的 UI 是否对用户可见。

    setUserVisibleHint 在什么时候调用?

    对于单个 Fragment,setUserVisibleHint 是不会被调用的,只有该 Fragment 在 ViewPager 里才会被调用。所以,我写了一个 ViewPager + Fragment 的 Demo,打印了一下 Log。

    D/Owen_TestFragment: setUserVisibleHint: isVisibleToUser = false
    D/Owen_TestFragment: onAttach
    D/Owen_TestFragment: onCreate
    D/Owen_TestFragment: setUserVisibleHint: isVisibleToUser = true
    D/Owen_TestFragment: onCreateView
    D/Owen_TestFragment: onActivityCreated
    D/Owen_TestFragment: onStart
    D/Owen_TestFragment: onResume
    D/Owen_TestFragment: onPause
    D/Owen_TestFragment: onPause 
    D/Owen_TestFragment: onStop
    D/Owen_TestFragment: onDestroyView
    D/Owen_TestFragment: onDestroy
    D/Owen_TestFragment: onDetach

    可以看到 setUserVisibleHint 的执行顺序是

    setUserVisibleHint(false) -> onAttach -> onCreate -> setUserVisibleHint(true)  -> onCreateView -> onActivityCreated ->.... -> onDetach

    代码

    为了方便,封装一个基类 LazyLoadFragment,提供一个 loadData() 方法供调用去加载数据

    public abstract class LazyLoadFragment extends Fragment {
    
        /**
         * 控件是否初始化完成
         */
        private boolean isViewCreated;
        /**
         * 数据是否已加载完毕
         */
        private boolean isLoadDataCompleted;
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(getLayout(), container, false);
            initViews(view);
            isViewCreated = true;
            return view;
        }
    
        public abstract int getLayout();
        public abstract void initViews(View view);
    
        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser && isViewCreated && !isLoadDataCompleted) {
                isLoadDataCompleted = true;
                loadData();
            }
        }
    
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
    
            if (getUserVisibleHint()) {
                isLoadDataCompleted = true;
                loadData();
            }
        }
    
        /**
         * 子类实现加载数据的方法
         */
        public abstract  void loadData();
    }

    等等,为什么 loadData() 会在两个地方执行?在 setUserVisibleHint 方法里执行我还能理解,为什么 onActivityCreated 也要执行呢?

    因为,ViewPager 默认显示第一页,第一页肯定要先加载数据啊,而且 setUserVisibleHint 的执行顺序又是在 onCreatView 之前,同时 onCreatView 需要初始化界面和修改 isViewCreated 的值。所以就需要在 onActivityCreated 里执行一次咯。

    等等

    文章写到这里,我听到了一个不同的声音

    ViewPager 不是有 setOffscreenPageLimit(int limit) 方法吗?我调用 viewPager.setOffscreenPageLimit(0) 不就行了吗?

    我想说:思路是对的,但是这样做没效果。为什么?看一下 setOffscreenPageLimit 的方法实现就知道了

    private static final int DEFAULT_OFFSCREEN_PAGES = 1;
    
    public void setOffscreenPageLimit(int limit) {
        if (limit < DEFAULT_OFFSCREEN_PAGES) {
            Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " +
                    DEFAULT_OFFSCREEN_PAGES);
            limit = DEFAULT_OFFSCREEN_PAGES;
        }
        if (limit != mOffscreenPageLimit) {
            mOffscreenPageLimit = limit;
            populate();
        }
    }

    limit 默认为 1 ,就算传一个 0 也无济于事啊。

    总结

    • 懒加载的技术关键点
    • setUserVisibleHint 的执行顺序
    • 为什么 ViewPager.setOffscreenPageLimit(0) 无效?

    参考来源



    文/程序猴(简书作者)
    原文链接:file:///D:/360%E6%9E%81%E9%80%9F%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%8B%E8%BD%BD/wangye/Fragment%20%E7%9A%84%E6%87%92%E5%8A%A0%E8%BD%BD%20-%20%E7%AE%80%E4%B9%A6.html
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
    展开全文
  • 图片懒加载

    2021-02-18 11:05:52
    文章目录一.什么是懒加载?二.为什么要懒加载?三....四....懒加载是一种网页性能优化的方式,它能极大的提升用户体验。就比如说图片,图片一直是影响网页性能的主要元凶,现在一张图片超过几兆已经是

    一.什么是懒加载?

    懒加载突出一个“懒”字,懒就是拖延迟的意思,所以“懒加载”说白了就是延迟加载,比如我们加载一个页面,这个页面很长很长,长到我们的浏览器可视区域装不下,那么懒加载就是优先加载可视区域的内容,其他部分等进入了可视区域在加载。

    二.为什么要懒加载?

    懒加载是一种网页性能优化的方式,它能极大的提升用户体验。就比如说图片,图片一直是影响网页性能的主要元凶,现在一张图片超过几兆已经是很经常的事了。如果每次进入页面就请求所有的图片资源,那么可能等图片加载出来用户也早就走了。所以,我们需要懒加载,进入页面的时候,只请求可视区域的图片资源。

    总结出来就两个点:

    1.全部加载的话会影响用户体验

    2.浪费用户的流量,有些用户并不像全部看完,全部加载会耗费大量流量。

    三.懒加载的实现原理?

    由于网页中占用资源较多的一般是图片,所以我们一般实施懒加载都是对图片资源而言的,所以这里的实现原理主要是针对图片。

    大家都知道,一张图片就是一个标签,而图片的来源主要是src属性。浏览器是否发起亲求就是根据是否有src属性决定的。

    既然这样,那么我们就要对标签的src属性下手了,在没进入可视区域的时候,我们先不给这个标签赋src属性,这样岂不是浏览器就不会发送请求了。

    总结:我们知道了从标签下手,那么更重要的就是可视区域的判断了,这就是整篇文章的核心之处了。

    四.实现步骤及Demo

    1.先介绍几个和懒加载相关的API

    document.documentElement.clientHeight//获取屏幕可视区域的高度
    element.offsetTop//获取元素相对于文档顶部的高度
    document.documentElement.scrollTop//获取浏览器窗口顶部与文档顶部之间的距离,也就是滚动条滚动的距离
    

    clientHeight
    在这里插入图片描述
    offsetTop
    在这里插入图片描述
    scrollTop
    在这里插入图片描述
    通过上面三个API,我们获得了三个值:可视区高度、元素相对于其父元素容器顶部的距离、浏览器窗口顶部与容器元素顶部的距离也就是滚动条滚动的高度。

    可能到这里还有一些人不知道怎么实现,我们还是用图来展示一下:
    在这里插入图片描述
    大家看了这张图,应该一下就能明白过来了。所以我们就得出了一个判断公式:

    如果:offsetTop-scroolTop<clientHeight,则图片进入了可视区内,则被请求。

    2.代码实现

    下面的代码就是根据以上公式实现的:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>图片懒加载</title>
        <style>
            img {
                display: block;
                width: 100%;
                height: 300px;
                margin-bottom: 20px;
            }
        </style>
    </head>
    <body>
        <img data-src="./images/1.jpg" alt="">
        <img data-src="./images/2.jpg" alt="">
        <img data-src="./images/3.jpg" alt="">
        <img data-src="./images/4.jpg" alt="">
        <img data-src="./images/5.jpg" alt="">
        <img data-src="./images/6.jpg" alt="">
        <img data-src="./images/7.jpg" alt="">
        <img data-src="./images/8.jpg" alt="">
        <img data-src="./images/9.jpg" alt="">
        <img data-src="./images/10.jpg" alt="">
        <img data-src="./images/1.jpg" alt="">
        <img data-src="./images/2.jpg" alt="">
    </body>
    <script>
            var imgs = document.querySelectorAll('img');
    
            //offsetTop是元素与offsetParent的距离,循环获取直到页面顶部
            function getTop(e) {
                var T = e.offsetTop;
                while(e = e.offsetParent) {
                    T += e.offsetTop;
                }
                return T;
            }
    
            function lazyLoad(imgs) {
                var H = document.documentElement.clientHeight;//获取可视区域高度
                var S = document.documentElement.scrollTop || document.body.scrollTop;
                for (var i = 0; i < imgs.length; i++) {
                    if (H + S > getTop(imgs[i])) {
                        imgs[i].src = imgs[i].getAttribute('data-src');
                    }
                }
            }
    
            window.onload = window.onscroll = function () { //onscroll()在滚动条滚动的时候触发
                lazyLoad(imgs);
            }
    </script>
    </html>
    

    注意:offsetTop是相对于父元素的,所以上面带吗有一个offsetParent。
    其中offsetParent:
    当某个元素及其DOM结构层次中元素都未进行CSS定位时(absolute或者relative)[或者某个元素进行CSS定位时而DOM结构层次中元素都未进行CSS定位时],则这个元素的offsetParent属性的取值为根元素。更确切地说,这个元素的各种偏移量计算(offsetTop、offsetLeft等)的参照物为Body元素。(其实无论时标准兼容模式还是怪异模式,根元素都为Body元素)

    五.更加方便快捷的实现方式

    1.了解一个API

    这种实现方式我们只需要了解一个API就行了:

    getBoundingClientRect()//获取元素的大小及位置
    

    在这里插入图片描述

    在这里插入图片描述
    从这张图我们可以看出,元素是相对于左上角,而不是什么边距。

    2.实现方式

    通过上面的实验我们都知道,懒加载的一个重点就是要知道什么时候图片是进入了可视区内,那么就上面这张图而言,我们有什么方法判断图片进入了可视区呢。

    其实很简单:

    我们先获取图片到可视区顶部的距离,并获取到可视区的高度:

    var bound = el.getBoundingClientRect();
    var clientHeight = window.innerHeight;//这个和前面获取可视区高度的效果一样,只是兼容性问题
    

    然后我们继续思考,当我们滚动条向下滚动的时候,bound.top值会变得越来越小,也就是图片到可视区顶部的距离也越来越小,所以当bound.top == clientHeight时,说明土片马上就要进入可视区了,只要我们在滚动,图片就会进入可视区,那么就需要请求资源了。也就是说,在bound.top<=clientHeight时,图片是在可视区域内的。

    经过上面的思考,我们大致明白了如何实现,那么就来编写我们的代码了吧:

    只需要把我们的js代码换成如下即可:

     var imgs = document.querySelectorAll('img');
    
            //用来判断bound.top<=clientHeight的函数,返回一个bool值
            function isIn(el) {
                var bound = el.getBoundingClientRect();
                var clientHeight = window.innerHeight;
                return bound.top <= clientHeight;
            } 
            //检查图片是否在可视区内,如果不在,则加载
            function check() {
                Array.from(imgs).forEach(function(el){
                    if(isIn(el)){
                        loadImg(el);
                    }
                })
            }
            function loadImg(el) {
                if(!el.src){
                    var source = el.dataset.src;
                    el.src = source;
                }
            }
            window.onload = window.onscroll = function () { //onscroll()在滚动条滚动的时候触发
                check();
            }
    

    总结:懒加载其实就两个重点,一个是元素到各个边距的距离,二个就是判断元素是否在可视区域内。

    展开全文
  • spring的懒加载,有什么作用?

    千次阅读 2018-04-14 08:18:01
    来设置是否为懒加载模式,懒加载意思就是说是否在spring容器加载的时候将bean加载到容器中。在没有设置的情况下,默认false的,就是说不使用懒加载模式。至于为什么要用懒加载呢,就是当我们要访问的数据量...
  • 图片懒加载、预加载

    2019-09-09 12:28:50
    懒加载是一种网页性能优化的方式,它能极大的提升用户体验。就比如说图片,图片是一直影响网页性能的元凶。如果每次进入页面就请求所有的图片资源,那么有可能等图片加载完,用户早已经走了。所以,我们需要懒加载,...
  • spring 懒加载

    2019-09-22 15:54:37
    来设置是否为懒加载模式,懒加载意思就是说是否在spring容器加载的时候将bean加载到容器中。在没有设置的情况下,默认false的,就是说不使用懒加载模式。 至于为什么要用懒加载呢,就是当...
  • 站长素材图片数据的爬取: 老规矩:先判断页面数据是否是ajax生成,在局部搜索发现不是动态加载的数据。...图片懒加载是什么意思呢,就是不在用户可视化范围内的图片前端src标签统统是src2,当然这个可以不是src...
  • 原生图片懒加载

    2020-09-08 22:07:19
    学习目标: 掌握原生图片懒加载 学习内容: 1、 掌握原生图片懒加载 2、 分析js代码 3、 搜索熟悉陌生单词用法 4、 掌握懒加载 ...懒加载是一种优化网页性能的一种方式,它极大的提高了用户的体验。举
  • 延迟加载(懒加载

    千次阅读 2018-11-15 11:30:19
    什么是延迟加载(懒加载) ** resultMap中的association和collection标签具有延迟加载的功能。 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息。需要关联信息时再去按需加载关联信息。这样会大大...
  • 图片懒加载实现原理

    2020-08-20 20:14:28
    懒加载是一种网页性能优化的方式,它能极大的提升用户体验。就比如说图片,图片一直是影响网页性能的主要元凶,现在一张图片超过几兆已经是很经常的事了。如果每次进入页面就请求所有的图片资源,那么可能等图片加载...
  • 如何实现图片懒加载

    2021-03-19 13:24:43
    懒加载是一种网页性能优化的方式,它能极大的提升用户体验。就比如说图片,图片一直是影响网页性能的主要元凶,现在一张图片超过几兆已经是很经常的事了。如果每次进入页面就请求所有的图片资源,那么可能等图片加载...
  • 什么是懒加载? 懒加载突出一个“懒”字,懒就是拖延迟的意思...懒加载是一种网页性能优化的方式,它能极大的提升用户体验。就比如说图片,图片一直是影响网页性能的主要元凶,现在一张图片超过几兆已经是很经常的事...
  • mybatis的懒加载

    2020-07-22 15:34:14
    mybatis的延迟加载(懒加载),是什么意思呢? 举个例子:查询用户表的时候,需要查询用户的衣服信息(1对1关联。)但是我查询的结果只会用到用户表本身的字段。那这种时候,mybatis就不会去真的查询衣服表的数据,...
  • 文章目录介绍图片懒加载什么是懒加载?为什么要懒加载?懒加载的实现原理?使用vue-lazyload完成图片懒加载通过npm安装...懒加载是一种网页性能优化的方式,它能极大的提升用户体验。就比如说图片,图片一直是影响网
  • 懒加载是一种优化网页性能的一种方式,它极大的提高了用户的体验。举个栗子:就拿图片来说,一个网站,单个网页的页面上“图片”是构成页面主体的一个极大部分,但是在现在一张图片的大小超过几兆是一件很正常的事,...
  • 懒加载是一种优化网页性能的一种方式,它极大的提高了用户的体验。举个栗子:就拿图片来说,一个网站,单个网页的页面上“图片”是构成页面主体的一个极大部分,但是在现在一张图片的大小超过几兆是一件很正常的事,...
  • 懒加载是一种网页性能优化的方式,它能极大的提升用户体验。就比如说图片,图片一直是影响网页性能的主要元凶,现在一张图片超过几兆已经是很经常的事了。如果每次进入页面就请求所有的图片资源,那么可能等图片加载...
  • 1、什么是懒加载 意思就是:需要用到的时候才去加载这个资源,也就是 延时加载 2、为什么要使用懒加载 ​ 当进去某个页面时(比如淘宝之类的推荐页面),会有许多的图片等等资源,而这时我们不去翻动看下面的数据,...
  • 原生js图片懒加载是真对项目页面图片过多,加载慢,增强用户体验感的最佳解决方案 什么是懒加载? 懒加载顾名思义突出一个“懒”字,懒字就是拖延的意思,说白就是延迟加载。比如我们进入一个新的页面进行加载的时候...
  • .NET Lazy懒加载Demo(技术拓展) 最新在朋友那里看到有问这个Lazy什么用的,深思熟虑以后决定写一篇记录博客,记录以往的学习成果- 概念:延时加载(延时实例化或延时初始化)重点延时,用时加载。意思是对象在...
  • 首先,什么是懒加载,从字面意思就可以简单的理解为不到用时就不去加载,对于页面中的元素,我们可以这样理解:只有当滚动页面内容使得本元素进入到浏览器视窗时(或者稍微提前,需给定提前量),我们才开始加载图片...
  • 之前讨论了webpack的hash与...在进入正文之前先解释一下所谓的常规单页面和复杂多页面是什么意思。这两个并非专业术语,而是笔者实在想不出更恰当的说法了,见谅。1. 项目类型1.1 常规单页面项目常规单页面符合...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

懒加载是什么意思