您的位置:首页 > 财经 > 金融 > 百度的特点和优势_电脑浏览器网页打不开是什么原因_最近的国际新闻热点_培训体系包括四大体系

百度的特点和优势_电脑浏览器网页打不开是什么原因_最近的国际新闻热点_培训体系包括四大体系

2024/11/19 14:14:22 来源:https://blog.csdn.net/CSDN20221005/article/details/142548579  浏览:    关键词:百度的特点和优势_电脑浏览器网页打不开是什么原因_最近的国际新闻热点_培训体系包括四大体系
百度的特点和优势_电脑浏览器网页打不开是什么原因_最近的国际新闻热点_培训体系包括四大体系

小程序打包

打包上线流程

  1. 打包命令: pnpm build:mp-weixin
  2. 效果预览: 把打包后的文件导入微信开发者工具 (dist\build\mp-weixin)
  3. 代码上传: 点击微信开发者工具的上传按钮, 上传代码,
  4. 审核发布: 登录微信公众平台, 提交审核, 审核后发布
  5. 辅助工具: 有些团队会使用开发辅助工具 miniprogran-ci 上传代码

H5打包

条件编译: 让代码按条件编译到不同平台, 保证代码只在可以兼容的平台生效

// #ifdef MP-WEIXIN
// 获取code
let code = ''
onLoad(async () => {const res = await wx.login()code = res.code
})// 微信登录
const onGetPhoneNumber: UniHelper.ButtonOnGetphonenumber = async (ev) => {const encryptedData = ev.detail!.encryptedData!const iv = ev.detail!.iv!const res = await postLoginWxMin({encryptedData,iv,code,})
}
// #endif
</script><template><view class="viewport"><view class="login"><!-- 网页端表单登录 --><!-- #ifdef H5 --><input class="input" type="text" placeholder="请输入用户名/手机号码" /><input class="input" type="text" password placeholder="请输入密码" /><button class="button phone">登录</button><!-- #endif --><!-- 小程序端授权登录 --><!-- #ifdef MP-WEIXIN --><button class="button phone" open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber"><text class="icon icon-phone"></text>手机号快捷登录</button><!-- #endif --></view></view>
</template>
  1. 语法: 通过特殊注释, 以 #ifdef 或 #ifndef 加 平台名称 开头,以 #endif 结尾。
  2. 支持vue, js, ts, css, scss,packag.json等文件
  3. 开发中可能有多处代码要进行平台兼容性处理, 可用通过wx. 和 open-type关键词快速搜索

  1. 实现效果: 小程序端使用微信授权登录, h5端使用账号密码登录

配置相对路径: 默认情况下, 打包h5使用的是绝对路径, 很多时候网站并不是部署在服务器的根路径下, 所以一般配置成相对路径, 更加灵活

