被合并到总的数据源中，后设置的数据会覆盖前者（支持多层级的复杂对象的 deep 数据覆盖）。

首次设置数据源如：

```html
<mip-data>
  <script type="application/json">
    {
      "name": "张三",
      "age": 25
    }
  </script>
</mip-data>
<mip-data>
  <script type="application/json">
    {
      "detail": {
        "home": {
          "province": "广东",
          "city": "深圳"
        }
      }
    }
  </script>
</mip-data>
```

此时页面维护的数据源为：

```json
{
  "name": "张三",
  "age": 25,
  "detail": {
    "home": {
      "province": "广东",
      "city": "深圳"
    }
  }
}
```

如果此时在进行数据的设置：

```html
<div on="tap:MIP.setData({job:'互联网从业者',age:26,detail:{home:{city:'广州'}}})"></div>
```

此时数据源将变为：

```json
{
  "name": "张三",
  "age": 26,
  "detail": {
    "home": {
      "province": "广东",
      "city": "广州"
    }
  },
  "job": "互联网从业者"
}
```

> **注意** ：
> 在 mip-data 小节中提到：通过 `mip-data` 组件设置的数据要求符合标准的 JSON 格式。而 `setData` 方法虽然没有严格要求传 JSON 格式的对象，但是仅允许传 JSON 对象可以接受的数据，因此是不允许设置为 **function** 的。

调用 `MIP.setData` 方法修改数据既可以通过在 HTML 元素中加入事件来完成（方式是在元素中加入 `on` 属性监听事件以触发指定修改，如前面的示例所示）；也可以在组件代码中直接调用 `setData` 方法。

后者没有特殊要求，只需要开发者自行确认逻辑和数据即可。而前者的使用，对开发者的要求有两点：
1.  使用单引号来引用字符串；
2.  要修改的数据的值，如果是一个变量 `var`，需要是通过 mip-data 组件设置的数据，并且通过 `m.var` 来获取

### 支持数据表达式

开发者使用 `setData` 方法时，支持使用数据表达式来修改数据。其中包含以下两种：

#### 支持运算表达式解析

如：

```html
<mip-data>
  <script type="application/json">
    {
      "price": 20,
      "count": 2
    }
  </script>
</mip-data>
<div m-text="price"></div>
<button on="tap:MIP.setData({price: '30'})">30</button>
<button on="tap:MIP.setData({price: 30 * m.count})">30*m.count</button>
```

#### 支持 DOM 元素解析

`<mip-bind>` 支持 DOM 元素解析，在设置的数据中，可通过 DOM 变量来表示当前事件触发的源 DOM 元素，并可通过其获取元素上的属性值等，如：

```html
<mip-data>
  <script type="application/json">
    {
      "price": 20
    }
  </script>
</mip-data>
<div>
  DOM.value*m.price = <span m-text="price"></span>
</div>
<mip-form url="https://www.mipengine.org/">
  <input type='text' on="change:MIP.setData({price:DOM.value*m.price})">
</mip-form>
```
Go 1.17 Release Candidate 1 Released — The Go team took a break but now they’re back and they want you to run your production load tests on the latest version to help them perfect the final release. As is usual, you can learn more about the actual changes and features in the draft release notes.
⚠️ Go 1.16.6 and 1.15.14 have also been released to fix a certificate negotiation security vulnerability.
LiveKit: A Go Powered Server for Real Time Audio and Video — An open source infrastructure project for building and scaling realtime WebRTC powered audio and video experiences in apps. It’s new but there are already SDKs for iOS, JS, React, and Android. The Go server code.
Run Faster and Safer Than Linux with Open Source Unikernels — Run open source Go unikernels. No devops, no frameworks, no cloud lock-in. Easier than K8S. Run 2X as fast on Google. Run 3X as fast on AWS and deploy in 10s of seconds.
▶ Discussing SIV and the 'V2+ Issue' with Peter Bourgon and Tim Heckman — A technical discussion about some changes introduced by the move to modules.
How Hot Does It Get Inside a Car During a Heat Wave? — The author measured just how hot it got in his car during a recent heatwave. A nice post, with Go making an appearance in parsing the eventual data. The answer, by the way, is ridiculously hot.
There Is No 'Extreme' Fast Way to Merge Slices in Go — When you make a new slice, all elements are reset to zero to avoid “unspecified behaviors”, but it comes at a cost.
Creating the Golfcart Programming Language — How a developer approached implementing his own toy programming language with Go.
Extend Your Go App with Embedded WebAssembly Functions in WasmEdge — WasmEdge is a CNCF hosted library, which is nice, but you may find the process to use it a bit, um, rusty.
Testza: Full-Featured Test Framework for Go — Testza includes assertions, mocking, input testing, output capturing, along with some very nice, colorized output.
uuid 1.3.0: Package for UUIDs based on RFC 4122 and DCE 1.1 — 1.3.0 adds an optional ‘randomness pool’ mode for random v4 UUID generation which can increase throughput at the cost of security in certain situations.
ws 1.1: Tiny WebSocket Library for Go — It’s been a couple of years since a significant release. 1.1 adds WebSocket Compression Extension support.
Ergo: Erlang/OTP Ideas, But in Go — If you’ve ever been intrigued by the Erlang ecosystem but weren’t ready to give it a go, Ergo brings some of the Erlang world’s ideas to Go.
CALGARY — Uncertainty is weighing on two of Shaw Communications Inc.’s make-or-break strategic moves: its long-awaited push into wireless and its ambitions to pick-off Canwest Global Communications’ broadcasting assets.
Investors have been getting antsy over what the Calgary-based cable giant (TSX:SJR.B) intends to do with the wireless licences it has been sitting on for nearly two years.
“Shaw Wireless is still a big unknown factor,” wrote RBC Capital Markets analyst Jonathan Allen in a note to clients.
Shaw is set to report its second-quarter earnings Friday, followed by a conference call with analysts, who will likely press executives for details on the company’s wireless plans.
Shaw confirmed earlier this year that it plans to take the first steps toward a wireless entry in 2010, and that it sees the business being close to deployment early next year.
It has enough cash on hand to launch the wireless business — more than $600 million.
However, Allen said investors are anxious to know how much the plan would cost, what its marketing plans are, what sort of