原创: BrilliantOpenWeb OpenWeb开发者 7月6日

作者 | Brilliant Open Web 团队
编辑 | Daisy

升级与重要进展

历时2个月,MIP团队完成了核心代码重构与核心功能升级,MIP新版本核心代码(V2)在实现向下完全兼容当前代码(V1)的同时,也提供了新的能力,其中重要的几项是:

  • 基于 Vue 的新组件开发方式,使组件开发更加便捷高效。
  • 新增多页数据共享机制,提供整站沉浸式体验。
  • 提供沙盒机制,屏蔽与限制组件里高能耗、不安全的API调用。
基于 Vue 的开发方式

Vue 本身就是一个非常完善的组件化方案,完全满足 MIP 的诉求的。我们选择Vue开发组件还有其他的一些原因:
- 组件需要支持数据驱动,双向绑定,slot 机制,模版 语法等;
- Vue 社区和生态已经非常成熟,MIP 可以使用 Vue 一摸一样的方式开发组件,开发者介入成本低;
- Vue 组件也有自己完善生命周期;
- 很多 Vue 的组件可以直接拿到 MIP 中使用。

在 Vue 的使用方面,MIP 支持在 MIP-HTML 文档中使用 customElement 标签,customElement 标签和常规的 HTML 标签在用法上完全保持一致,下面是一个简单的 customElement 标签 mip-hello-world 在 MIP-HTML 文档中的用法。

 <mip-hello-world attr1="hello" attr2="world"></mip-hello-world>

注册 MIP 组件的方法如下:

mip.registerVueCustomElement('mip-hello-world',/*** 这里传入的对象就是 Vue 的实例对象(先不要蒙,后面我们会讲为什么会是一个 Vue 的实例)。* 但 MIP 中组件是独立以 Vue 单文件开发发布的,所以注册这一步在 mip-cli 中已经自动完成*/{// 由于 Mip 种的 Vue 不带 compiler,所以其实不支持 template 写法,只支持 render 方法,此处为示意代码template: `<div class="hello-world-wrap">{{ attr1 }}, {{ attr2 }}</div>`,props: ['attr1', 'attr2']}
);

当页面开始渲染的时候,会将 mip-hello-world 渲染为如下 HTML 片段:

<mip-hello-world><div class="hello-world-wrap">hello, world</div>
</mip-hello-world>
多页数据共享机制

熟悉 MIP 的开发者都了解,MIP 是以页面 (Page) 为单位来运行的。开发者通过改造/提交一个个页面,继而被百度收录并展示。

但以页面为单位带来一个问题:当一个 MIP 页面中存在往其他页面跳转的链接时,浏览器会使用加载页面的默认行为来加载新页面。新版本的 MIP 为了解决这个问题,引入了 Page 模块。它的作用是 把多个页面以一定的形式组织起来,让它们互相切换时拥有和单页应用一样的切换效果,而不是浏览器默认的切换效果。
Page 模块实现方案核心主要有以下几点:

  • MIP Page 借助 iframe 实现了页面之间的互相隔离
  • 通过 iframe 和外界的通讯来实现页面之间的通讯和传递数据
  • 为了加载性能考虑,第一个页面维持原状,不放入 iframe 之中。

    在页面结构上,除了首个页面的 DOM 全部保留之外,后续页面均以 iframe 的形式存在。因为 DOM 结构的原因,首个页面等价于外部页面或者外部后续页面等价于内部页面或者内部,这里的“内外”指的就是代码执行于 iframe 的内部或者外部。

    沙盒机制

    MIP 允许开发者通过提交 MIP 组件和写 等方式去写 等方式去写 JS ,但是从性能和代码维护的层面考虑,部分 API 是不应该使用的,比如 alert、confirm 等等,因此我们提供了沙盒机制,去屏蔽和限制这类 API/属性的使用。

目前MIP新版本核心代码处于内测阶段,将会在不久的将来在当前所有MIP站点中应用,为开发者提供更多核心能力,打造体验更好的Web站点。更多MIP代码升级详情,请点击【阅读原文】查看。

6月 AMP 技术一览

<amp-geo> 组件

新增定位信息的封装,让站点在移动设备浏览器中更友好的获取用户定位信息。具体的,可以通过使用 <amp-geo> 获取用户在哪一个国家。组件主要通过识别 IP 的方式来实现区域定位,但没有提供获取更多精确定位信息的功能。

<amp-date-picker>组件

实验版本的日历组件发布,让移动端的日历选择体验更一致。此类组件如果由开发者各自实现,最终提供给用户的体验将会参差不齐。AMP 通过统一的方式提供此类功能组件,将极大提升开发者的开发体验和用户的交互体验。

下月技术预告

极速服务

极速服务是一种基于 Web 技术的全网解决方案,是一个基于 MIP 技术的开发框架。开发者最终开发的极速服务不仅能在百度 App 中提供优质体验,也能在其他任何移动浏览器下使用和访问,并为用户提供良好体验。极速服务的更多细节将会在下期内容中与大家见面。

MIP组件开发详解

如何基于新版本 MIP 核心代码开发一个 MIP 组件,开发过程中都有哪些技巧,下期 MIP 核心代码研发工程师将对此进行深度解读。

移动Web体验月报(6月):MIP 核心代码升级,增加基于 Vue 开发能力相关推荐

  1. OpenCORE原理和核心代码破解,增加AVI格式。

    OpenCORE原理和核心代码破解--1 一.OpenCORE整体结构 逻辑层主要由PVPlayer,PlayerDriver,PVPlayerEngine来组成,其中PVPlayer主要接受上层的操 ...

  2. 怎样在线把别人web前端代码抓下_自学web前端8个月,我是怎样拿下7K薪资的?

    自学web前端8个月,我是怎样拿下7K薪资的?自学两个字,说起来很轻松,但真正做起来那真是绝非易事,说实话,在我收到HR发来的offer那一刻,眼泪差点掉下来,这个过程中吃的这些苦,真的只有自己才能知 ...

  3. 老王的心路历程(二):下一站Web体验监控产品

    在上一篇文章中,和大家聊到了建立Web应用体验监控体系,经过了概念阶段,也完成了技术选型,就进入了把实质性的产品研发阶段.作为产品经理,时刻不敢忘记我们的产品目标:无限感知你的用户,建立完备的体验监控 ...

  4. 本固枝荣--前端体验大会12月23日深圳场

    12月23日深圳前端体验大会(本固枝荣) 作为一个后台开发,完整地参加一整天的分享会议,收获还是挺多的.就我个人而言,前端开发者的心态要比后台开发更Open.更乐于拥抱新技术.整个大会的开始和结束也回 ...

  5. pro缺点和不足 一加7t_一加7T Pro深度体验半个月以后:优点和缺点都很明显

    原标题:一加7T Pro深度体验半个月以后:优点和缺点都很明显 10月15日,一加带来了年度旗舰一加7T Pro.凭借着不将就的态度,一加7T Pro在一发布以后就备受全球媒体和用户的关注.笔者作为第 ...

  6. 621c语言与web技术真题,2018年南京师范大学教育科学院621C语言与WEB技术之C程序设计考研核心题库...

    目录 2018年南京师范大学教育科学院621C 语言与WEB 技术之C 程序设计考研核心题库(一) . 2 2018年南京师范大学教育科学院621C 语言与WEB 技术之C 程序设计考研核心题库(二) ...

  7. 荣耀magic2可以用鸿蒙吗,实际体验两个月,聊一聊荣耀Magic2的使用心得,值得购买吗?...

    实际体验两个月,聊一聊荣耀Magic2的使用心得,值得购买吗? 2019-02-18 10:00:00 19点赞 12收藏 22评论 在智能手机全面屏的探索道路上,先后出现了刘海屏.水滴屏以及升降摄像 ...

  8. 微软北京.NET俱乐部免费活动(2010年7月18日)–Visual Studio 2010 敏捷开发与云计算Azure...

    感谢您对VS2010一直以来的关注和支持.6月26日微软.NET俱乐部邀请到了多位MVP,针对Visual Studio 2010敏捷开发.Web前端开发与广大北京的.NET俱乐部会员进行互动交流,应 ...

  9. 苹果下架html5,2020年3月苹果全面下架基于H5开发到App, webapp,hybrid混合栈开发...

    uni-app 属于webapp开发吗?针对这次请过问题,哪些技术不能使用,哪些技术可以使用,知道的帅哥们,留言讨论. 苹果公告 HTML5应用的应用更新 九月6,2019 为了向用户提供他们期望在A ...

最新文章

  1. 2020年行政区划代码_2020年柳州市行政区划,了解柳州市有几个区,详细数据
  2. H3C对IP存储有全面且独到认识
  3. 所有配置_一张图看懂iPhone12的所有配置!
  4. 怎么样修改PuTTY的默认字体和字符集
  5. java嵌套循环语句_Java学习笔记(七) 循环语句
  6. 《HTML5和JavaScript Web应用开发》——第 2 章 移动Web 2.1移动优先
  7. CF Fox And Two Dots (DFS)
  8. 发现eclipse红叉,查看markers发现Target runtime Apache Tomcat 6.0 is not defined
  9. DWS自动化包裹称重扫码测体积快手台的开发和源码
  10. 2020 博客之星评选【票数排行榜】每日更新
  11. python notify wait_Python中的threading
  12. java报表开发(bi报表开发)
  13. 第二个c程序,日语208音练习
  14. 在H5中使用qrcode, qrcodejs2生成二维码
  15. 影响搜索引擎排名四个要点
  16. 颌面骨折方向文献整理(21篇)
  17. 阅读和实践是最好的老师
  18. 终极解决大黄峰黑屏加信号问题,觉得有用请顶我
  19. Unity虚拟天文馆
  20. 书单|刀剑如梦,如何走好自己的江湖路?

热门文章

  1. 关于IDEA代码的整理以及函数
  2. 计算机知识产权 教学目标,计算机教学设计模板
  3. java不要无限循环_java – 看似无限循环终止,除非使用System.out.println
  4. oracle导出数据视频教程,Oracle导入导出数据的几种方式
  5. 埃斯顿机器人 王杰高_埃斯顿自动化王杰高博士受邀赴韩参加“ROBOT WORLD 2016”等一系列相关活动...
  6. matplotlib 设置标注方向_Python 使用matplotlib画图添加标注、及移动坐标轴位置
  7. java查看 被应用_java – 如何查看应用程序正在使用的当前堆大小?
  8. linux 安装系统 逻辑卷,Linux逻辑卷工具lvm的使用教程
  9. android 8三星note8,信息太多很烦琐?告诉你三星Note8有妙招
  10. 服务器批量修改代码,利用Redis实现多服务器批量操作