前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >详解 | 小程序页面间如何进行传递数据

详解 | 小程序页面间如何进行传递数据

作者头像
极乐君
发布于 2020-11-30 02:52:55
发布于 2020-11-30 02:52:55
11.8K00
代码可运行
举报
文章被收录于专栏:极乐技术社区极乐技术社区
运行总次数:0
代码可运行

工作中我们经常会遇到B页面需要A页面内的部分或全部数据;C页面内的一个函数执行完之后需要改变B页面内的显示样式;也或者是A和B两个页面用到了同样的网络数据,在其中一个页面做出修改后另一个页面也要随之改变以保证回传服务器时数据的准确性,等等诸如此类的页面间数据传递的问题。

在小程序中组件与组件之间的通信是通过在引用组件处,在自定义组件上添加自定义属性实现的,子组件内部通过properties进行接收

那页面与页面之间又如何传递数据的呢?

1

页面间URL传值

在小程序中当中,在父页面,通过url方式传递参数到子页面,是一种比较常见的做法

如下示例所示:应用场景

  1. 点击列表页面,进入详情页
  2. 动态改变详情页面的navBar中的title

比如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.navigateTo({
  url: '../detail/detail?cid='+cid+'&token='+token
    })

这里面直接通过跳转页面的URL进行传值,然后在另一个页面进行接收

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.onLoad: function (opt) {
   console.log('cid =' + opt.cid);
  console.log('access_token =' + opt.access_token); 
}

传递字符串

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var model = this.data.str;
  wx.navigateTo({  url: '../detail/detail?model=' + model,
    })

在下个页面的onload中获取,

onLoad: function (options) { var bean = options.model; console.log(options.model) this.setData({ model:bean }) }

传递对象

通过提供的JSON.stingify方法,将对象转换成字符串后传递

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var model = JSON.stringify( model);
 wx.navigateTo({
    url: '../detail/detail?model=' + model,
  })  
  //接收
onLoad: function (options) {
//将字符串转换成对象
 var bean = JSON.parse(options.model);
}

父页面实例代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<view>
  <view class="list-wrap">
    <block wx:for="{{listDatas}}" wx:key="index">
      <view bindtap="onListTap" data-list="{{item}}">
        <text>{{ item.list_text}}</text>
      </view>
    </block>
  </view>
</view>

css代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.list-wrap {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  padding: 15px 15px;
}

.list-wrap view {
  width: 30%;
  height: rpx;
  border: 1px solid #ccc;
  margin-bottom: 15px;
  text-align: center;
  line-height: rpx;
  font-size: rpx;
}

js代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Page({
  /**
   * 页面的初始数据
   */
  data: {
    listDatas: [
      {
        listId: '1',
        list_text: '建钢构混泥房',
        link_phone: '137-0113-4148',
        linker: '王经理',
      },

      {
        listId: '2',
        list_text: '建办公楼房',
        link_phone: '137-0113-4148',
        linker: '陈经理',
      },

      {
        listId: '3',
        list_text: '建冰场钢结构',
        link_phone: '137-0113-4148',
        linker: '张经理',
      },
    ],
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {},

  onListTap(event) {
    const {
      listId,
      list_text,
      link_phone,
      linker,
    } = event.currentTarget.dataset.list;
    // 1. 传递参数-通过url的方式传递当前页面数据到子页面当中去,在子页面的onload的options中可以拿到
    wx.navigateTo({
      url: `/pages/listDetail/listDetail?id=${listId}&navtitle=${list_text}&phone=${link_phone}&link=${linker}`,
    });
  },
});

切换tab选项就可以查看对应的代码,在上面示例中,从一个页面跳转到另一个页面是使用wx.navigateTo()这个方法,如果想要将该页面的数据传递到子页面中,可以通过url拼接参数的方式进行传递,多个参数之间使用&符号相连

路径后可以带参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 &分隔;如path?key=value&key2=value2

子页面实例代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<view>
  <view class="container">
    <view>项目:<text>{{id}}-{{text}}</text></view>
    <view>联系人: {{link}}</view>
    <view>联系电话: {{phoneNumber}}</view>
  </view>
</view>

css代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  padding: 20px  10px 30px;
}

.container view {
  line-height: 30px;
}

js逻辑代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 页面中要渲染的数据,数据初始化
    id: null,
    text: '',
    phoneNumber: '',
    linker: '',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    console.log(options);
    const { id, navtitle, phone, link } = options;
    this._setNavTitle(navtitle);
    this._getList(id, navtitle, phone, link);
  },

  // 设置navTitle
  _setNavTitle(navtitle) {
    wx.setNavigationBarTitle({
      title: navtitle,
    });
  },

  _getList(id, navtitle, phone, link) {
    // 改变页面中的数据,setData
    this.setData({
      text: navtitle,
      id,
      phoneNumber: phone,
      link,
    });
  },
});

当父页面通过url的方式传递数据给子页面时,在子页面中的生命周期onLoad函数中的options中可以拿到 想要更改什么数据,直接重新setData就可以了的

注意

  1. url的方式适合页面间跳转携带参数,多个参数之间使用&符号拼接
  2. 此方法有一定的局限性,不适宜传入复杂的数据,例如:数组,对象
  3. 适合参数比较少的情况

url 中有多个参数时传递

在小程序中,向跳转的目标url页面传递的参数有时候远不止一个,使用wx.navigator进行跳转,支持/pages/xxx/xxx?param1={param1}&param2=

url参数是数组情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.navigateTo({
  url: `/pages/listDetail/listDetail?list=${[
    listId,
    list_text,
    link_phone,
    linker,
  ]}`,
});

子页面(跳转目标页)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
onLoad: function (options) {
    console.log(options);
    const list = options.list.split(','); // 通过split分割成数组
    console.log(list);
  },

分析

当被跳转的 url 中的参数是数组时,那么在跳转的目标页面中的onLoad生命周期函数的option,将得到父页面中的字符串参数。通过split方法将字符串分割为数组,然后通过数组下标的方式拿到对应的参数

父页面中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const name = 'itclanCoder';
const sex = 'boy';
wx.navigateTo({
  url: `/pages/listDetail/listDetail?data=${[name, sex]}`,
});

子页面中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
onLoad: function (options) {
    console.log(options);
    const data = options.data.split(','); // 通过split分割成数组
    console.log(data); // ["itclanCoder", "boy"]
  },

url参数是对象情况

url参数是对象时,并不会像数组一样,在目标页面中onLoadoptions对象中是一个字符串,而却是一个对象。我们需要借助JSON.stringify()对传入的参数对象进行序列化

父页面(对象参数序列化)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.navigateTo({
  url: `/pages/listDetail/listDetail?obj=${JSON.stringify({
    id: listId,
    text: list_text,
    phone: link_phone,
    link: linker,
  })}`,
});

通常,我们把参数对象,定义成一个对象的,简化我们的代码,用一个变量对象临时存储的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const params = {
  // 参数放到外面,让代码更加清晰,可读,可维护性更高
  id: listId,
  text: list_text,
  phone: link_phone,
  link: linker,
};
wx.navigateTo({
  url: `/pages/listDetail/listDetail?obj=${JSON.stringify(params)}`,
});

那么在子页面中,需要通过JSON.parse()对父页面中传递过来的参数进行反序列化,否则拿到的将是字符串对象,是无法通过对象.的方式访问属性

子页面(对象参数反序列化)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
onLoad: function (options) {
    console.log(options);
    const obj = JSON.parse(options.obj); // 将字符串对象转化为真正的对象
    console.log(obj); // {id: "1", text: "建钢构混泥房", phone: "137-0113-4148", link: "王经理"}
  },

分析:在父页面中若跳转目标的 url 参数是对象的情况下,需要先将参数通过JSON.stringify()序列化才可以

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const params = {
  // 参数放到外面,让代码更加清晰,可读,可维护性更高
  id: ,
  name: '川川',
  sex: 'boy',
};
wx.navigateTo({
  url: `/pages/listDetail/listDetail?obj=${JSON.stringify(params)}`,
});

那么在子页面(目标页面中)的onLoadoptions

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
onLoad: function (options) {
    console.log(options);
    const obj = JSON.parse(options.obj); // 将字符串对象转化为真正的对象
    console.log(obj); // {id: 22, name: "川川",sex: "boy"}
},

父(上个)页面编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const params = {
  // 参数放到外面,让代码更加清晰,可读,可维护性更高
  id: ,
  name: '川川',
  sex: 'boy',
};
const param = encodeURIComponent(JSON.stringify(params)); // 通过encodeURIComponent编码
wx.navigateTo({
  url: `/pages/listDetail/listDetail?obj=${param}`,
});

子页面解码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
onLoad: function (options) {
    console.log(options);
    const tempObj = decodeURIComponent(options.obj)
    const obj = JSON.parse(tempObj); // 将字符串对象转化为真正的对象
    console.log(obj); // {id: 22, name: "川川",sex: "boy"}
},

注意

  1. 当父页面传递的url参数为对象时,在子页面是无法直接获取的,在父页面中,必须先使用JSON.stringify()转换为字符串 然后在下个页面使用JSON.parse()还原为对象,这样在子页面中便可以通过对象的方式拿到
  2. 当父页面传递的url对象数据中含有特殊字符串时,在子页面使用 JSON.parse()还原为对象时会报错。需要在上个(父)页面将对象转化为字符串后(JSON.stringify()),在使用 encodeURIComponent 进行编码,然后在下个(子)页面先用 decodeURIComponent 进行解码在还原(JSON.parse())为对象。

2

如何返回上一级页面-并刷新页面

在使用wx.navigateTo()API 进行跳转时,在子页面中可以通过wx.navigateBack()返回上一级页面的,这个场景在日常开发中,就有不少。例如:写完微博,发完微博成功后,自动要返回到首页,申请退款时,跳转到申清退款页面等等的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const pages = getCurrentPages(); // 可以获取当前页面栈,上一个页面以及当前页面栈信息
console.log(pages); // 是一个数组,记录了上一个页面与当前页面信息
// 取到上一个页面
const prevPage = pages[pages.length - ]; // 获取第0个页面,也就是上个页面
console.log(prevPage);
prevPage.onLoad(); // 可以调用上一页面的方法
prevPage.setData({
  name: 'itclanCoder',
});

当你通过wx.navigateTo(),一层一层跳转到子页面时,使用getCurrentPages方法就可以找到上级,上上级的页面栈信息

它是通过获取到其他页面的原型对象,然后通过小程序原型下的setData方法,对当前对象管理的数据data进行修改。这个方法getCurrentPage方法可以操作页面堆栈页面的数据和方法,可以做到对子(后一)页面对父(上一)页面的数据管理

提示

getCurrentPages()用于获取当前页面栈,数组中第一个元素为首页,最后一个元素为当前页面

  1. 不要尝试修改页面栈,会导致路由以及页面状态错误(不要依赖这个方法)
  2. 不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成

3

使用全局变量

全局变量实际上是定义了一个全局的对象,并在每个页面中引入。在初始化代码的时候,小程序会读取一个 app.js 的文件,在这里我们可以定义我们所需要的全局变量。

全局页面 app.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//app.js
...
App({
    globalData : {
        foo : 'bar'
    }
});

然后在页面中,可以通过 getApp() 方法获取到全局应用对象,可以对全局变量进行读取并更改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//page.js
...
var app = getApp()
var getFoo = app.globalData.foo
app.globalData.foo = 'fun'

由于 app.js 在项目中是用来做基础配置的,因此不建议将很多变量放在这里配置。一般情况下会将一些持久化的常量配置在这里,对于经常需要变动的量不建议用这个方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<view>
  <view class="globalData">
    <view class="getGloablBtn btn" bindtap="onGetGlobal">获取全局变量</view>
    <view class="changeGloablBtn btn" bindtap="onChangeGlobal"
      >修改全局变量</view
    >
  </view>
  <view>{{token}}</view>
  <view>{{url}}</view>
  <view>{{userInfo}}</view>
</view>

分析

全局定义的变量,一些状态,可以挂载在全局页面 app.jsglobalData中,在使用全局变量页面处

  1. 需要调用getApp()函数
  2. 通过getApp().globalData.a可以拿到全局对象下定义的变量对象
  3. 若要修改全局变量对象直接赋值即可getApp().globalData.a = "bb";

全局定义变量注意事项

  1. App()必须在app.js中注册,且不能注册多个
  2. 不要在定义App()内的函数调用getApp(),使用this就可以拿到App下的实例
  3. 不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成
  4. 通过getApp()获取到全局页面的实例后,就不要私自调用生命周期函数了的

4

使用本地缓存

本地缓存是微信小程序提供的一个功能, 可以将用户产生的数据做本地的持久化,类似于 NoSQL,可以进行读取和修改的操作。那么在不同的页面之间,如何利用它,进行数据的交互呢?

假设我们在 A 页面保存了用户的信息。

// pageA.js ... var developer = { name: 'raymond', gender: 'male' } wx.setStorageSync('developer', developer);

这样做,这个数据就存在了本地。当在B页面需要使用的时候,可以直接的获取到数据池中的数据,并进行 CRUD 操作:

//pageB.js ... // Retrieve var developer = (wx.getStorageSync('developer') || []) // Update developer.name = 'Jiayang' wx.setStorageSync('developer', developer); // Delete wx.removeStorage({ key: 'developer' })

需要注意的是,在回到 A 页面的时候,小程序需要重新读取数据。这时候,可以选择放在生命周期的 onShow 中对数据重新加载。在使用本地缓存,可以作为页面间数据传递,但是仍然需要注意一些实用情况,如下所示

隔离策略

同一个微信用户,同一个小程序 storage上限为 10MB,一般可以作为缓存临时一些小的数据,比如用户登录信息之类的

storage 以用户维度隔离,同一台设备上,A 用户无法读取到 B 用户的数据;不同小程序之间也无法互相读写数据

存储大小限制

除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB

插件隔离限制

  1. 同一小程序使用不同插件:不同插件之间,插件与小程序之间 storage 不互通。
  2. 不同小程序使用同一插件:同一插件storage不互通
  3. storage只是针对当前用户,不同用户,使用不同的插件,他们之间storage是无法实现数据共用的

设置/获取/删除存储

使用的是wx.setStorageSync(),wx.getStorageSync方法

如何设置本地存储数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.setStorage({
  key: 'key',
  data: 'value',
});

如何获取本地存储数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.getStorageSync({
  key: 'key',
  success(res) {
    console.log(res.data);
  },
});

如何删除本地存储数据

清除小程序当中的本地存储分为:1、一次性全部删除所有存储,2、删除存储中某指定的存储key

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.clearStorage(); // 一次性删除小程序中的所有存储数据

删除存储中某指定的存储key,一定要注意这两者的区别,有的小伙伴只知道wx.clearStorage()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.removeStorageSync('key'); // 删除小程序中指定的key的存储

注意:wx.removeStorageSync方法,不同于wx.clearStorageSync()方法,它同样也是删除小程序中所有同步存储的数据, 前者需要指定删除存储对应的key值,而后者不需要指定key,它是一次性删除所有同步存储的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.clearStorageSync(); // 一次性删除小程序中所有同步存储的数据

解决相同 key 覆盖问题

在小程序中,当出现同名key,后者key覆盖前者是一个让人头疼的问题

具体解决

可以将需要存储数据存到一个数组当中,当需要使用时,取最后一个即可。至于若有增删操作,每次删除完某一数据后,重新在设置一次本地存储即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let lists = wx.getStorageSync('lists'); // 先获取lists本地存储的数据
if (!lists) {
  // 第一次判断缓存中有没有lists数据
  lists = []; // 若没有,则存储设置一个空数组
}
lists.push(data); // 这里的data是要存储到本地中的数据
wx.setStorageSync('lists', lists); // 设置本地存储key:val

是使用同步存储还是异步存储

带有Sync,这个表示的同步的操作,与之相对的不带后缀就是异步”。同步与异步是指的消息通讯机制。就是信息传来传去的时候是同步还异步。重点强调的是通讯这个动作。

我们往往先要判断一下缓存中是否有我们想要的那一数据的,否则若没有,在代码中使用了,就会报错。JavaScript 是单线程的,但是浏览器是多线程的.它的异步是借助事件实现的.具体可自行查看多线程与单线程相关知识的

5

父级往子级页面(模板)的数据传递

我们通常会在页面之间进行跳转、重定向的操作。这时候,我们可以选择将部分数据放在 url 里面,并在新页面 onLoad 的时候进行初始化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pageC.js
...
// Navigate
wx.navigateTo({
  url: '../pageD/pageD?name=raymond&gender=male',
})

// Redirect
wx.redirectTo({
  url: '../pageD/pageD?name=raymond&gender=male',
})

在 D 页面中,我们可以这样接收到到所传进来的参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// pageD.js
...
Page({
  onLoad: function(option){
    console.log(option.name + 'is' + option.gender)
    this.setData({
      option: option
    })
  }
})

wx.navigateTo 和 wx.redirectTo 不允许跳转到 tab 所包含的页面,只能用 wx.switchTab 跳转。需要注意的是,wx.switchTab 中的 url 不能传参数。 微信新提供的 wx.reLaunch 接口可以传入参数。 另外,在页面中我们通常会用到一些组件模板,因此在父子之间也会有相应的数据传递。使用 name 属性,作为模板的名字。然后在这里面使用 is 属性,声明需要的使用的模板。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{{index}}: {{msg}}
Time: {{time}}

然后将模板所需要的 data 传入,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template is="msgItem" data="{{...item}}"/>

Page({
  data: {
    item: {
      index: 0,
      msg: 'this is a template',
      time: '2016-09-15'
    }
  }
})

传入模板的除了变量,还可以是事件方法对象。例如,模板中的点击事件,可以传递到使用模板的元素中。

说明

将某整个父页面的数据传递给跳转到的子页面,是一个比较常见的需求。比如在商品详情页面中,跳到到下单页面,需要将详情页面的一些数据传递给跳转的子页面,那么这个时候,用url的方式传递数据就不时很合适,选用eventChannel的方式就比价适合。

wx.navigateTo的成功success回调中,通过emit进行触发,emit接收两个参数,第一个是监听事件的名称,第二个参数是需要向目标页面传递的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
res.eventChannel.emit(`监听的事件名称parentPageEmit`, { data: '数据' });

在跳转的目标页面中,通过调用getOpenerEventChannel方法,然后进行on的绑定

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const eventChannel = this.getOpenerEventChannel();
eventChannel.on('监听的事件名称parentPageEmit', (data) => {
  console.log(data);
  this.setData({
    acceptParentData: data,
  });
});

当前页面-->目标页面是利用wx.navigateTo 中的 success 回调中使用 emit 触发,目标跳转页面用 on 监听实现将当前页面的数据传递给目标页面中,那当前页面又如何获取目标页面的数据呢。

结语

微信小程序中有以上并且不局限于以上几种的方式进行页面间数据传递、交互,在实际应用中可以组合使用。比如说:

  • 一些常量,可以交由 app.js 管理;需要持久化的量可以放在本地保存。
  • 涉及到下级页面或者模板元素的数据,可以通过传入参数的方式传入。
  • 后级页面可以通过获取堆栈里的页面对象快速修改上级的数据。

