移動Web體驗月報(6月):MIP 核心代碼升級,增加基于 Vue 開發能力

原創: 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 核心代碼研發工程師將對此進行深度解讀。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535821.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535821.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535821.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

騰訊云ubuntu18安裝圖形化界面

0、apt-get update 1、sudo apt-get install xinit 2、sudo apt-get install gdm3 3、apt-get install ubuntu-desktop

2017 到 2018,PWA 技術到底經歷了什么

高磊 OpenWeb開發者 1周前 在 GMTC 2018 全球大前端會議舉辦期間&#xff0c;高磊擔任主題演講嘉賓&#xff0c;并擔任 PWA 專場出品人。作為有近 10 年 Web 前端技術開發、管理經驗的開發者&#xff0c;高磊一直關注著 PWA 技術的發展。 2017年 6月10日&#xff0c;GMTC 201…

CentrOS7靜默安裝oracle11g

最近要做一個用ogg實現oracle到kafka的增量數據實時同步&#xff0c;但是Oracle就讓我裝了好久&#xff0c;這里來記錄一下安裝oracle過程。 1.建立swap分區 創建充當swap分區的文件&#xff0c;文件大小就是要增加的swap大小&#xff0c;of是文件位置&#xff0c;bs為單位&a…

MIP 擴展組件開發手冊

本手冊將向你展示&#xff0c;完成一個 MIP 擴展組件的開發需要做哪些事情。在此之前&#xff0c;我們假定你&#xff1a; 有一定的 HTML、CSS 和 JavaScript 基礎 了解 AMD 的模塊管理方式 熟悉版本管理工具 Git 有自己的 GitHub 賬號 懂得使用 npm 步驟 通常情況下&am…

Zookeeper分布式安裝部署

本篇博客將主要介紹如何進行Zookeeper的分布式安裝部署 集群規劃 在Carlota1、Carlota2、Carlota3三臺機器上進行部署。 安裝部署 1、解壓安裝 上傳壓縮文件apache-zookeeper-3.6.1-bin.tar.gz到三臺機器上解壓文件tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz改個名&…

MIP 網站中熊掌號登錄

標題內容類型通用支持布局responsive,fixed-height,fill,container,fixed所需腳本https://c.mipcdn.com/static/v1/mip-mustache/mip-mustache.js https://c.mipcdn.com/static/v1/mip-login-xzh/mip-login-xzh.js 注意&#xff1a;使用該組件必須在引用本組件鏈接前引用 <…

日常問題——hadoop 任務運行到running job就卡住了 INFO mapreduce.Job: Running job: job_1595222530661_0003

執行mapreduce沒報錯&#xff0c;可是任務運行到running job就卡住在 INFO mapreduce.Job: Running job: job_1595222530661_0003 解決方法 mapred-site.xml下將 <property><name>mapreduce.framework.name</name><value>yarn</value> </pr…

MIP 支付組件,支付流程:

MIP 支付組件&#xff0c;支付流程&#xff1a; 標題內容類型通用支持布局responsive,fixed-height,fill,container,fixed所需腳本https://c.mipcdn.com/static/v1/mip-simple-pay/mip-simple-pay.js,https://c.mipcdn.com/static/v1/mip-login-xzh/mip-login-xzh.js 注意&…

代碼實現——MapReduce統計單詞出現次數

需求 對以下txt文檔進行單詞出現次數統計&#xff08;txt文檔在/Users/lizhengi/test/input/目錄下&#xff09; hadoop take spring spark hadoop hdfs mapreduce take Tomcat tomcat kafka kafka flume flume hive實現 1、新建Maven工程&#xff0c;pom.xml依賴如下 <…

MIP個性化組件提交規范

MIP個性化組件一般用來實現前后端數據傳輸或特殊的交互效果&#xff0c;由廣大開發者貢獻。出于性能、可維護性等方面的考慮&#xff0c;開發者在新增組件或升級組件時&#xff0c;請遵守以下規范。 規范中的必須&#xff08;MUST&#xff09;&#xff0c;禁止&#xff08;MUS…

jar包在Hadoop集群上測試(MapReduce)

本片使用MapReduce——統計輸出給定的文本文檔每一個單詞出現的總次數的案例進行&#xff0c;jar包在集群上測試 1、添加打包插件依賴 <build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.6.2</versio…

代碼實現——MapReduce實現Hadoop序列化

簡單介紹 1、什么是序列化 序列化&#xff1a;把內存中的對象&#xff0c;轉換成字節序列(或其他數據傳輸協議)以便于存儲到磁盤(持久化)和網絡傳輸。反序列化&#xff1a;將收到字節序列(或其他數據傳輸協議)或者是磁盤的持久化數據&#xff0c;轉換成內存中的對象。 2、 為…

日常問題——hadoop啟動后發現namenode沒有啟動,但是排除了格式化過度的問題

hadoop啟動后發現namenode沒有啟動&#xff0c;網上說的格式化過度的問題我是沒有的&#xff0c;因為我只格式化過一次。之后查看日志 vim /opt/hadoop/logs/namenode對應的log文件 發現 2020-03-03 23:16:21,868 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Na…

Zookeeper3.6.1常用的Shell命令

1、客戶端連接 zkCli.sh zkCli.sh -server host:port2、顯示節點信息 -s狀態 -w監聽器 -R遞歸 ls [-s] [-w] [-R] path3、創建節點 -s加序列號 -e臨時節點 create [-s] [-e] path [data]4、獲取節點值 -s狀態 -w監聽器 get [-s] [-w] path5、設置節點值 -s狀態 set [-s] […

CentOS7下MySQL5.7的安裝

1、下載MySQL 安裝包&#xff1a; wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmyum -y localinstall mysql57-community-release-el7-11.noarch.rpm 2、在線安裝MySQL yum -y install mysql-community-server 3、啟動mysql 服務 systemct…

CentOS7下Hive的安裝配置

0、安裝前提 安裝配置jdk與hadoop安裝配置好mysql 1、下載上傳 下載hive&#xff0c;地址:http://mirror.bit.edu.cn/apache/hive/上傳到指定位置scp apache-hive-3.1.2-bin.tar.gz rootCarlota1:/usr/local/apps 2、解壓安裝 tar -zxvf apache-hive-3.1.2-bin.tar.gzmv a…

Hive常用的操作命令

Hive常用的交互命令 hive 進入數據庫hive -e 不進入hive的交互窗口執行sql語句hive -f 執行sql腳本hive -help 查看幫助 Hive常用數據庫的操作命令 show databases;查看hive中的所有數據庫use default;用default數據庫create database myhive ;創建數據庫create database if…

Hive常見的屬性配置

配置文件 默認配置文件&#xff1a;hive-default.xml 用戶自定義配置文件&#xff1a;hive-site.xml 用戶自定義配置會覆蓋默認配置。另外&#xff0c;Hive也會讀入Hadoop的配置&#xff0c;因為Hive是作為Hadoop的客戶端啟動的&#xff0c;Hive的配置會覆蓋Hadoop的配置。配…

什么是集群(cluster)

1、集群 1.1 什么是集群 簡單的說&#xff0c;集群(cluster)就是一組計算機&#xff0c;它們作為一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集群的節點(node)。一個理想的集群是&#xff0c;用戶從來不會意識到集群系統底層的節點&#xff0c;在他/她們看來&am…

Kafka:集群部署

0、環境準備 安裝jdk&#xff0c;配置環境提前安裝zookeeper 1、解壓安裝 將tar壓縮包上傳tar -zxvf kafka_2.12-2.5.0.tgz 2、配置變量環境 vi /etc/profile #kafka export KAFKA_HOME/usr/local/apps/kafka_2.12-2.5.0 export PATH$PATH:$KAFKA_HOME/binsource /etc/pr…