wap2app项目创建--保姆级教程(中篇)

499 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

在html5+js开发的页面全部运用到app上,公司使用了wap2app框架来快速实现,而我成为了公司开发app核心人物,一步一步踩坑,才有了这份保姆级攻略

项目创建后,有关 wap2app 项目脚本文件配置如下:

1.1 sitemap.json

注意: 由于后端全权做登录拦截操作,我们的应用入口页为中转页而非真正的首页,我们需要在loading页中获取clientid作为长期登录的凭证,并跳转至首页,且App是自定义底部导航栏,要注意主页面没有侧滑或返回的操作

// 在pages数组当中配置主页面和公共页面,主页面无返回或侧滑操作,pages为首页的webviewId中进行配置,需要什么页面为主页面,则直接在matchUrls中添加一个href
// 公共页面为新开webview,有点击返回和侧滑返回上一页面的操作,在webviewId为common的matchUrls中配置剔除主页面(根据规则进行配置)
// 请进行如下配置
// 假设:项目域名为:aaa.bbb.com
"pages": [
  {
    "webviewId": "__W2A__aaa.bbb.com", //自动生成!!!首页,用于设置主页面,app中包括主页面:loading页、首页、工作台、个人中心、看板、登录页、退出登录的中转页
    "matchUrls": [
      {
        "href": "https://aaa.bbb.com/index/login/loading.html" // 如此示例,请写全路径!
      },
      {
        "href": "https://aaa.bbb.com/index/login/index.html" // 如此示例,请写全路径!
      }
    ]
  },
  {
    // 自己配置!!!此为公共页配置,pathname中需剔除主页面,其他页面则被app认定为子页面
    "webviewId": "common",
    "matchUrls": [
      // 剔除 loading页、首页、工作台、看板、个人中心、登录页、登录中转页,如果需要添加新的主页,需要同时在上方添加主页并在此剔除主页
      "pathname": "R:/(?!\/wapapp\/(index\/index|workbench\/index|personal\/index)|\/index\/login\/(loading|index)|\/user\/member\/out).*"
    ]
  }
]
// 由于App无需原生导航栏
"webviewParameter": {
    "titleNView": false,
    "statusbar": {
      //状态条背景色,
      //首页不使用原生导航条,颜色值建议和global->webviewParameter->titleNView->backgroundColor颜色值保持一致
      //若首页启用了原生导航条,则建议将首页的statusbar配置为false,这样状态条可以和原生导航条背景色保持一致;
      "background": "#ffffff",
      "style": "dark" //系统状态栏样式(前景色)
    }
}

1.2 app.js

调试代码: debug: true,如果需要调试设置为true,打包代码请改为false

onLaunch:里面写了消息推送的代码,分专篇讲解

onShow、onHide是两个生命周期,分别是:

  • onShow: 当wap2app启动,或从后台进入前台显示,会触发 onShow
  • onHide: 当wap2app从前台进入后台,会触发 onHide

接通角标数字值的接口还写在了client_index.html中,注意一定要同时修改!!!!

// 这里写了App角标数值的获取,接口是全路径,注意根据不同App进行修改,在client_index.html中也有写,注意同步!
onHide: function() {
  console.log('onhide');
  // 获取角标数字值并设置
  if(plus.storage.getItem("isLogin") === "1") {
    wap2app.ajax.post("http://aaa.bbb.com/wapapp/index/index.html", {}, function(rsp) {
      if(rsp.status === 1) {
        plus.runtime.setBadgeNumber(rsp.data.counts);
      }             
    });
  } else {
    plus.runtime.setBadgeNumber(0);
  }
}

1.3 client_index.html

此脚本当中有写浏览器打开App并跳转指定页面的逻辑,具体逻辑会专篇详细讲解。

1.4 error.html

跳转的路径为应用入口页路径

// 直接写一个中转页面
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
            <script>
                // 改为应用入口页地址
                window.location.href = "https://aaa.bbb.com/index/login/loading.html"
                // event.preventDefault();
            </script>
	</body>
</html>

模块及脚本的配置就差不多了,接下来最后一篇会讲解如何打包wap2app项目,学完可以轻松上手!