在实际应用中结合使用,可以更好地管理小程序的数据。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极乐技术社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
重磅丨Yoshua Bengio 2017 年全面解读:后 AI 时代的技术走向与局限
AI科技评论按:近日,深度学习大牛 Yoshua Bengio 在 Beneficial AI 大会上发表了一篇题为《创造人类水平AI》的演讲,分享了他对于极深网络(Very Deep NN)和 GAN 等前沿技术的一些看法和思考。Yoshua Bengio认为:极深网络在序列数据和高层抽象等领域具有巨大的发展前景;GAN虽然是前沿热点,但非常难以训练,因此开发者需要对其保持清醒的头脑。另外,在演讲的结尾,Yoshua Bengio还分享了他的一个最新研究方向,即利用行动(action)引导表征学习(r
AI科技评论
2018/03/09
7320
重磅丨Yoshua Bengio 2017 年全面解读:后 AI 时代的技术走向与局限
【深度学习下一大突破】吴恩达对话 Hinton、Bengio、Goodfellow(视频)
【新智元导读】吴恩达深度学习系列课程 Deeplearning.ai 上线,专设对话部分,用视频的形式将他对 7 位深度学习领袖的采访呈现出来,分别是 Geoffrey Hinton、Yoshua Bengio、Ian Goodfellow、Andrej Karpathy、林元庆、Ruslan Salakhutdinov、Pieter Abbeel。新智元重点整理了深度学习先驱 Hinton、Bengio 和新秀 Goodfellow 的访谈。他们如何进入深度学习领域,如何看深度学习发展?他们曾犯过哪些错误
新智元
2018/03/22
8010
【深度学习下一大突破】吴恩达对话 Hinton、Bengio、Goodfellow(视频)
Yoshua Bengio首次中国演讲:深度学习通往人类水平AI的挑战
11 月 7 日,Yoshua Bengio 受邀来到北京参加第二十届「二十一世纪的计算」国际学术研讨会。会上以及随后受邀前往清华时,他给出了题为「深度学习通往人类水平 AI 的挑战」(Challenges for Deep Learning towards Human-Level AI)的演讲。机器之心在 Yoshua Bengio 的授权下介绍了整篇演讲,读者可点击「阅读原文」下载 PPT。
机器之心
2018/12/10
6400
Yoshua Bengio首次中国演讲:深度学习通往人类水平AI的挑战
深度 | Yoshua Bengio AIWTB大会解读深度生成模型:让机器具备无监督学习能力
机器之心报道 演讲者:Yoshua Bengio 参与:吴攀、蒋思源 面向开发者的世界上最大的人工智能主题在线演讲与对话大会 AI WITH THE BEST(AIWTB)于 2017 年 4 月 29-30 日在 AIWTB 官网上通过在线直播的方式成功举办。作为第三届 AI WITH THE BEST 华语社区独家合作伙伴,机器之心在前两天接连整理报道了生成对抗网络(GAN)的提出者 Ian Goodfellow 和联想 AI 实验室负责人徐飞玉的精彩演讲。今天,我们将呈现的是著名深度学习学者 Yosh
机器之心
2018/05/08
8110
深度 | Yoshua Bengio AIWTB大会解读深度生成模型:让机器具备无监督学习能力
Yoshua Bengio TED演讲谈人工智能的崛起:无监督学习是深度学习突破的关键
选自TEDx 机器之心编译 参与:李亚洲、吴攀 在 2016 年 9 月 24 日举办的 TEDxMontreal 2016 上,深度学习领域的著名学者 Yoshua Bengio 发表了主题为《使用深度学习的人工智能的崛起(The Rise of Artificial Intelligence through Deep Learning)》的演讲。近日,TEDx Talks 官方在 YouTube 上发布了该演讲的视频。机器之心在本文中对该演讲的主要内容进行了整理介绍。 演讲主题:在深度学习进步的推动下,
机器之心
2018/05/07
5800
Yoshua Bengio TED演讲谈人工智能的崛起:无监督学习是深度学习突破的关键
回顾 | Yoshua Bengio暑期课程《Deep Learning for AI》核心要点总结(附PPT下载)
AI 科技评论按:在刚刚结束的巴黎综合理工学院举行的 Data Science 暑期学校中,Yoshua Bengio 以《Deep Learning for AI》为主题进行了演讲。在这节课上,Bengio 教授结合自己以往的研究经历,回顾和分享了自己在深度学习领域的一些心得和经验。AI 科技评论整理如下。 在课程的最开始,Bengio 为自己的新书《Deep Learning》打了个小广告(笑),表示目前虽然 MIT Press 已经集合成书,但原文依然可以在线阅读。 深度学习已经取得了越来越重
AI科技评论
2018/03/13
9620
回顾 | Yoshua Bengio暑期课程《Deep Learning for AI》核心要点总结(附PPT下载)
【Bengio领衔】DeepMind、谷歌大脑核心研究员2017深度学习最新报告(PPT)
【新智元导读】 深度学习领军人物 Yoshua Bengio 主导的蒙特利尔大学深度学习暑期学校目前“深度学习”部分的报告已经全部结束。 本年度作报告的学术和行业领袖包括有来自DeepMind、谷歌大脑、蒙特利尔大学、牛津大学、麦吉尔大学、多伦多大学等等。覆盖的主题包括:时间递归神经网络、自然语言处理、生成模型、大脑中的深度学习等等。现在全部PPT已经公开,是了解深度学习发展和趋势不可多得的新鲜材料。 蒙特利尔大学的深度学习暑期学校久负盛名,在深度学习领军人物Yoshua Bengio 号召下,每年都聚集了
新智元
2018/03/27
7660
【Bengio领衔】DeepMind、谷歌大脑核心研究员2017深度学习最新报告(PPT)
【Bengio高徒演讲】深度学习三板斧:网络架构、学习算法和时空层级(48PPT)
【新智元导读】Kyunghyun Cho是纽约大学计算机科学与数据科学助理教授。他是蒙特利尔大学博士后,导师是 Yoshua Bengio。他于2014年初在阿尔托大学获得博士和硕士学位。本次演讲题是
新智元
2018/03/22
1K0
【Bengio高徒演讲】深度学习三板斧:网络架构、学习算法和时空层级(48PPT)
【重磅】微软AI首席科学家邓力:深度学习技术及趋势报告(75页PPT下载)
【新智元导读】微软人工智能首席科学家邓力博士在上海IEEE-ICASSP2016大会上的演讲报告。本报告分为深度学习的机器感知、机器认知和未来挑战三大部分,着重介绍了机器认知部分,总结了微软在深度学习方面的最新进展。 邓力率先提出将深度神经网络应用于语音识别,显著提高了机器对语音的识别率,由此获得2015年IEEE技术成就奖。根据微软亚洲研究院官网,在展望2016年深度学习领域会出现哪些关键性技术突破和进展时,邓力认为基于深度学习的自然语言处理技术会继续保持高速发展,而基于深度学习的注意力导向型序列学习技术
新智元
2018/03/21
1.1K0
【重磅】微软AI首席科学家邓力:深度学习技术及趋势报告(75页PPT下载)
深度学习三巨头共同发文,聊聊深度学习的过去、现在与未来
作者|Yoshua Bengio,Yann LeCun,Geoffrey Hinton 译者|香槟超新星 出品|AI科技大本营(ID:rgznai100) 人工神经网络领域的研究是基于对人类智能的观察而来:人类智能从高度并行的网络中产生,这些网络由结构相对简单的非线性神经元组成,通过调整连接强度来进行学习。 这一观察随即引入了一个核心的计算科学问题:如果要让这种普通类型的网络完成目标检测或理解语言这样的困难任务,怎样才能让它学会复杂的内部表示? 深度学习尝试通过使用多层的活动向量作为表示,以及最优化损失函数
AI科技大本营
2023/05/08
4190
深度学习三巨头共同发文,聊聊深度学习的过去、现在与未来
深度学习的本质探究??
1、人工智能浪潮又起 标志型事件,阿尔法围棋(AlphaGo)战胜李世石。 alphago是一款围棋人工智能程序,由谷歌(Google)旗下DeepMind公司的戴维·西尔弗、艾佳·黄和戴密斯·哈萨比斯与他们的团队开发,这个程序利用“价值网络”去计算局面,用“策略网络”去选择下子。2015年10月阿尔法围棋以5:0完胜欧洲围棋冠军、职业二段选手樊麾;2016年3月对战世界围棋冠军、职业九段选手李世石,并以4:1的总比分获胜。这个让人工智能浪潮又起,热浪达到了一个高度。 alphago 核心用到了”深度卷积神
大数据和云计算技术
2018/03/08
2K0
深度学习的本质探究??
机器学习圣杯:图灵奖得主Bengio和LeCun称自监督学习可使AI达到人类智力水平
在2020的ICLR线上大会上,蒙特利尔学习算法研究所主任、图灵奖得主Yoshua Bengio和Facebook 的副总裁兼首席人工智能科学家Yann LeCun,坦率地谈到了未来AI的研究趋势。
新智元
2020/05/19
5640
机器学习圣杯:图灵奖得主Bengio和LeCun称自监督学习可使AI达到人类智力水平
【DL】2020 年了,深度学习接下来到底该怎么走?
在过去的一年,深度学习技术在各个领域一如既往地取得了不少进展。然而当前深度学习技术(本文中称为深度学习1.0)仍然存在着一些明显的局限,例如在解决有意识任务方面的不足。那么针对这些局限性,在未来的一年,有哪些可能的解决方案?深度学习又会在哪些方面带来有希望的突破?
yuquanle
2020/02/20
4260
【DL】2020 年了,深度学习接下来到底该怎么走?
入门 | 献给新手的深度学习综述
论文:Recent Advances in Deep Learning: An Overview
机器之心
2018/08/21
5900
入门 | 献给新手的深度学习综述
盘点丨2016十大 AI 演讲,大牛们都发表了什么真知灼见?
新年到来,也不要忘记和 AI 科技评论一起温故而知新啊。 在刚刚落下尾声的 2016 年,许许多多的人工智能大神们站在台上分享他们的所见所感,AI 科技评论整理了十位人工智能领域的大牛们所做的最新演讲
AI科技评论
2018/03/09
1.1K0
盘点丨2016十大 AI 演讲,大牛们都发表了什么真知灼见?
追根溯源!一图看尽深度学习架构谱系
机器之心整理 参与:蒋思源、李泽南、李亚洲 近几年,深度学习高速发展,出现了大量的新模型与架构,以至于我们无法理清网络类型之间的关系。在这篇文章中,中国香港科技大学(HKUST)助理教授金成勳总结了深度网络类型之间的谱系图,以便于我们索引不同类型网络的杰出研究成果。 金成勳在 GitHub 上梳理出的谱系图如下(点击图片放大查看),最后的蓝色字体部分是各分支内的杰出研究成果(附所有论文链接)。机器之心在此基础上对各个分支网络做了介绍、补充,希望对读者了解网络体系间的关联有所帮助。如有缺陷,欢迎
机器之心
2018/05/10
8460
Yoshua Bengio清华最新演讲:深度学习AI迈向人类水平还面临这些挑战(内含PPT及讲座录音)
被称为“人工智能三巨头”之一的蒙特利尔大学计算机科学与运算研究系教授Yoshua Bengio为清华的师生带来了一场长达一个半小时的充实演讲。
大数据文摘
2018/12/10
7100
Yoshua Bengio清华最新演讲:深度学习AI迈向人类水平还面临这些挑战(内含PPT及讲座录音)
Yoshua Bengio最新演讲:Attention 让深度学习取得巨大成功(46ppt)
【新智元导读】机器翻译是深度学习技术最切近实际的应用之一,现在在互联网上有很广泛的使用。此外,不久前,许多科技大公司也相应地推出了为图片或视频自动生成字幕的应用,根据外媒的报道,Facebook曾对外称,这是一项能让盲人“看”见图片的技术。深度学习在这些应用中究竟是怎么发挥作用的,其背后的技术是什么?深度学习领域大神级人物Yoshua Bengio在本次演讲中作了详细的解读。 Yoshua Bengio,电脑科学家,毕业于麦吉尔大学,在MIT和AT&T贝尔实验室做过博士后研究员,自1993年之后就在蒙特利
新智元
2018/03/22
1.1K0
Yoshua Bengio最新演讲:Attention 让深度学习取得巨大成功(46ppt)
深度学习简史
2018年,ACM(国际计算机学会)决定将计算机领域的最高奖项图灵奖颁给Yoshua Bengio、Yann LeCun 和 Geoffrey Hinton,以表彰他们在计算机深度学习领域的贡献。
统计学家
2021/07/28
6420
深度学习疆界:探索基本原理与算法,揭秘应用力量,展望未来发展与智能交互的新纪元
深度学习的核心在于能够自动学习和提取数据中的复杂特征,它通过构建深层的神经网络结构来实现对数据的高层次抽象和理解。这种方法在图像识别、语音识别、自然语言处理等领域取得了显著的成果。以下是关于深度学习的详细介绍:
Srlua
2024/03/01
3620
深度学习疆界:探索基本原理与算法,揭秘应用力量,展望未来发展与智能交互的新纪元
推荐阅读
重磅丨Yoshua Bengio 2017 年全面解读:后 AI 时代的技术走向与局限
7320
【深度学习下一大突破】吴恩达对话 Hinton、Bengio、Goodfellow(视频)
8010
Yoshua Bengio首次中国演讲:深度学习通往人类水平AI的挑战
6400
深度 | Yoshua Bengio AIWTB大会解读深度生成模型:让机器具备无监督学习能力
8110
Yoshua Bengio TED演讲谈人工智能的崛起:无监督学习是深度学习突破的关键
5800
回顾 | Yoshua Bengio暑期课程《Deep Learning for AI》核心要点总结(附PPT下载)
9620
【Bengio领衔】DeepMind、谷歌大脑核心研究员2017深度学习最新报告(PPT)
7660
【Bengio高徒演讲】深度学习三板斧:网络架构、学习算法和时空层级(48PPT)
1K0
【重磅】微软AI首席科学家邓力:深度学习技术及趋势报告(75页PPT下载)
1.1K0
深度学习三巨头共同发文,聊聊深度学习的过去、现在与未来
4190
深度学习的本质探究??
2K0
机器学习圣杯:图灵奖得主Bengio和LeCun称自监督学习可使AI达到人类智力水平
5640
【DL】2020 年了,深度学习接下来到底该怎么走?
4260
入门 | 献给新手的深度学习综述
5900
盘点丨2016十大 AI 演讲,大牛们都发表了什么真知灼见?
1.1K0
追根溯源!一图看尽深度学习架构谱系
8460
Yoshua Bengio清华最新演讲:深度学习AI迈向人类水平还面临这些挑战(内含PPT及讲座录音)
7100
Yoshua Bengio最新演讲:Attention 让深度学习取得巨大成功(46ppt)
1.1K0
深度学习简史
6420
深度学习疆界:探索基本原理与算法,揭秘应用力量,展望未来发展与智能交互的新纪元
3620
相关推荐
重磅丨Yoshua Bengio 2017 年全面解读:后 AI 时代的技术走向与局限
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 页面间URL传值
    • 比如
    • 传递字符串
    • onLoad: function (options) { var bean = options.model; console.log(options.model) this.setData({ model:bean }) }
    • 传递对象
    • 父页面实例代码
    • 子页面实例代码
    • url 中有多个参数时传递
    • 全局定义变量注意事项
  • 本地缓存是微信小程序提供的一个功能, 可以将用户产生的数据做本地的持久化,类似于 NoSQL,可以进行读取和修改的操作。那么在不同的页面之间,如何利用它,进行数据的交互呢?
    • 设置/获取/删除存储
    • 是使用同步存储还是异步存储
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档