整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

装上这个 App,让你的手机多出 91.596% 存

装上这个 App,让你的手机多出 91.596% 存储空间

们已经习惯了微信小程序、快应用这样轻量级 App 的存在。

它们兼顾低占用和即用即走的特点,又不失恰到好处的功能。

但面对 BAT 全家桶和无数网页时。

你可曾想过:

给淘宝安排一个快应用版?

让它的体积直接减少 98.5%!

或是刷网页像刷客户端?

以前想要实现这个目标,我们得等每年一次的系统更新或 Web 技术进步。

现在呢,只需一个 Fusion App

Fusion App 是【一个木函】(我们之前安利过的神器)作者的另一代表作。

它的作用就是将网页转化为应用。

Fusion App 发展至今已经有不少成熟的应用,无需自己动手就能使用,大家可以直接跳转到文末下载

Fusion App 的实现原理不复杂,主要是用安卓系统的原生组件代替网页组件元素,用户可以自由定制、增删这些组件。

比如去除广告弹窗、推荐位,将二级功能统一到侧边栏等。

淘宝 Fusion App 版

让网页像真的客户端一样,简洁流畅易用。

接着我们来演示下 Fusion App 网页转应用的基本操作。

以淘宝触屏版(https://h5.m.taobao.com/)为例。

淘宝触屏版

(Fusion App 中有个 「UI 模板」概念,创键一个网页转应用等于创建一个模板)

第一步,点击加号开始创建。

因为淘宝网页版以底栏为主,所以我们选择底栏模板。

第二步,创建完应用名,接着创建一个图标。

Fusion App 自带图标库,用户也可以自定义,或从手机图库中选一张喜欢的图片。

第三步,创建完图标,会有一大堆选项,这些选项都不用管。

只在网页控制中填入淘宝网页版的网址即可。

到这里我们已经完成了简版淘宝的配置工作。

如果点击右上角的「三角形」预览的话,会是这样。(Fusion App 默认效果)

第四步,显然,我们要把项目 1、项目 2 修改为淘宝底栏的样子。

如何添加呢?

切换到组件选项卡,点击项目 1,随便命一个名字。

比如我希望我的应用开头显示淘宝主页,那就叫主页。

随便选一个图标,接着填入网址。

But,网址怎么填?

在电脑上打开淘宝触屏版网址,看到这个畸形界面不要慌。

按 F12(或 Ctrl+Shift+I),点击设备切换图标即可。

这时,点击一下首页选项,将地址栏出现的网址,填写到刚才的空缺中。

效果如图,项目 2、3、4 可依此类推。

如果你不需要那么多选项,长按项目即可删除。

第五步,到这里我们已经完成一大半工作,接着在属性栏调整下应用配色就差不多了。

最后经过一些其他修改,我们就可以将应用打包出来,安装到本地。

如你所见,将之安装到本地后,能够与官方原版共存。

一条尾巴

上述案例其实比较基础,只能起到入门作用。

限于篇幅,删除美化等进阶教程的我们放在回复中,感兴趣的机友们可以尝试。

虽然使用 Fusion App 的确要花点时间, 但我们能想到的,其他开发者也早就做到了。

比如文章开头的 Fusion App 版淘宝就是某位热心开发者的作品。

此外还有小智工具箱这种无所不能的应用

更不要说 Fusion App 贴吧、微博等等……

好啦,所有提及应用已经打包完成,咱们回复见~

微信搜索【锋潮评测室】

后台回复 300 下载安装包

移动互联网时代,拥有一款专属APP已经成为许多企业和个人的必备选择。但是,开发一款原生APP往往需要大量的时间和资源投入。有没有一种更快速、更经济的方式来将已有的网站转化为APP呢?答案是肯定的 - 那就是网页封装APP技术。

什么是网页封装APP?

网页封装APP,也称为混合APP或WebView APP,是一种将网页内容封装到原生APP壳中的技术。这种APP本质上是在原生应用中嵌入了一个网页浏览器组件(WebView),通过这个组件来加载和显示网页内容。

网页封装APP的优势

  1. 开发成本低: 利用现有的网页资源,无需重新开发。
  2. 跨平台兼容: 一次开发,可同时适配Android和iOS平台。
  3. 更新便捷: 只需更新服务器端网页,APP内容即可自动更新。
  4. 上手简单: 对于熟悉Web开发的团队来说,学习成本较低。

    网页封装APP的步骤

    1. 准备网页: 确保您的网页适配移动设备,采用响应式设计。
    2. 选择工具: 根据项目需求选择合适的封装工具。
    3. 创建项目: 使用选定的工具创建新的APP项目。
    4. 配置WebView: 设置WebView组件,将其指向您的网页URL。
    5. 添加原生功能: 根据需要添加设备API调用,如相机、定位等。
    6. 测试优化: 在真机上测试APP,优化性能和用户体验。
    7. 打包发布: 生成安装包,发布到各大应用商店。

    注意事项

    1. 性能考虑: 网页封装APP的性能通常不如原生APP,需要注意优化。
    2. 用户体验: 要尽可能模仿原生APP的交互方式,提升用户体验。
    3. 安全性: 注意保护WebView中的数据安全,防止恶意脚本注入。
    4. 兼容性: 要考虑不同设备和系统版本的兼容性问题。

    未来趋势

    1. PWA技术: 渐进式网页应用(PWA)正在兴起,可能成为网页封装APP的有力竞争者。
    2. 跨平台框架: React Native和Flutter等框架正在不断完善,为混合开发提供更多可能。
    3. 云端封装: 一些平台开始提供在线网页转APP服务,进一步降低开发门槛。

    结语

    网页封装APP技术为企业和个人提供了一种快速、经济的方式来开发移动应用。虽然它可能在性能和用户体验上略逊于原生APP,但其低成本和快速开发的优势使其成为许多项目的理想选择。

    要用到的组件:Swiper中文网-轮播图幻灯片js插件,H5页面前端开发

    Html代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title></title>
        <script src="js/jquery-3.4.1.min.js"></script>
        <script src="js/swiper-4.5.3/js/swiper.min.js"></script>
        <link rel="stylesheet" href="js/swiper-4.5.3/css/swiper.min.css" rel="external nofollow" >
        <link rel="stylesheet" href="css/style.css">
    
    </head>
    <body>
        <div class="swiper-container box">
            <div class="swiper-wrapper main-timeline">
                <div class="swiper-slide timeline fd-active-line">
                  <a href="javascript:void(0);" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="timeline-content">
                    <div class="timeline-year">
                      <span>2022</span>
                    </div>
                  </a>
                  <div class="show_timeline"></div>
                </div>
                <div class="swiper-slide timeline">
                  <a href="javascript:void(0);" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="timeline-content">
                    <div class="timeline-year">
                      <span>2021</span>
                    </div>
                  </a>
                  <div class="show_timeline"></div>
                </div>
                <div class="swiper-slide timeline">
                  <a href="javascript:void(0);" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="timeline-content">
                    <div class="timeline-year">
                      <span>2020</span>
                    </div>
                  </a>
                  <div class="show_timeline"></div>
                </div>
                <div class="swiper-slide timeline">
                  <a href="javascript:void(0);" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="timeline-content">
                    <div class="timeline-year">
                      <span>2019</span>
                    </div>
                  </a>
                  <div class="show_timeline"></div>
                </div>
                <div class="swiper-slide timeline">
                  <a href="javascript:void(0);" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="timeline-content">
                    <div class="timeline-year">
                      <span>2018</span>
                    </div>
                  </a>
                  <div class="show_timeline"></div>
                </div>
                <div class="swiper-slide timeline">
                  <a href="javascript:void(0);" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="timeline-content">
                    <div class="timeline-year">
                      <span>2017</span>
                    </div>
                  </a>
                  <div class="show_timeline"></div>
                </div>
              </div>
            </div>
    
            <ul class="event_list">
                <div>
                  <h3 id="2022">2022</h3>
                  <img src="images/sl01.PNG" alt="">
                </div>
                <div style="display: none;">
                  <h3 id="2021">2021</h3>
                  <img src="images/sl02.PNG" alt="">
                </div>
                <div style="display: none;">
                  <h3 id="2020">2020</h3>
                  <img src="images/sl03.PNG" alt="">
                </div>
                <div style="display: none;">
                  <h3 id="2019">2019</h3>
                  <img src="images/sl04.PNG" alt="">
                </div>
                <div style="display: none;">
                  <h3 id="2018">2018</h3>
                  <img src="images/sl05.PNG" alt="">
                </div>
                <div style="display: none;">
                  <h3 id="2017">2017</h3>
                  <img src="images/sl06.PNG" alt="">
                </div>
              </ul>
        </div>
    
        <script>
            $(function () {
              $(".main-timeline .timeline").click(function () {
                var target=$(this).siblings().length;
                if (target >=1) {
                  var index=$(this).index()
                  $(this).addClass('fd-active-line').siblings().removeClass('fd-active-line')
                  $(this).parent().parent().siblings('.event_list').children().eq(index).show().siblings().hide()
                }
              })
              var swiper=new Swiper('.swiper-container', {
                slidesPerView: 4,
                direction: 'vertical',
                navigation: {
                  nextEl: '.swiper-button-next',
                  prevEl: '.swiper-button-prev',
                },
                on: {
                  resize: function () {
                    swiper.changeDirection(getDirection());
                  }
                }
              });
            });
          </script>
    </body>
    </html>
    

    CSS代码:

    .page{
        width: 100%;
    }
    
    .main-timeline{
        font-family: Arial, Helvetica, sans-serif;
        width: 200px;
        position: relative;
        float: left;
    }
    
    .main-timeline:after{
        content: '';
        display: block;
        clear: both;
    }
    
    .main-timeline .timeline{
        width: 4%;
        margin: 0 50px 0 0;
        float: left;
        position: relative;
    }
    
    .main-timeline .timeline-content{
        border-radius: 15px 0 15px 15px;
        display: block;
        position: relative;
    }
    
    .main-timeline .timeline-content:hover{
        text-decoration: none;
    }
    
    .fd-active-line .timeline-content:after {
        content: '';
        background-color: #00A79B;
        height: 18px;
        width: 15px;
        position: absolute;
        right: -43px;
        top: 27px;
        /* clip-path: polygon(100% 0, 0 0, 0 100%); */
    }
    
    .main-timeline .timeline-year {
        color: #fff;
        background-color: #00A79B;
        font-size: 24px;
        font-weight: 900;
        text-align: center;
        line-height: 80px;
        height: 80px;
        width: 80px;
        border-radius: 50%;
        position: absolute;
        right: -120px;
        top: -40px;
    }
        
    .main-timeline .timeline-year:after {
        content: '';
        height: 100px;
        width: 100px;
        border: 8px solid #00A79B;
        border-left-color: transparent;
        border-radius: 50%;
        transform: translateX(-50%) translateY(-50%) rotate(-20deg);
        position: absolute;
        left: 50%;
        top: 50%;
    }
        
    .main-timeline .timeline-icon {
        color: #fff;
        background-color: #00A79B;
        font-size: 35px;
        text-align: center;
        line-height: 50px;
        height: 50px;
        width: 50px;
        border-radius: 50%;
        transform: translateY(-50%);
        position: absolute;
        top: 50%;
        left: -25px;
        transition: all 0.3s;
    }
        
    .main-timeline .title {
        color: #222;
        font-size: 20px;
        font-weight: 900;
        text-transform: uppercase;
        letter-spacing: 1px;
        margin: 0 0 7px 0;
    }
        
    .main-timeline .description {
        color: #222;
        font-size: 15px;
        letter-spacing: 1px;
        text-align: justify;
        margin: 0 0 5px;
    }
        
    
        
    .main-timeline .timeline:nth-child(even) .timeline-content:after {
        transform: rotateY(180deg);
        right: auto;
        left: 123px;
    }
        
    .main-timeline .timeline:nth-child(even) .timeline-year:after {
        transform: translateX(-50%) translateY(-50%) rotate(200deg);
    }
        
    .main-timeline .timeline:nth-child(even) .timeline-icon {
        left: auto;
        right: -25px;
    }
        
    .timeline:nth-child(4n+2) .timeline-content,
    .timeline:nth-child(4n+2) .timeline-year:after {
        border-color: #9E005D;
    }
        
    .timeline:nth-child(4n+2) .timeline-year:after {
        border-left-color: transparent;
    }
        
    .timeline:nth-child(4n+2) .timeline-content:after,
    .timeline:nth-child(4n+2) .timeline-icon,
    .timeline:nth-child(4n+2) .timeline-year {
        background-color: #9E005D;
    }
        
    .timeline:nth-child(4n+3) .timeline-content,
    .timeline:nth-child(4n+3) .timeline-year:after {
        border-color: #f24f0e;
    }
        
    .timeline:nth-child(4n+3) .timeline-year:after {
        border-left-color: transparent;
    }
        
    .timeline:nth-child(4n+3) .timeline-content:after,
    .timeline:nth-child(4n+3) .timeline-icon,
    .timeline:nth-child(4n+3) .timeline-year {
        background-color: #f24f0e;
    }
        
    .timeline:nth-child(4n+4) .timeline-content,
    .timeline:nth-child(4n+4) .timeline-year:after {
        border-color: #0870C5;
    }
        
    .timeline:nth-child(4n+4) .timeline-year:after {
        border-left-color: transparent;
    }
        
    .timeline:nth-child(4n+4) .timeline-content:after,
    .timeline:nth-child(4n+4) .timeline-icon,
    .timeline:nth-child(4n+4) .timeline-year {
        background-color: #0870C5;
    }
        
    @media screen and (max-width:767px) {
        .main-timeline:before {
          display: none;
        }
        
        .main-timeline .timeline {
          width: 100%;
          padding-top: 80px;
          padding-right: 12px;
          margin-bottom: 20px;
        }
        
        .main-timeline .timeline:nth-child(even) {
          padding-left: 10px;
          padding-top: 80px;
          margin-bottom: 20px;
        }
        
        .main-timeline .timeline-content,
        .main-timeline .main-timeline .timeline:nth-child(even) .timeline-content {
          background-color: #fff;
          padding-top: 25px;
        }
        
        .main-timeline .timeline-content:after {
          display: none;
        }
        
        .main-timeline .timeline-year {
          font-size: 24px;
          line-height: 70px;
          height: 70px;
          width: 70px;
          right: 0;
          top: -65px;
        }
        
        .main-timeline .timeline-year:after {
          display: none;
        }
        
        .main-timeline .timeline:nth-child(even) .timeline-year {
          left: 3px;
        }
    }
        
    @media screen and (max-width:567px) {
        .main-timeline .title {
          font-size: 18px;
        }
    }
        
    .swiper-container {
        width: 205px;
        height: 500px;
        float: left;
    }
        
    .swiper-slide {
        text-align: center;
        font-size: 18px;
        background: #fff;
        
        
        display: -webkit-box;
        display: -ms-flexbox;
        display: -webkit-flex;
        display: flex;
        -webkit-box-pack: center;
        -ms-flex-pack: center;
        -webkit-justify-content: center;
        justify-content: center;
        -webkit-box-align: center;
        -ms-flex-align: center;
        -webkit-align-items: center;
        align-items: center;
    }
        
    @media (max-width: 760px) {
        .swiper-button-next {
            right: 20px;
            transform: rotate(90deg);
        }
        
        .swiper-button-prev {
          left: 20px;
          transform: rotate(90deg);
        }
    }
    
    
    .event_list img {
        width: 880px;
        height: 470px;
        object-fit: cover;
    }
    
    
    .show_timeline {
        width: 3px;
        height: 100%;
        background: #a7a7a5;
        position: absolute;
        left: 82px;
        z-index: -1;
    }

    效果图: