vue面试题(day06)

文章目录

  • 前言
    • 请谈谈WXML与标准的html的异同?
    • 请谈谈WXSS和CSS的异同?
    • 请谈谈微信小程序主要目录和文件的作用?
    • 请谈谈小程序的双向绑定和vue的异同?
    • 简单描述下微信小程序的相关文件类型?
    • 微信小程序有哪些传值(传递数据)方法?
    • bindtap和catchtap的区别?
    • wx.navigateTo(),wx.redirectTo(),wx.switchTab(),wx.navigateBack(),wx.reLaunch()的区别?
    • 微信小程序与H5的区别?
    • 小程序和Vue写法的区别?
    • rpx的理解?
    • 微信小程序可以进行dom操作吗?
    • 微信小程序与vue区别?


前言

请谈谈WXML与标准的html的异同?

WXML是小程序框架设计的一套标签语言,用来构建小程序页面的结构,其作用类似于网页开发中HTML。

  • 都是用来描述页面的结构;
  • 都由标签、属性等构成;
  • 标签名字不一样,且小程序标签更少,单一标签更多;
  • 小程序多了一些 wx:if 这样的属性以及 {{ }} 这样的表达式
  • WXML仅能在微信小程序开发者工具中预览,而HTML可以在浏览器内预览
  • 组件封装不同, WXML对组件进行了重新封装,
  • 小程序运行在JS Core内,没有DOM树和window对象,小程序中无法使用window对象和document对象

请谈谈WXSS和CSS的异同?

首先新增了 rpx尺寸单位
CSS中需要手动进行像素单位换算,例如rem
WXSS支持新的尺寸单位rpx,在不同大小的屏幕上小程序会自动进行换算
提供了全局的样式和局部样式
项目根目录中的app.wxss会作用于所有小程序页面
局部页面的.wxss样式仅对当前页面生效
WXSS仅支持部分CSS选择器
		.类选择器和id选择器
		元素选择器
		并集选择器、后代选择器
		::after和::before等伪类选择

请谈谈微信小程序主要目录和文件的作用?

project.config.json: 项目配置文件,用得最多的就是配置是否开启https校验;
App.js :设置一些全局的基础数据等,页面的脚本文件,存放页面的数据、事件处理函数等;
App.json :当前页面的配置文件,配置窗口的外观 、表现等,页面中的配置项会覆盖 app.json的;
App.wxss :公共样式,引入iconfont等;
pages: 里面包含一个个具体的页面;
index.json: (配置当前页面标题和引入组件等);
index.wxml:页面的模板结构文件;
.wxss文件:当前页面的样式表文件;
index.js :(页面的逻辑,请求和数据处理等);

请谈谈小程序的双向绑定和vue的异同?

  • 小程序中的数据双向绑定

    首先通过 bindinput 绑定文本框的输入事件
    在 data 中声明一个变量 content ,将其动态绑定成文本框的 value 值
    在 bindinput 事件中通过事件参数 e.detail.value 可以获取到文本框中最新的 value 值
    通过 this.setData 将文本框最新的 value 值 赋值给 动态绑定的value值 content 即可实现数据的双向绑定

  • vue中的数据双向绑定

    首先为文本框绑定 @input 监听文本框的输入事件
    为文本框动态绑定 value 属性,其值是在data中定义的变量
    在 @input绑定的事件中 通过事件参数 event.target.value 可以获取到 input 框中最新的value值
    将其重新获取到的 value 赋值给 value值动态绑定的那个变量
    区别:
    大体上区别不大,绑定事件不同,以及获取value值的具体方式不同,以及在小程序中设置data中的数据,
    需要调用 this.setData方法进行设置。

简单描述下微信小程序的相关文件类型?

1.WXML(weixin Markup Language) 是框架设计的一套标签语言,结合基础组件,事件系统,可以构建出页面的结构。内容主要事微信自己定义的一套组件。

2.WXSS(WeiXin Style Sheets) 是一套样式语言,主要用于描述 WXML 的组件样式。

3.JS 逻辑处理,网络请求

4.json 小程序设置,静态配置

主要文件

app.json 必须要有这个文件,此文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置tabBar 最少两个。
在这里插入图片描述
4个配置项的作用
pages:用来记录当前小程序所有页面的路径
window :全局定义小程序所有页面 的背景色、文件颜色等
style:全局定义小程序组件所使用的样式版本
sitemapLocation:用来指明sitemap.json的位置

微信小程序有哪些传值(传递数据)方法?

  • 使用全局变量传递数据

     利用app.js 中的 globalData 将数据存储为全局变量,在需要使用的页面通过getApp().globalData
     获取数据
     
     例如:	App({
     	globalData:{
         data: { name: 'demo' }
     	}
     })
     
     使用组件  app.globalData.data
    
  • 使用本地存储数据传递

     使用小程序提供缓存:
     同步缓存:wx.setStorageSync 与 wx.getStorageSync 
     异步缓存:wx.setStorage 与 wx.getStorage
     移除本地缓存:wx.removeStorageSync(同步)、wx.removeStorage(异步)
     // 将数据存储在本地缓存中指定的 key 中
     
     例如:wx.setStorgaeSync('data','hello')
     	// 从本地缓存中同步获取指定 key 的内容
     	wx.getStorageSync('data')
     	// 从本地缓存中移除指定 key
     	wx.removeStorgae('data')
    
  • 使用路由传递数据

     详细解释:
     如果一个页面由另一个页面通过 wx.navigateTo 打开,这两个页面间将建立一条数据通道:
     被打开的页面可以通过 this.getOpenerEventChannel() 方法来获得一个 EventChannel 对象;
     wx.navigateTo 的 success 回调中也包含一个 EventChannel 对象。
     这两个 EventChannel 对象间可以使用 emit 和 on 方法相互发送、监听事件。
    
     传递组件
      wx.navigateTo({
       url: 'test?id=1',
       success: (res)=> {
         // 通过 eventChannel 向被打开页面传送数据
         res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
       }
     })
    

bindtap和catchtap的区别?

概念: bindtap和catchtap都属于点击事件函数,将事件绑定到组件上,点击组件后可以触发函数。

  • bindtap :子元素使用bindtap绑定事件后,执行的时候,会冒泡到父元素(触发父元素上绑定的bingtap事件)

  • catchtap :不会冒泡到父元素上,阻止事件冒泡
    二者区别:

     bindtap : 向上冒泡
    
     catchtap:向上不冒泡
    

wxml:

 <view>
    <button bindtap="tagName">点击事件</button>
  </view>

.js 页面写入

tagName: function(e){
    console.log(e);
}

wx.navigateTo(),wx.redirectTo(),wx.switchTab(),wx.navigateBack(),wx.reLaunch()的区别?

常见的微信小程序页面跳转方式有如下:

  • wx.navigateTo(Object)

     对于页面不是特别多的小程序,通常推荐使用 wx.navigateTo进行跳转, 以便返回原页面,
     以提高加载速度。
     当页面特别多时,则不推荐使用
    
  • wx.redirectTo(Object)

     wx.redirectTo()用于关闭当前页面,跳转到应用内的某个页面。可以避免跳转前页面占据
     运行内存,
     但返回时页面需要重新加载,增加了返回页面的显示时间
    

    wx.switchTab(Object)

     跳转到 tabBar页面,并关闭其他所有非 tabBar 页面
    

    wx.navigateBack(Object)

     wx.navigateBack() 用于关闭当前页面,并返回上一页面或多级页面,开发者可
     通过 getCurrentPages() 获取当前的
     页面栈,决定需要返回几层则设置对象的delta属性即可
    

    wx.reLaunch(Object)

     关闭所有页面,打开到应用内的某个页面,返回的时候跳到首页
    

总结
关于上述五种跳转方式,做下总结:

navigateTo 保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回到原页

redirectTo 关闭当前页面,跳转到应用内的某个页面

switchTab 跳转到 tabBar 页面,同时关闭其他非 tabBar 页面

navigateBack 返回上一页面

reLanch 关闭所有页面,打开到应用内的某个页面

其中关于它们的页面栈的关系如下:

avigateTo 新页面入栈

redirectTo 当前页面出栈,新页面入栈

navigateBack 页面不断出栈,直到目标返回页,新页面入栈

switchTab 页面全部出栈,只留下新的 Tab 页面

reLanch 页面全部出栈,只留下新的页面

微信小程序与H5的区别?

从开发的角度

H5和小程序的开发工具就非常不同,小程序都是依赖于微信客户端的,所以相对来说开发工具没有H5那么多;
与标准的H5语言是不一样的;而且还独立了很多的原生app的组件,所以它在组件封装上与H5也都是有所不同

从运行环境来看

​网页开发者需要面对的环境是各式各样的浏览器,PC 端需要面对 IE、Chrome、QQ浏览器等,在移动端需要
面对Safari、Chrome以及 iOS、Android 系统中的各式 WebView 。
而小程序开发过程中需要面对的是两大操作系统 iOS 和 Android 的微信客户端,以及用于辅助开发的小程序开发者
工具,小程序中三大运行环境也是有所区别的。

服务器配置:

因为小程序的性能会比H5 高一些,所以服务器的配置要求上来说,小程序的要求要比H5更高一些

系统权限

因为微信能获取到更多的系统权限,如网络通信状态、数据缓存能力等,这些系统级权限都能与微信小程序无缝衔接,
这也就是官方宣称的微信小程序能够拥有Native App(原生APP)的流畅性能。

而H5 web应用对系统本身的权限的获取则相对少了很多,这一点恰巧是H5 web应用经常被诟病的地方。也因此,
H5的大多数应用被圈定在业务逻辑简单、功能单一的范围上。

标签名字有点不一样

写 HTML 的时候,经常会用到的标签是 div, p, span,
小程序的 WXML 用的标签是 view, button, text 等等,这些标签就是小程序给开发者包装好的基本能力。小程序多了
一些 wx:if 这样的属性以及 {{ }} 这样的表达式
在网页的一般开发流程中,我们通常会通过 JS 操作 DOM (对应 HTML 的描述产生的树),以引起界面的一些变化
响应用户的行为。

操作方面来说:
网页开发者可以使用到各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作。
小程序的逻辑层和渲染层是分开的,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而
缺少相关的DOM API和BOM API。
这一区别导致了前端开发非常熟悉的一些库,例如 jQuery、 Zepto 等,在小程序中是无法运行的。
同时 JSCore 的环境同 NodeJS 环境也是不尽相同,所以一些 NPM 的包在小程序中也是无法运行的

小程序和Vue写法的区别?

事件定义区别

vue事件绑定:vue用@来绑定事件
		<button @click="dl">登陆</button>
		<input type="text" @input="input"/>
		


微信小程序绑定:微信小程序原声写法前面加bind后面加事件名
		<button bindtap="dl">登陆</button>
		<input type="text" bindinput="input"/>

事件函数传值

vue事件函数传值:vue传值直接写在函数括号中
		<button @click="dl(index)">登陆</button>

微信小程序事件函数传值:微信小程序传值需要用data-自定义名字={{需要传递的值}}
	<button bindtap="dl" data-index="{{index}}">登陆</button>

if语句

vue的if语句:if语句前加 “v-”
	<div v-if="index == 1">1<div>
	<div v-else-if="index == 2">2<div>
	<div v-else>3<div>
微信小程序if语句:微信小程序if语句前加 “wx:”,而且判断内容需要用 {{双大括号}} 包起来,第二行的else-if,直接省略成elif
	<view wx:if="{{index == 1}}">1<view>
	<view wx:elif="{{index == 2}}">2<view>
	<view wx:else>3<view>

关键字引用

vue的关键字引用:vue中属性名前面加 “:” 或者 v-bind
	<img :src="src" />
微信小程序关键字引用:微信小程序中只需要属性值加“{{}}”包起来就行
	<image src="{{src}}" />

for列表渲染

vue的for列表渲染:vue的for语法=(每一项数据名,索引名) in 数据名
	<block v-for="(item,i) in list" :key="i">
		<div>{{item.text}}</div>
	</block >
微信小程序的for列表渲染:
		微信小程序的for里只写数据名, 如果需要修改当前元素的数据名:wx:data-item=“自定义的数据名” 
		如果需要修改当前元素的索引名:wx:data-index=“自定义的索引名” 默认数据名是item,默认索引名是index

rpx的理解?

简介:
rpx ( responsive pixel)响应单位。

  • rpx是微信小程序独有的、解决屏幕自适应的尺寸单位
  • 可以根据屏幕宽度进行自适应,不论大小屏幕,规定屏幕宽为750rpx
  • 通过 rpx 设置元素和字体的大小,小程序在不同尺寸的屏幕下,可以实现自动适配

rpx 和 px之间的换算
在普通网页开发中,最常用的像素单位是px
在小程序开发中,推荐使用rpx这种响应式的像素单位进行开
1 rpx = 0.5 px = 1 物理像素

微信小程序可以进行dom操作吗?

微信小程序不支持document.querySelect获取元素,因为微信小程序的渲染层和逻辑层是独立的,但是它内置了获取元素的两种方法,第一种是通过
wx.createSelectorQuery()获取dom元素,第二种时给想要使用的对象绑定事件,输出e对象,就能拿到该对象的一些信息。

.创建选择器

    var query = wx.createSelectorQuery();

2.查询

   集合:query.selectAll('.traffic').boundingClientRect(()=>{}).exec()

   单个: query.select('.tripinfotitlelist').boundingClientRect(()=>{}).exec()

二、获取dom节点场景

1.与数据渲染无关(dom节点挂载结束即可获取,根据页面生命周期选择合适的时间获取)

2.与数据相关(数据渲染结束获取即可)

    this.setData({},{

      setTimeout(()=>{

              //获取即可

      },300)

    })

微信小程序与vue区别?

生命周期不一样,微信小程序生命周期比较简单
数据绑定也不同,微信小程序数据绑定需要使用{{}},vue 直接:就可以
显示与隐藏元素,vue中,使用 v-if 和 v-show 控制元素的显示和隐藏,小程序中,使用wx-if 和hidden 控制元素的显示和隐藏
事件处理不同,小程序中,全用 bindtap(bind+event),或者 catchtap(catch+event) 绑定事件,vue:使用 v-on:event 绑定事件,或者使用@event 绑定事件
数据双向绑定也不也不一样在 vue中,只需要再表单元素上加上 v-model,然后再绑定 data中对应的一个值,当表单元素内容发生变化时,data中对应的值也会相应改变,这是 vue非常 nice 的一点。微信小程序必须获取到表单元素,改变的值,然后再把值赋给一个 data中声明的变量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/2704.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【新星计划2023】SQL SERVER (01) -- 基础知识

【新星计划2023】SQL SERVER -- 基础知识1. Introduction1.1 Official Website1.2 Conn Tool2. 基础命令2.1 建库建表2.2 Alter2.3 Drop2.3 Big Data -- Postgres3.Awakening1. Introduction 1.1 Official Website 官方文档&#xff08;小技巧&#xff09; Officail Website: …

十个Python图像处理工具,不可不知

这些Python库提供了一种简单直观的方法来转换图像并理解底层数据。 今天的世界充满了数据&#xff0c;图像是这些数据的重要组成部分。但是&#xff0c;在使用它们之前&#xff0c;必须对这些数字图像进行处理 - 分析和操作&#xff0c;以提高其质量或提取一些可以使用的信息。…

【C++学习】继承

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《C学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; C是面向对象的编程语言&#xff0c;它有很多的特性&#xff0c;但是最重要的就是封装&#xff0c;继承…

【3DoF算法】

VR 3DoF算法介绍 核心&#xff1a;3DoF算法应用场景&#xff0c;在VIO应用中&#xff0c;当只有测量没有观测的情况下&#xff0c;6DoF算法的预测会退化成一个只有测量的3DoF算法&#xff0c;这时候需要使用3DoF算法&#xff0c;来更加稳定准确的获取3DoF位姿&#xff0c;直到…

【VSCode】Windows 下搭建 Fortran 环境

文章目录Part.I 预备知识Part.II 安装与配置Chap.I 编译环境Chap.II 插件Part.III 测试Chap.I 一个示例Chap.II 注意事项Part.I 预备知识 Fortran 是一种比较古老的语言了&#xff0c;当时作为一种科学计算工具&#xff0c;还是比较火的&#xff0c;因为很多有名的软件都是基于…

LFM雷达实现及USRP验证【章节2:LFM雷达测距】

目录 1. 参数设计 几个重要的约束关系 仿真参数设计 2. matlab雷达测距代码 完整源码 代码分析 回顾&#xff1a;LFM的基本原理请详见第一章 本章节将介绍LFM雷达测距的原理及实现 1. 参数设计 几个重要的约束关系 带通采样定理&#xff1a; 因此如果我们B80MHz时&a…

SQL优化13连问,收藏好!

1.日常工作中&#xff0c;你是怎么优化SQL的&#xff1f; 大家可以从这几个维度回答这个问题&#xff1a; 分析慢查询日志 使用explain查看执行计划 索引优化 深分页优化 避免全表扫描 避免返回不必要的数据&#xff08;如select具体字段而不是select*&#xff09; 使用…

【Android -- 开发工具】Xshell 6 安装和使用教程

一、简介 Xshell 其实就是一个远程终端工具&#xff0c;它可以将你的个人电脑和你在远端的机器连接起来&#xff0c;通过向 Xshell 输入命令然后他通过网络将命令传送给远端Linux机器然后远端的Linux机器将其运行结果通过网络传回个人电脑。 二、Xshell 6 的安装 首先&#…

如何通过命令行查看CentOS版本信息和linux系统信息

1.如何查看已安装的CentOS版本信息&#xff1a; 1.cat /proc/version 2.uname -a 3.uname -r 4.cat /etc/centos-release 5.lsb_release -a 6.hostnamectl1. 第一种方式输出的结果是&#xff1a; Linux version 3.10.0-1127.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) …

算法基础-回溯算法

回溯算法大致分为以下几类&#xff1a; 组合&#xff1a;组合、组合总和、电话号码的字母组合 分割&#xff1a;分割回文串、复原IP地址 子集&#xff1a;子集 排列&#xff1a;全排列 棋盘问题&#xff1a;N皇后、解数独 其他&#xff1a;递增子序列、重新安排行程 一、什么是…

gns3:动态路由(ospf) area0 骨干网络(域间)(ABR)+ ospf 连接 rip (外部)(ASBR)+ 区域划分

1.配置好接口ip 全部处于up状态2.配置好lookback口 增加一个虚拟直连网段全部为 255.255.255.0的子网掩码实现上边ospf之间通信r1的全局模式router ospf 1network 192.168.1.0 0.0.0.255 area 1network 1.1.1.0 0.0.0.255 area 1宣告直连 并且划分area 区域为1r2全局模式router…

一种LCD屏闪问题的调试

背景 项目使用ESP32-S3 RGB接口驱动的LCD, 框架 idf-v5.0, LVGL-v7.11 显示画面正常, 但肉眼可见的像是背光在闪烁, 背光电路是应用很久的经典电路, 且排查背光驱动无错, 但开机一段时间后, 闪烁会明显减轻 记录 这块屏的显示驱动芯片为ST7701S, 查看芯片手册有说明特定的上…

全网最完整,接口测试总结彻底打通接口自动化大门,看这篇就够了......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 所谓接口&#xff0…

音视频开发—MediaCodec 解码H264/H265码流视频

使用MediaCodec目的 MediaCodec是Android底层多媒体框架的一部分&#xff0c;通常与MediaExtractor、MediaMuxer、AudioTrack结合使用&#xff0c;可以编码H264、H265、AAC、3gp等常见的音视频格式 MediaCodec工作原理是处理输入数据以产生输出数据 MediaCodec工作流程 Med…

SpringBoot整合Flink(施耐德PLC物联网信息采集)

SpringBoot整合Flink&#xff08;施耐德PLC物联网信息采集&#xff09;Linux环境安装kafka前情&#xff1a;施耐德PLC设备&#xff08;TM200C16R&#xff09;设置好信息采集程序&#xff0c;连接局域网&#xff0c;SpringBoot订阅MQTT主题&#xff0c;消息转至kafka&#xff0c…

计算机网络体系结构——“计算机网络”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰来学习一个全新的知识点&#xff0c;就是计算机网络啦&#xff0c;下面&#xff0c;开始虚心学习。 计算机网络的概念 计算机网络的功能 计算机网络的组成 计算机网络的分类 标准化工作 计算机网络的性能 计算机网络的概念 …

Hadoop集群环境配置搭建

一、简单介绍 Hadoop最早诞生于Cutting于1998年左右开发的一个全文文本搜索引擎 Lucene&#xff0c;这个搜索引擎在2001年成为Apache基金会的一个子项目&#xff0c;也是 ElasticSearch等重要搜索引擎的底层基础。 项目官方&#xff1a;https://hadoop.apache.org/ 二、Linux环…

SpringBoot 结合RabbitMQ与Redis实现商品的并发下单【SpringBoot系列12】

SpringCloud 大型系列课程正在制作中&#xff0c;欢迎大家关注与提意见。 程序员每天的CV 与 板砖&#xff0c;也要知其所以然&#xff0c;本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发 1 项目准备 SpringBoot 整合 RabbitMQ 消息队…

【前端八股文】浏览器系列:性能优化——HTML、CSS、JS、渲染优化

文章目录HTMLCSSCSS加载会造成阻塞吗JavaScript渲染优化参考本系列目录&#xff1a;【前端八股文】目录总结 是以《代码随想录》八股文为主的笔记。详情参考在文末。 代码随想录的博客_CSDN博客-leecode题解,ACM题目讲解,代码随想录领域博主 性能优化&#xff0c;从以下几个方…

【C++】STL容器、算法的简单认识

几种模板首先认识一下函数模板、类模板、栈模板。函数模板函数模板就是一个模型&#xff0c;而模板函数是函数模板经过类型实例化的函数。如下template<class T>是一个简单的函数模板&#xff1a;template<class T> T Max(T a, T b) {return a > b ? a : b; } …