H5与小程序开发知识点

569 阅读3分钟

前端面试题系列文章:

【1】「2023」HTML基础知识点

【2】「2023」ECMAScript基础知识点

【3】「2023」CSS基础知识点

【4】「2023」计算机网络基础知识

【5】「2023」计算机网络-HTTP知识点

【6】「2023」浏览器相关知识点

【7】「2023」React相关知识点

【8】「2023」TypeScript相关知识点

【9】「2023」Webpack相关知识点

【10】「2023」代码输出结果相关知识点

【11】「2023」手动实现代码相关知识点

【12】「2023」性能优化相关知识点

【13】「2023」H5相关知识点

X-Mind原图地址:

FE-eight-part-essay

如何解决滚动穿透问题?

在弹窗打开的时候给body设置position:fixed属性,设置并记录top值防止滚动位置丢失。在弹窗关闭的时候把position属性改回原来的值,并且设置scrollTop为top。

如何查看H5页面的网络信息?

抓包工具Charles

在Chales抓包工具里可以查看网络信息,debugger,做代理等调试操作。

vconsole或edura等调试工具

同样也可以监控网络信息,可以查看本地缓存的信息,打印变量等操作。

H5如何兼容不同的分辨率的设备?

在 html 头部设置 mata 标签如下所示,让当前 viewport 的宽度等于设备的宽度,同时不允许用户手动缩放。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
  1. 在布局时候的宽高使用postcss插件转成vw布局。(根据视口来设置宽高)
  2. 对图片来说,设置background-size:containorbackground-size:coverno-repeat

如何画出0.5px的线?

使用 transfrom 将1px的线缩小

.calss1 {
  position: relative;
  &::after {
    content:"";
    position: absolute;
    bottom:0px;
    left:0px;
    right:0px;
    border-top:1px solid #666;
    transform: scaleY(0.5);
  }
}

对IphoneX底部安全距离的设置

padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */
padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS >= 11.2 */

JSBridge的实现原理?

简单来说,创建一个iframe,改变src属性去获取网络资源。App拦截特定的网络请求,调用对应的能力,将执行结果返回给HTML页面。

Taro是如何用一套代码适配多个平台的?

对于H5平台

由于 Taro 本身就是按照React的语法来写的,所以Taro内部也是直接用webpack-runner来打包的。对于<View>等组件,Taro本身就会编译多个平台,根据传入的编译参数编译成不同平台的代码。对于路由问题,经查阅Taro源码发现,Taro写了一个自定义插件来读取app.config.js文件,会将其中的路由等信息先预先读取出来,最终还是由Webpack进行构建。

对于小程序平台

可能就比较复杂一点,需要对代码内容进行词法分析,替换对应的关键代码,最终将React代码解释成小程序平台能运行的代码。