{/* 网页端特有配置 */"h5": {"router": {// 基础路径:./ 为相对路径"base": "./"}} 
}
  1. 预览h5: 使用Live Server插件打开/dist/build/h5 目录下的 index.html 文件
  2. 效果: 默认使用绝对路径加载资源, 配置之后使用相对路径加载资源

安卓打包

真机调试: 本地代码运行到真机预览调试

  1. 导入到HBuilderX, 运行到手机或模拟器, 运行到安卓App基座

  1. 数据线连接手机, 开启开发者模式

  1. 运行测试

  1. 如果出现警告,说明编译器版本和SDK版本不一致

  1. 常见故障排除指南

  1. 数据线(不是充电线)连接手机,部分手机需要安装驱动程序
  2. 开启开发者模式, 不同手机步骤可能不同

云打包: 打包成可以安装使用的软件包

  1. 登录DCloud账号

  1. 获取DCloud AppID, 设置应用名称, 设置App图标

  1. 发行->云打包 -> 打开所在目录 -> 右键->安装到手机

  • Android包名-> uni.net.itheima.orabbit (uni.域名倒写)
  • 云端证书: 详情->DCloud开发者中心->应用管理->我的应用->应用名称->Android云端证书->创建证书
  • 打正式包, 快速安心打包

  • 如果需要上架应用市场, 需要查看各市场上架流程和规则

ios打包

真机预览: ios端的真机预览和打包需要使用mac电脑

  1. 导入到HBuilderX
  2. 运行到IOS App基座
  • 运行到真机需要证书支持
  • ios IDP/IEP证书
  • iOS证书(.p12)和描述文件(.mobileprovision)申请 - DCloud问答
  • 打包ios应用所需的证书和证书profile文件的创建方法 - DCloud问答
  • ios证书必须有苹果开发者账号, 一年收费几百块
  1. 运行到IOS模拟器 App基座
  • 下载Xcode模拟器

ios打包

  1. ios打包和安卓打包流程上一样
  2. 只是证书的申请上有区别

跨端兼容

每个端都有自己的特征, uniapp尽可能的磨平这些差异,但是不可能完全磨平, 需要我们自己处理

  1. 更多兼容性问题参考官
  2. uniapp跨端注意
  3. uniappCss支持
  4. uniapp条件编译

选择器兼容: 小程序端和APP端不支持 * 选择器, 运行时会报错

  1. 跨端项目中不使用 * 选择器 , 使用并集选择器选择标签

页面适口差异: 适口就是可视区域, 专业称为webview, 不同端对适口的计算规则不一样

  1. 小程序端和app端的适口计算是一致的:
  • tabbar页面的适口不包含上下导航部分
  • 普通页面的适口不包含顶部导航部分
  1. h5端的适口就是全部可视区域, 上下导航部分包含在适口内
  2. 不同的适口计算规则, 会导致代码跨端编译后, 各端的表现出现差异

问题1: 购物车的猜你喜欢在H5端不能正确的下拉触底加载更多数据

问题原因: 没有给page页面设置高度, page的高度就等于整个页面的高度, 即便内容滑动触底也无法触发加载更多

解决方案: 让page页面继承父容器的高度, 父容器的高度uniapp已经处理好了, 减去了上下导航的高度

page{hright:100%
}

问题2: 定位错位的问题

  1. 问题原因: 适口计算规则不同, 导致h5页面的定位原点靠下, 内容会被tabber遮挡住
  2. 解决方案: 使用uni提供的css变量, uniapp官网->教程->css语法->css变量

.toolbar {position: fixed;left: 0;right: 0;bottom: var(--window-bottom);
}

h5端是单页面应用, 默认开启 scoped 样式隔离, App端由webview渲染, 组件样式也会默认隔离

  1. 问题: 骨架屏样式在小程序端正常, H5和App变形了

  1. 原因: 小程序端不存在样式隔离, 骨架屏组件可以继承一些全局的样式, 所以是正常的, 但是在h5和app中, 由于样式隔离,继承不到全局样式, 造成变形
  2. 解决: 把骨架屏需要的其他样式,全部抽离出来, 按条件编译, 引入到骨架屏组件

结构差异: app端渲染结构和小程序端渲染结果存在差异的, 我们给page设置的属性在app端不会生效, 因为app端不会渲染page这一层, 所以要做一些兼容性处理

  1. app端调试: 运行到手机或模拟器->显示Webview调试控制台

组件兼容: uniapp内置的组件借鉴的是小程序组件, 不同平台具有差异性, 所以要按需处理

  1. 客服功能只能在小程序环境支持, h5端和app端不支持, 所以要通过条件编译语法进行处理

JS API兼容: 非h5端, 不支持window, document等JS API, uni-app扩展了uni对象, 封装了大量支持跨端的JS API, 如果使用了各端专有的API, 如微信支付等, 需要添加条件编译

// #ifdef H5 || APP-PLUSuni.chooseImage({count: 1,success: (res) => {// 文件路径const tempFilePaths = res.tempFilePaths// 上传uploadFile(tempFilePaths[0])},})// #endif// #ifdef MP-WEIXINuni.chooseMedia({// 文件个数count: 1,// 文件类型mediaType: ['image'],success: (res) => {// 本地路径const { tempFilePath } = res.tempFiles[0]// 上传uploadFile(tempFilePath)},})// #endif
  1. uni.chooseMedia()方法不支持App和H5环境,
  2. 所以在H5和App环境中, 使用uni.chooseImage() 方法进行文件上传

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com