微信小程序面试题【1-4】

1.请谈谈wxml与标准的html的异同?

wxml的介绍:

WXML提供两种文件引用方式import和include。

WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件事件系统,可以构建出页面的结构。

  • 数据绑定:
<!--wxml-->
<view> {{message}} </view>

// page.js
Page({
  data: {
    message: 'Hello MINA!'
  }
})
  • 列表渲染 :
<!--wxml-->
<view wx:for="{{array}}"> {{item}} </view>

// page.js
Page({
  data: {
    array: [1, 2, 3, 4, 5]
  }
})
  • 条件渲染:
<!--wxml-->
<view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
<view wx:elif="{{view == 'APP'}}"> APP </view>
<view wx:else="{{view == 'MINA'}}"> MINA </view>

// page.js
Page({
  data: {
    view: 'MINA'
  }
})
  • 模板:
<!--wxml-->
<template name="staffName">
  <view>
    FirstName: {{firstName}}, LastName: {{lastName}}
  </view>
</template>

<template is="staffName" data="{{...staffA}}"></template>
<template is="staffName" data="{{...staffB}}"></template>
<template is="staffName" data="{{...staffC}}"></template>

// page.js
Page({
  data: {
    staffA: {firstName: 'Hulk', lastName: 'Hu'},
    staffB: {firstName: 'Shang', lastName: 'You'},
    staffC: {firstName: 'Gideon', lastName: 'Lin'}
  }
})

wxml与标准的html的异同

1、标签名字有点不一样
2、多了一些 wx:if 这样的属性以及 {{ }} 这样的表达式
3、开发工具限制:WXML仅能在微信小程序开发工具中预览,而HTML可以在浏览器内预览。
4、组件封装不同:WXML对组件进行了重新封装,为后续的性能优化提供了可能,同时避免开发者写出低质量的代码。
5、没有DOM树:小程序运行在JS Core内,没有DOM树和window对象,没有办法使用相关API。

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

2.请谈谈WXSS和CSS的异同?

什么是WXSS?

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

WXSS 用来决定 WXML 的组件应该怎么显示。

为了适应广大的前端开发者,WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。

与 CSS 相比,WXSS 扩展的特性有:

  • 尺寸单位

    rpx(responsive pixel):可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx;如在Iphone6上,屏幕宽度为375px,共有750个物理像素,则750rpx=375px=750物理像素,1rpx=0.5px=1物理像素。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C5uRr36a-1682557170220)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20230425145202278.png)]

    建议: 开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准。

    注意: 在较小的屏幕上不可避免的会有一些毛刺,请在开发时尽量避免这种情况。

  • 样式导入

    使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。

    /** common.wxss **/
    .small-p {
      padding:5px;
    }
    
    /** app.wxss **/
    @import "common.wxss";
    .middle-p {
      padding:15px;
    }
    

内联样式:

框架组件上支持使用style、class属性来控制组件的样式。

  • style:静态的样式统一写到class中,style接受动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进style中,以免影响渲染速度。

    <view style="color:{{color}};" />
    
  • class:用于指定样式规则,其属性值是样式规则中类选择器名(样式类名)的集合,样式类名不需要带上.,样式类名之间用空格分隔。

    <view class="normal_view" />
    

选择器:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t7vmNxnX-1682557170221)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20230425145912217.png)]

全局样式与局部样式:

定义在 app.wxss 中的样式为全局样式,作用于每一个页面。在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。


WXSS和CSS的相同之处
  • 对选择器的支持
  • 提供内联样式
  • 语法简单
  • 编写难度小
WXSS和CSS的不同之处
  • wxss尺寸单位rpx的引入,来提升不同屏幕的适配体验。
  • wxss以为大量使用原生组件的缘故,在选择器的支持上进行了阉割。
  • wxss为用户提供了全局样式,让开发者可以以更简单的方式进行全局样式的定义。
  • wxss在运行前会进行一次优化,提升wxss的渲染效果

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

主体部分三个文件:

  • app.js 小程序逻辑文件,主要用来注册小程序全局实例,编译时会和其他页面的逻辑文件打包成一个JavaScript文件,项目中不可缺少。

  • app.json 小程序公共设置文件,配置小程序全局设置,项目中不可缺少。

  • app.wxss 小程序主样式表文件,类似于HTML的css文件,主样式表文件中设置的样式,在其他页面文件中同样有效,该文件不是必需的。

小程序的4个页面文件:

  • .js文件 页面逻辑文件,在该文件中编写javascript代码以控制页面逻辑,其在页面中不可缺少。
  • .wxml文件 页面的结构文件,用来设计页面的布局、数据绑定等,相当于HTML页面中扩展名为html文件,其在页面中不可缺少。
  • .wxss文件 页面样式表文件,用来定义页面中用到的各类样式表。若.wxml文件内联样式及app.wxss文件内的样式表定义同本页面的样式表定义相同时,内联样式优先于.wxss文件样式,.wxss文件样式优先于app.wxss文件样式,该文件不是必需的。
  • .json文件 页面配置文件,其在页面中不可缺少。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Xet8gsA-1682557170221)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20230425151018470.png)]

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

微信小程序项目结构主要有四个文件类型:wxml;wxss;json;js

  • .WXML:是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。
    内部主要是微信自己定义的一套组件

  • .WXSS:(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。
    但是他跟css有一定的区别,例如单位、css使用px、wxss使用rpx

  • .js:逻辑处理,网络请求。

  • .json:小程序设置,如页面注册,页面标题及tabBar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏兮颜☆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值