讲师中心 微信公众号
AI工具推荐 视频效率加速

嵌入app的h5与普通的h5有何不同?

小强大大_2145

小强大大_2145

发布时间:2016-06-06 20:08:27

|

2365人浏览过

|

来源于php中文网

原创

那里有不同?区别大不大?

我要做一个H5页面嵌入到app里,但我不会写于是我就用抓包工具抓取了一个类似的页面,我想把我的程序加入进去但不知道如何去改动,好多js代码看不懂,希望有大神帮忙看下代码
是做一个签到页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport", content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>签到</title>
<link rel="stylesheet" href="css/index.css">
<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="js/utils.js"></script>
<script type="text/javascript" src="js/collect.js"></script>
</head>
<body>
<div class="header">
<span class="sign"><img  class="sign_img" src="img/sign_img.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ><b class="sign_in">签到</b></span>
<span class="header_middle">
<p class="header_wen1"></p>
<p class="header_wen2">连续签到有更多惊喜哦</p>
</span>
<div class="calendar_out">
<img  class="line" src="img/line.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" >
<dl data-index=0>
<dt class="circle circle_gray"><b class="point"></b><img  class="yes yes_gray" src="img/gray_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=1>
<dt class="circle current circle_now"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days current">...</dd>
</dl>
<dl data-index=2>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=3>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=4>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=5>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=6>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
</div>
</div>
<div class="content">
<span class="prize_list">昨日获奖名单></span>
<div class="content_down">
<div class="box_out">
<span class="sign_box">
<img  class="sign_qb" src="img/sign_qb.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" >
</span>
<img  class="sign_img2" src="img/sign.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" >
</div>
<span class="integral_out"><b class="integral sign_total">...</b>积分</span>
</div>
<span class="integral_pool">积分奖池<b class="men_num sign_users">...</b>人贡献<i class="point_num sign_total">...</i>分</span>
</div>
<div class="rule">
<p>签到规则</p>
<span class="line2"></span>
<ul>
<li>1.<b class="tb">签到和签到分享</b>可以获得积分;</li>
<li>2.坚持每日签到和签到分享可以获得更更丰厚的奖励;</li>
<li>3.漏签会使签到进度重置,坚持签到奖励更丰富!</li>
<li>4.签到人数每增加1人,积分奖池就增加1积分;</li>
<li>5.次日0:00从当日签到的所有用户中<b class="tb">随机抽取1000名</b>中奖用户,平分积分奖池的奖励。</li>
<li>6.活动最终解释权归人人夺宝团队所有。
<li>7.温馨提示:叫上小伙伴一起签到,有更多奖励哦!</li>
</ul>
</div>
<div class="popup_out">
<div class="popup_in">
<div class="popup">
<p class="popup_w">签到分享可以获得<br>签到积分<b class="pop_tb">+<i class="pop_tb_in">5</i></b>的机会</p>
<div class="pop_btn">
<span class="pop_sign_btn">我要签到</span>
<span class="share">签到分享</span>
</div>
<img  class="close" src="img/close.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" >
</div>
</div>
</div>
</body>
<script type="text/javascript">
var pop_sign = $('.pop_sign_btn')
var btn_sign = $('.sign');
var total_point = 0;
var total_user = 0;
var times = 0;
var sign_list = [];

$('.close').click(function(){
  $(this).parent().parent().parent().hide();
})
$(function() {
  trackEvent('签到', '首页');
  collectDisplay('bd35');
  nativeHttpRequest('GET', getHostApi('/sign/info'), {}, '', 'loadSignInfo');

  $('.prize_list').click(function() {
    openPage('签到', 'GET', getHostPage('/activity/sign/list.html'), {});
  });
});
pop_sign.click(signClick);
$('.share').click(share)
function popup(){
  $('.popup_out').show();  
}
function loadSignInfo(s, res) {
  //alert(res)
  res = JSON.parse(res);
  if (res.code == 0) {
    data = res.data;
    times = data.times;
    sign_list = data.sign_list;
    if (data.signed) {
      btn_sign.addClass('current').html('已签到' + data.times + '天');
      $('.circle_now').addClass('current2');
      $('.circle_now .yes_hide').show();
      $('.header_wen1').html('明日签到可领<b class="get_num">' + data.sign_list[2] + '</b>积分');
      $('.share').addClass('current');
    } else {
        btn_sign.click(popup)
      $('.header_wen1').html('今日签到可领<b class="get_num">' + data.sign_list[1] + '</b>积分');
    }
    btn_sign.show();

    // fill total info
    total_point = parseInt(data.sign_total);
    total_user = parseInt(data.sign_user);
    update_info();

    var today = new Date(data.today.replace(/-/g, '/')); 
    $.each(data.sign_list, function(index, point) {
      var yesterday_signed = 0;
      if (index == 0 && data.yesterday) {
        yesterday_signed = 1;
      }
      var tmp_obj = $('.calendar_out dl[data-index=' + index + ']');
      tmp_obj.find('.point').text('+' + point);
      if (!yesterday_signed) {
        tmp_obj.find('.circle img').removeClass('yes_gray').addClass('yes_hide');
      }
      // fill date
      if (index == 1) {
        tmp_obj.find('.days').text('今日');
      } else if (index == 2) {
        tmp_obj.find('.days').text('明日');
      } else {
        tmp_obj.find('.days').text(get_day(today, index - 1));
      }
    });
  }
}

function share() {
    //$('.share').unbind();
    $('.popup_out').hide();
    trackEvent('签到', '分享点击');
    setTimeout(function() {
        var title = '你的好友送你一份免费大礼,最高价值888!';
        var body = title;
        var url = 'http://dl.zhuquzhou.com/v20I/index.html?channel_id=gr2w&s=' + Math.random();
        var img_url = 'http://7xja1h.com2.z0.glb.qiniucdn.com/1460969656';
        var callback_url = 'activity/systime';
        var callback_func = 'share_callback';
        var platform = getPlatform();
        if (platform == 'android') {
            window.android_js.share_sdk(title, body, url, img_url, getHostApi('/' + callback_url), callback_func, 'wechat_moments', 'wechat_moments');//安卓的分享路径
        } else if (platform == 'ios') {//苹果分享路径
            window.location.href = ("ios://"+encodeURIComponent(JSON.stringify({"cmd":"share","title":title,"shareurl":url,"iconurl":img_url,"msg":body, "staturl": callback_url, 'callback':callback_func, 'show_item':'wechat_moments', 'hide_items':'wechat_moments'})));
        }
    }, 300);
}

function share_callback(status) {//分享收回
  if (status == 1) {
    // success
    trackEvent('签到', '分享成功');
    collectShare('bd35');
    nativeHttpRequest('GET', getHostApi('/sign/sign'), {'shared':'1'}, '提交中....', 'checkSign_show');
   //location.reload(true);
  } else {
    nativeAlert('提示', '分享失败');
    $('.share').click(signClick_share);
  }
}

function update_info() {
  $('.sign_total').text(total_point);
  $('.sign_users').text(total_user);
}

function get_day(today, days) {
  var new_day = new Date(today.getTime() + (days * 24 * 60 * 60 * 1000));
  return fill_date(new_day.getMonth() + 1) + '.' + fill_date(new_day.getDate());
}

function fill_date(number) {
  if (number < 10) {
    return '0' + number;
  }
  return number.toString();
}

function signClick() {
  $('.popup_out').hide();
  btn_sign.unbind('click');
 // $('.share').unbind();
  collectClick('bd35');
  //share();
  //trackEvent('签到', '分享成功');
  nativeHttpRequest('GET', getHostApi('/sign/sign'), {}, '提交中....', 'checkSign');
}

function checkSign(s, res) {
  //alert(res);
  res = JSON.parse(res);
  if (res.code == 0) {
    btn_sign.unbind('click');
    collectJoin('bd35');
    var points = res.data.points;
    btn_sign.addClass('current').html('已签到' + (times + 1) + '天');
    $('.header_wen1').html('明日签到可领<b class="get_num">' + sign_list[2] + '</b>积分');
    $('.circle_now').addClass('current2');
    $('.circle_now .yes_hide').show();  
    $('.sign_qb').animate({'top':'103%'},1000,function(){  
      $('.sign_qb').css({'top':'-110%'});  
    });
    total_point += 1;
    total_user += 1;
    update_info();
  } else {
    nativeAlert('提示', res.msg);
    btn_sign.click(popup);
  }
}
function checkSign_show(s, res) {//检验签到展示
  //alert(res);
  res = JSON.parse(res);//解析json
  if (res.code == 0) {
    btn_sign.unbind('click');
    collectJoin('bd35');
    var points = res.data.points;
    btn_sign.addClass('current').html('已签到' + (times + 1) + '天');
    $('.header_wen1').html('明日签到可领<b class="get_num">' + sign_list[2] + '</b>积分');
    $('.circle_now').addClass('current2');
    $('.circle_now .yes_hide').show();  
    $('.sign_qb').animate({'top':'103%'},1000,function(){  
      $('.sign_qb').css({'top':'-110%'});  
    });
    total_point += 1;
    total_user += 1;
    update_info();
  } else {
   // alert(JSON.stringify(res.msg))
    nativeAlert('提示', res.msg);
    btn_sign.click(popup);
  }
}

</script>
</html>

嵌入app的h5与普通的h5有何不同?
嵌入app的h5与普通的h5有何不同?

回复内容:

那里有不同?区别大不大?

我要做一个H5页面嵌入到app里,但我不会写于是我就用抓包工具抓取了一个类似的页面,我想把我的程序加入进去但不知道如何去改动,好多js代码看不懂,希望有大神帮忙看下代码
是做一个签到页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport", content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>签到</title>
<link rel="stylesheet" href="css/index.css">
<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="js/utils.js"></script>
<script type="text/javascript" src="js/collect.js"></script>
</head>
<body>
<div class="header">
<span class="sign"><img  class="sign_img" src="img/sign_img.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ><b class="sign_in">签到</b></span>
<span class="header_middle">
<p class="header_wen1"></p>
<p class="header_wen2">连续签到有更多惊喜哦</p>
</span>
<div class="calendar_out">
<img  class="line" src="img/line.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" >
<dl data-index=0>
<dt class="circle circle_gray"><b class="point"></b><img  class="yes yes_gray" src="img/gray_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=1>
<dt class="circle current circle_now"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days current">...</dd>
</dl>
<dl data-index=2>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=3>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=4>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=5>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
<dl data-index=6>
<dt class="circle"><b class="point"></b><img  class="yes yes_hide" src="img/green_yes.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" ></dt>
<dd class="days">...</dd>
</dl>
</div>
</div>
<div class="content">
<span class="prize_list">昨日获奖名单></span>
<div class="content_down">
<div class="box_out">
<span class="sign_box">
<img  class="sign_qb" src="img/sign_qb.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" >
</span>
<img  class="sign_img2" src="img/sign.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" >
</div>
<span class="integral_out"><b class="integral sign_total">...</b>积分</span>
</div>
<span class="integral_pool">积分奖池<b class="men_num sign_users">...</b>人贡献<i class="point_num sign_total">...</i>分</span>
</div>
<div class="rule">
<p>签到规则</p>
<span class="line2"></span>
<ul>
<li>1.<b class="tb">签到和签到分享</b>可以获得积分;</li>
<li>2.坚持每日签到和签到分享可以获得更更丰厚的奖励;</li>
<li>3.漏签会使签到进度重置,坚持签到奖励更丰富!</li>
<li>4.签到人数每增加1人,积分奖池就增加1积分;</li>
<li>5.次日0:00从当日签到的所有用户中<b class="tb">随机抽取1000名</b>中奖用户,平分积分奖池的奖励。</li>
<li>6.活动最终解释权归人人夺宝团队所有。
<li>7.温馨提示:叫上小伙伴一起签到,有更多奖励哦!</li>
</ul>
</div>
<div class="popup_out">
<div class="popup_in">
<div class="popup">
<p class="popup_w">签到分享可以获得<br>签到积分<b class="pop_tb">+<i class="pop_tb_in">5</i></b>的机会</p>
<div class="pop_btn">
<span class="pop_sign_btn">我要签到</span>
<span class="share">签到分享</span>
</div>
<img  class="close" src="img/close.png"    style="max-width:90%" alt="嵌入app的h5与普通的h5有何不同?" >
</div>
</div>
</div>
</body>
<script type="text/javascript">
var pop_sign = $('.pop_sign_btn')
var btn_sign = $('.sign');
var total_point = 0;
var total_user = 0;
var times = 0;
var sign_list = [];

$('.close').click(function(){
  $(this).parent().parent().parent().hide();
})
$(function() {
  trackEvent('签到', '首页');
  collectDisplay('bd35');
  nativeHttpRequest('GET', getHostApi('/sign/info'), {}, '', 'loadSignInfo');

  $('.prize_list').click(function() {
    openPage('签到', 'GET', getHostPage('/activity/sign/list.html'), {});
  });
});
pop_sign.click(signClick);
$('.share').click(share)
function popup(){
  $('.popup_out').show();  
}
function loadSignInfo(s, res) {
  //alert(res)
  res = JSON.parse(res);
  if (res.code == 0) {
    data = res.data;
    times = data.times;
    sign_list = data.sign_list;
    if (data.signed) {
      btn_sign.addClass('current').html('已签到' + data.times + '天');
      $('.circle_now').addClass('current2');
      $('.circle_now .yes_hide').show();
      $('.header_wen1').html('明日签到可领<b class="get_num">' + data.sign_list[2] + '</b>积分');
      $('.share').addClass('current');
    } else {
        btn_sign.click(popup)
      $('.header_wen1').html('今日签到可领<b class="get_num">' + data.sign_list[1] + '</b>积分');
    }
    btn_sign.show();

    // fill total info
    total_point = parseInt(data.sign_total);
    total_user = parseInt(data.sign_user);
    update_info();

    var today = new Date(data.today.replace(/-/g, '/')); 
    $.each(data.sign_list, function(index, point) {
      var yesterday_signed = 0;
      if (index == 0 && data.yesterday) {
        yesterday_signed = 1;
      }
      var tmp_obj = $('.calendar_out dl[data-index=' + index + ']');
      tmp_obj.find('.point').text('+' + point);
      if (!yesterday_signed) {
        tmp_obj.find('.circle img').removeClass('yes_gray').addClass('yes_hide');
      }
      // fill date
      if (index == 1) {
        tmp_obj.find('.days').text('今日');
      } else if (index == 2) {
        tmp_obj.find('.days').text('明日');
      } else {
        tmp_obj.find('.days').text(get_day(today, index - 1));
      }
    });
  }
}

function share() {
    //$('.share').unbind();
    $('.popup_out').hide();
    trackEvent('签到', '分享点击');
    setTimeout(function() {
        var title = '你的好友送你一份免费大礼,最高价值888!';
        var body = title;
        var url = 'http://dl.zhuquzhou.com/v20I/index.html?channel_id=gr2w&s=' + Math.random();
        var img_url = 'http://7xja1h.com2.z0.glb.qiniucdn.com/1460969656';
        var callback_url = 'activity/systime';
        var callback_func = 'share_callback';
        var platform = getPlatform();
        if (platform == 'android') {
            window.android_js.share_sdk(title, body, url, img_url, getHostApi('/' + callback_url), callback_func, 'wechat_moments', 'wechat_moments');//安卓的分享路径
        } else if (platform == 'ios') {//苹果分享路径
            window.location.href = ("ios://"+encodeURIComponent(JSON.stringify({"cmd":"share","title":title,"shareurl":url,"iconurl":img_url,"msg":body, "staturl": callback_url, 'callback':callback_func, 'show_item':'wechat_moments', 'hide_items':'wechat_moments'})));
        }
    }, 300);
}

function share_callback(status) {//分享收回
  if (status == 1) {
    // success
    trackEvent('签到', '分享成功');
    collectShare('bd35');
    nativeHttpRequest('GET', getHostApi('/sign/sign'), {'shared':'1'}, '提交中....', 'checkSign_show');
   //location.reload(true);
  } else {
    nativeAlert('提示', '分享失败');
    $('.share').click(signClick_share);
  }
}

function update_info() {
  $('.sign_total').text(total_point);
  $('.sign_users').text(total_user);
}

function get_day(today, days) {
  var new_day = new Date(today.getTime() + (days * 24 * 60 * 60 * 1000));
  return fill_date(new_day.getMonth() + 1) + '.' + fill_date(new_day.getDate());
}

function fill_date(number) {
  if (number < 10) {
    return '0' + number;
  }
  return number.toString();
}

function signClick() {
  $('.popup_out').hide();
  btn_sign.unbind('click');
 // $('.share').unbind();
  collectClick('bd35');
  //share();
  //trackEvent('签到', '分享成功');
  nativeHttpRequest('GET', getHostApi('/sign/sign'), {}, '提交中....', 'checkSign');
}

