zoukankan      html  css  js  c++  java
  • 移动端开发基础【15】H5和小程序开发注意事项

    H5开发注意事项

    1.H5发布到服务器的注意事项

    (1)第一步是配置发行后的路径,注意,发行在网站根目录的可以不配置路径,比如发行网站路径是 www.xxxx.com/html5,在 manifest.json 文件内编辑 h5 节点,router 下增加 base 属性为 html5.

     

    (2)点击菜单 发行-> H5

    (3)在项目的 unpackage/dist/build/h5 目录下找到要部署的H5资源,部署到服务器(或者使用本地服务器预览)

    2.引用第三方js的方式

    (1)通过 npm 引入,并且通过条件编译,只有是 h5 平台是才 import 相应的库。

    (2)在 manifest.json 文件编辑 h5 节点的 template 属性,填写 html 模版路径,在 html 模版里面可以使用 script 的方式引入三方的 js,如下示例是加了百度统计的 html 模板部分代码,模版全部代码可参考自定义模板:

    ...

    <body>

         <noscript>

             <strong>Please enable JavaScript to continue.</strong>

         </noscript>

         <div id="app"></div>

         <!-- built files will be auto injected -->

         <script>

             var _hmt = _hmt || [];

             (function() {

                 var hm = document.createElement("script");

                 hm.src = "https://hm.baidu.com/hm.js?xxxxxx";

                 var s = document.getElementsByTagName("script")[0];

                 s.parentNode.insertBefore(hm, s);

             })();

         </script>

    </body>

    ...

    3.组件方面需要注意

    H5开发支持 mpvue 组件、支持普通 vue 组件、不支持小程序自定义组件、不支持 nvue。

    H5 版 uni-app 全支持 vue 语法,所以可能造成部分写法在 H5 端生效,在小程序或 App 端不生效。

    H5 校验了更严格的 vue 语法,有些代码的写法不规范会报警,比如:data 后面写对象会报警,必须写 function;不能修改 props的值;组件最外层 template 节点下不允许包含多个节点等。

    编译为 H5 版后生成的是单页应用(SPA)。

    4.白屏或者网络不给力的提示

    一般是跨域问题,网络请求(request、uploadFile、downloadFile等)在浏览器存在跨域限制,需服务端配合才能跨域。解决方案有2种:

    (1)服务器打开跨域限制;

    (2)本地浏览器安装跨域插件,具体的可以参考:Chrome 跨域插件免FQ安装 或 firefox跨域插件。

    5.原生控件

    APP 和小程序的导航栏和 tabbar 均是原生控件,元素区域坐标是不包含原生导航栏和 tabbar 的;而 H5 里导航栏和 tabbar是 div 模拟实现的,所以元素坐标会包含导航栏和tabbar的高度。为了优雅的解决多端高度定位问题,uni-app 新增了2个css变量:--window-top 和 --window-bottom,这代表了页面的内容区域距离顶部和底部的距离。

    举个实例,如果你想在原生tabbar 上方悬浮一个菜单,之前写 bottom:0。这样的写法编译到 h5 后,这个菜单会和 tabbar 重叠,位于屏幕底部。而改为使用 bottom:var(--window-bottom),则不管在 app 下还是在h5下,这个菜单都是悬浮在 tabbar 上浮的。这就避免了写条件编译代码。当然仍然也可以使用 H5 的条件编译处理界面的不同。

    6.单位和组件

    CSS 內使用 vh 单位的时候注意 100vh 包含导航栏,使用时需要减去导航栏和 tabBar 高度,部分浏览器还包含浏览器操作栏高度,使用时请注意。

    正常支持 upx,px 是真实物理像素。暂不支持通过设 manifest.json 的 "transformPx" : true,把 px 当动态单位使用。

    使用罗盘、地理位置、加速计等相关接口需要使用 https 协议,本地预览(localhost)可以使用 http 协议。

    PC 端 Chrome 浏览器模拟器设备测试的时候,获取位置 API 需要连接谷歌服务器。

    组件内(页面除外)不支持 onLoad、onShow 等页面生命周期。

    为避免和内置组件冲突,自定义组件请加上前缀(但不能是 u 和 uni)。比如可使用的自定义组件名称:my-view、m-input、we-icon,例如不可使用的自定义组件名称:u-view、uni-input,如果已有项目使用了可能造成冲突的名称,请修改名称,另外微信小程序下自定义组件名称不能以 wx 开头。

    小程序开发注意事项

    各家小程序的实现机制不同,所以可能存在的平台兼容的问题。

    1.浏览器内核差异

    各家小程序的浏览器内核不同,可能会造成css兼容性问题

    2.自定义组件渲染差异

    微信/QQ/百度/字节跳动这四家小程序,自定义组件在渲染时会比App/H5端多一级节点,在写样式时需要注意:使用flex布局时,直接给自定义组件的父元素设置为display:flex不能影响到自定义组件内部的根节点,需要设置当前自定义组件为display:flex才可以。在自定义组件内部设置根元素高度为100%,不能撑满自定义组件父元素。需要同时设置当前自定义组件高度为100%才可以。支付宝小程序不会插入节点,不存在如上问题。

    3.vendor.js过大的处理方式

    小程序工具提示vendor.js过大,已经跳过es6向es5转换。这个转换问题本身不用理会,因为vendor.js已经是es5的了。

    关于体积控制,参考如下:

    使用运行时代码压缩

    HBuilderX创建的项目勾选运行-->运行到小程序模拟器-->运行时是否压缩代码

    cli创建的项目可以在pacakge.json中添加参数--minimize,示例:

    "dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize"

    使用分包优化,关于分包优化的说明:

    (1)在对应平台的配置下添加"optimization":{"subPackages":true}开启分包优化

    (2)目前只支持mp-weixin、mp-qq、mp-baidu的分包优化

    (3)分包优化具体逻辑:

    静态文件:分包下支持 static 等静态资源拷贝,即分包目录内放置的静态资源不会被打包到主包中,也不可在主包中使用

    js文件:当某个 js 仅被一个分包引用时,该 js 会被打包到该分包内,否则仍打到主包(即被主包引用,或被超过 1 个分包引用)

    自定义组件:若某个自定义组件仅被一个分包引用时,且未放入到分包内,编译时会输出提示信息.

     

    官网:http://www.lenbor.com
  • 相关阅读:
    jQuery --checkbox全选和取消全选简洁高效的解决办法
    扩展jquery插件的方法
    git
    varchar,char,varchar2,mybatis查询无返回
    Docker拉取mysql并连接
    Map
    mysql数据库用ip访问
    docker的安装和docket拉取Oracle
    springboot
    linux 安装mysql
  • 原文地址:https://www.cnblogs.com/lenbor/p/13328166.html
Copyright © 2011-2022 走看看