小程序宿主环境

大约 4 分钟

小程序宿主环境

我们称给小程序所提供运行环境的为宿主环境。小程序借助宿主环境提供的能力,可以完成许多普通网页无法完成的功能。

目前浙江农信小程序的宿主环境有 丰收互联、企业管家、农合通。仅丰收互联提供三方小程序运行功能,其他的宿主环境仅提供给农信开发者使用。
使用丰收互联小程序功能请访问丰收互联小程序门户open in new window

程序与页面

在客户端在打开小程序之前,会把整个小程序的代码包下载到本地。 紧接着通过 app.json 的 pages 字段就可以知道你当前小程序的所有页面路径:

提示

app.json 文件通过 build:mip 命令根据页面自动生成。

{
  "pages": ["pages/index", "pages/about"]
}

这个配置说明在 demo 项目定义了两个页面,分别位于 pages/index 和 pages/about。而写在 pages 字段的第一个页面就是这个小程序的首页(打开小程序看到的第一个页面)。

于是客户端就把首页的代码装载进来,通过小程序 web 容器渲染出这个首页。

接下来我们简单看看小程序的一个页面是怎么写的。

打开 pages/About.vue 文件。客户端会根据文件里的<config>标签里的 json 配置生成一个页面,顶部的颜色和文字你都可以在这个 json 里边定义好。紧接着客户端就会装载这个页面并渲染。

<template>
  <van-cell-group>
    <van-cell title="单元格" value="内容" />
    <van-cell check-reduce title="单元格" value="内容" label="描述信息" />
  </van-cell-group>
</template>
<script>
export default createPage({});
</script>
<config type="json">
{
  "navigationBarTitleText": "About"
}
</config>

createPage是一个页面构造器,这个构造器就生成了一个页面。在生成页面的时候小程序框架会把客户端的生命周期和小程序的生命周期连接起来。小程序沿用的 vue 的生命周期函数,create、mounted、activated、deactivated、beforeUnmounted 等。可以跟开发 vue 页面一样处理你的代码逻辑。 有关于 createPage 构造器更多详细的文档参考注册页面

组件

小程序集成了开源组件库 vant-ui,并且在 vant-ui 基础上开发了符合浙江农信小程序业务场景的组件库。提供了丰富的基础组件给开发者,开发者可以像搭积木一样,组合各种组件拼合成自己的小程序。当然开发者也可以自己集成其他的组件库。

就像 HTML 的 div, p 等标签一样,在小程序里边,你只需要在 <template> 写上对应的组件标签名字就可以把该组件显示在界面上,例如,你需要在界面上显示 NavBar 导航栏,你只需要这样写即可:

<template>
  <van-nav-bar> </van-nav-bar>
</template>

使用组件的时候,还可以通过属性传递值给组件,让组件可以以不同的状态去展现,例如,我们希望导航栏显示的标题是“demo”,那么你需要声明导航栏的 title 属性:

<template>
  <van-nav-bar title="demo"> </van-nav-bar>
</template>

组件的内部行为也会通过事件的形式让开发者可以感知,例如用户点击了导航栏左边的返回按钮,你可以在 <script>methods 中编写 handlerClickRight 函数来处理:

<template>
  <van-nav-bar title="demo" @click-left="handlerClickRight"> </van-nav-bar>
</template>

当然你也可以通过 style 或者 class 来控制组件的外层样式,以便适应你的界面宽度高度等等。

API

为了让开发者可以很方便的调起客户端提供的能力,例如获取用户信息、获取地理位置等等,小程序提供了很多 API 给开发者去使用。

要获取用户的地理位置时,只需要:

$Native.getLocation({
  type: "gcj02",
  success: (res) => {
    const latitude = res.latitude;
    const longitude = res.longitude;
    const speed = res.speed;
    const accuracy = res.accuracy;
  },
});

调用数据存储能力,只需要:

// 异步:
$Native.setStorage({
  key: "key",
  data: "value",
});

需要注意的是:多数 API 的回调都是异步,你需要处理好代码逻辑的异步问题。 更多的 API 能力见小程序的 API

通过这个章节你已经大概了解了小程序运行的一些基本概念,当你开发完一个小程序之后,你就需要发布你的小程序。在丰收互联小程序门户open in new window,你会知道发布前需要做什么准备。