function checkSign(s, res) {
  //alert(res);
  res = JSON.parse(res);
  if (res.code == 0) {
    btn_sign.unbind('click');
    collectJoin('bd35');
    var points = res.data.points;
    btn_sign.addClass('current').html('已签到' + (times + 1) + '天');
    $('.header_wen1').html('明日签到可领<b class="get_num">' + sign_list[2] + '</b>积分');
    $('.circle_now').addClass('current2');
    $('.circle_now .yes_hide').show();  
    $('.sign_qb').animate({'top':'103%'},1000,function(){  
      $('.sign_qb').css({'top':'-110%'});  
    });
    total_point += 1;
    total_user += 1;
    update_info();
  } else {
    nativeAlert('提示', res.msg);
    btn_sign.click(popup);
  }
}
function checkSign_show(s, res) {//检验签到展示
  //alert(res);
  res = JSON.parse(res);//解析json
  if (res.code == 0) {
    btn_sign.unbind('click');
    collectJoin('bd35');
    var points = res.data.points;
    btn_sign.addClass('current').html('已签到' + (times + 1) + '天');
    $('.header_wen1').html('明日签到可领<b class="get_num">' + sign_list[2] + '</b>积分');
    $('.circle_now').addClass('current2');
    $('.circle_now .yes_hide').show();  
    $('.sign_qb').animate({'top':'103%'},1000,function(){  
      $('.sign_qb').css({'top':'-110%'});  
    });
    total_point += 1;
    total_user += 1;
    update_info();
  } else {
   // alert(JSON.stringify(res.msg))
    nativeAlert('提示', res.msg);
    btn_sign.click(popup);
  }
}

</script>
</html>

嵌入app的h5与普通的h5有何不同?
嵌入app的h5与普通的h5有何不同?

pc 端大小单位平常是用px
而安卓用dp,苹果用pt

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载

pc有dblclick
安卓苹果有ontouch

只要运行时是WebView,HTML5都是相同的吧.
我打包的基于WebView+PHP(ARM)用于开发App的PHPDroid.
WebView相当于浏览器,PHP作为HTTP服务器,B/S架构,
开发App,就像用PHP开发WAP手机站一样简单.

1,受限区别在于webview或者crosswalk之中的一些内建功能比如:alert,conform之类浏览器的控件式可以定义的;
2,对于一些事件不再继承与系统的安全设置:比如,硬件加速拉,存储cookie拉...在浏览器中是禁用的;但是嵌入的可以定义webview或者crosswalk初始时启用的;
3,还有对新标准,可能系统内建的webview效率很差或者不流畅,嵌入的可以做到不使用内建的webview,而使用自构建的chrome内核的框架来承载APP;
4,最重要的是,如果是混合的APP,基本就是自构的一个浏览器,基本可以将原H5的webapp的一些实现费力的功能转移到实现更好的原声代码中;比如:图标为松鼠的一个浏览器,你可以认为他加载了一个H5的webapp之后,就是一个混合APP,有了一些比如:生成当前adress的二维码功能,分享页面(APP级别的非WEB级别的)等功能;这些功能在web上实现比较费力、但是在原生代码上实现却是比较成熟完美;
5:大致上,你可以认为:混合的H5上的web页面,要比独立实现的web页面上,少了很多代码(当然,是web代码),但是这些功能一般是在原生代码上实现的;【可以想象一下:web上的“分享到微信”和在微信中打开的页面上的“分享到微信”,这两部分功能一个web实现,一个原生实现】

喝多了,话多语碎,抱歉...

1、对于这个签到页面,并没有什么不同,差异只是页面布局问题。

2、这样的签到功能的小页面可以直接使用webview loadURL加载,只需要把h5部署到web服务器上就行;或者直接打包到app里面(但是这样更新就不容易)。

3、签到页面可以让前端写,当然你也可以自己写。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

相关专题

更多
Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

0

2026.11.03

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

0

2026.11.03

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

0

2026.11.03

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

0

2026.11.03

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

0

2026.11.03

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

0

2026.11.03

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

20

2026.11.02

Uvicorn使用教程
Uvicorn使用教程

本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

40

2026.11.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 11万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 19.5万人学习

前端开发(基础+实战项目合集)
前端开发(基础+实战项目合集)

共60课时 | 6.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn