5. 完整示例代码

其实执行到上一步我们已经完成了示例的全部开发步骤。但为了清晰和可读性考虑,我们把最终形态的示例代码展示给开发者。

index.html

  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. <title>My First MIP Page</title>
  5. <meta name="apple-touch-fullscreen" content="yes">
  6. <meta name="apple-mobile-web-app-capable" content="yes">
  7. <meta name="format-detection" content="telephone=no">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
  9. <link rel="stylesheet" href="https://c.mipcdn.com/static/v2/mip.css">
  10. <style mip-custom>
  11. h2 {
  12. text-align: center;
  13. margin: 10px auto;
  14. }
  15. .main-image {
  16. margin: 10px auto;
  17. display: block;
  18. }
  19. p {
  20. margin: 10px;
  21. }
  22. .next-link {
  23. float: right;
  24. margin-right: 10px;
  25. padding: 0 10px;
  26. background: #69f;
  27. border-radius: 20px;
  28. height: 40px;
  29. line-height: 40px;
  30. color: white;
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <h2>这是我的第一个 MIP 页面</h2>
  36. <mip-img src=" https://boscdn.baidu.com/assets/mip/codelab/shell/mashroom.jpg" width="300" height="300" class="main-image"></mip-img>
  37. <p>MIP 全称为 Mobile Instant Pages,因此是以页面 (Page) 为单位来运行的。开发者通过改造/提交一个个页面,继而被百度收录并展示。 </p>
  38. <p>但以页面为单位会带来一个问题:当一个 MIP 页面中存在往其他页面跳转的链接时,就会使浏览器使用加载页面的默认行为来加载新页面。这“第二跳”的体验比起从搜索结果页到 MIP 页面的“第一跳”来说相去甚远。 </p>
  39. <p>MIP 为了解决这个问题,引入了 Page 模块。它的作用是把多个页面以一定的形式组织起来,让它们互相之间切换时拥有和单页应用一样的切换效果,而不是浏览器默认的切换效果。这个功能大部分情况下对开发者是透明的,但也需要开发者遵守一定的页面编写规范。除此之外,一些和路由相关的信息和操作也会提供给开发者使用。这两部分将是本章节的主要内容。</p>
  40. <a mip-link href="./second.html" class="next-link">Next Page</a>
  41. <mip-shell>
  42. <script type="application/json">
  43. {
  44. "routes": [
  45. {
  46. "pattern": "/use-shell.html",
  47. "meta": {
  48. "header": {
  49. "show": true,
  50. "title": "我的首页",
  51. "logo": "https://gss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/favicon64.ico",
  52. "buttonGroup": [
  53. {
  54. "name": "subscribe",
  55. "text": "关注"
  56. },
  57. {
  58. "name": "chat",
  59. "text": "发消息"
  60. }
  61. ]
  62. },
  63. "view": {
  64. "isIndex": true
  65. }
  66. }
  67. },
  68. {
  69. "pattern": "*",
  70. "meta": {
  71. "header": {
  72. "show": true,
  73. "title": "其他页面"
  74. }
  75. }
  76. }
  77. ]
  78. }
  79. </script>
  80. </mip-shell>
  81. <script src="https://c.mipcdn.com/static/v2/mip.js"></script>
  82. </body>
  83. </html>

second.html

  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. <title>My Second MIP Page</title>
  5. <meta name="apple-touch-fullscreen" content="yes">
  6. <meta name="apple-mobile-web-app-capable" content="yes">
  7. <meta name="format-detection" content="telephone=no">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
  9. <link rel="stylesheet" href="https://c.mipcdn.com/static/v2/mip.css">
  10. <style mip-custom>
  11. h2 {
  12. text-align: center;
  13. margin: 10px auto;
  14. }
  15. .main-image {
  16. margin: 10px auto;
  17. display: block;
  18. }
  19. p,h3 {
  20. margin: 10px;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <h2>这是我的第二个 MIP 页面</h2>
  26. <mip-img src="https://www.mipengine.org/static/img/mip_logo_3b722d7.png" width="213" height="112" class="main-image"></mip-img>
  27. <p>MIP 为所有组件提供了一些常用的样式,避免开发者在编写组件时重复实现。这部分样式会在以后的迭代中逐步完善,敬请开发者们关注。</p>
  28. <h3>一像素边框</h3>
  29. <p>针对移动端浏览器在高清屏幕显示中最常见的“一像素边框”问题,MIP 给出了通用的解决方案。开发者只需要引入固定的类名即可绘制出真实的一像素边框。</p>
  30. <mip-shell>
  31. <script type="application/json">
  32. {
  33. "routes": [
  34. {
  35. "pattern": "/use-shell.html",
  36. "meta": {
  37. "header": {
  38. "show": true,
  39. "title": "我的首页",
  40. "logo": "https://gss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/favicon64.ico",
  41. "buttonGroup": [
  42. {
  43. "name": "subscribe",
  44. "text": "关注"
  45. },
  46. {
  47. "name": "chat",
  48. "text": "发消息"
  49. }
  50. ]
  51. },
  52. "view": {
  53. "isIndex": true
  54. }
  55. }
  56. },
  57. {
  58. "pattern": "*",
  59. "meta": {
  60. "header": {
  61. "show": true,
  62. "title": "其他页面"
  63. }
  64. }
  65. }
  66. ]
  67. }
  68. </script>
  69. </mip-shell>
  70. <script src="https://c.mipcdn.com/static/v2/mip.js"></script>
  71. </body>
  72. </html>