프런트 엔드 WeChat 애플릿 인터뷰 질문 요약

목차

양방향 데이터 바인딩

부모-자식 구성 요소 전달 값

 로컬 스토리지

구성 요소 수명 주기 기능

사용자 정보 얻기

페이지의 기본 구성

탭바 설정

uni-app은 vantUi를 소개합니다

동적 상단 텍스트 설정

축 요청 캡슐화

애플릿의 라이프 사이클 기능은 uni-app과 동시에 호환됩니다.

새로고침하려면 켜고 끕니다.

애플릿 내비게이션 바 사용자 정의

유니앱 하도급

uni-app WeChat 애플릿의 라우팅은 접두사를 제외하고 동일합니다.

이미지 미리보기

uni-app의 내장 팝업 상자

배송 주소 추가

확인란 구성 요소 사용

공유하다

스캔 코드

개인 정보에 대한 액세스


양방향 데이터 바인딩

1 일반 데이터 바인딩이 응답하지 않음

<input value="{
   
   {value}}" />

데이터를 반응형으로 만들기

// 使用setData赋值,使其拥有响应式,达到双向数据绑定的效果
this.setData({
    dataAll: this.data.dataAll,
})

2 model: 접두사를 사용하여 데이터 바인딩을 반응성으로 만듭니다.

<input model:value="{
   
   {value}}" />

부모-자식 구성 요소 전달 값

하위 구성요소 정의  

구성 요소 폴더를 만들고 해당 하위 구성 요소를 새로 만듭니다.

하위 구성요소 가져오기

 JSON 파일 

 "usingComponents": {
    "header":"../../components/header"
  },

아버지가 아들에게

하위 구성 요소의 속성은 부모-자식 데이터를 수락하는 데 사용되는 소품입니다.

하나의 텍스트 서식 지정      : 문자열

형식 2      텍스트: { 유형: 문자열 , 값: '' ,}     // 값은 기본값입니다.

아이 삼촌

상위 구성 요소의 맞춤 이벤트

바인드: 맞춤 이벤트 이름 = " "

자식 구성 요소 호출

//作用与emit相似,建议用对象传值
this.triggerEvent('aaa', {k:v})  

 로컬 스토리지

비동기

저장 wx.setStorage({ 키: "이름", 데이터: JSON.stringify(데이터) })

wx.getStorage({ key: "name", success:(res)=>{ 성공하면 res는 해당 데이터} })

동기화

저장 wx.setStorageSync('이름', JSON.stringify(데이터))

wx.getStorageSync('name') 가져오기

구성 요소 수명 주기 기능

  • created() : 구성 요소 인스턴스가 방금 생성되었을 때 트리거됩니다.

  • Attached() : 페이지 노드 트리 진입 후 트리거

  • detached() 구성 요소가 페이지 노드 트리를 떠난 후 트리거됨

사용자 정보 얻기

버튼 구성 요소 활성화

<button type="primary"  open-type="getUserInfo"
 bindgetuserinfo="handleGetUserInfo">
 登陆
</button>

open-type="getUserInfo"    사용자 정보를 가져오는 버튼의 기능 설정

bindgetuserinfo     는 클릭 후 호출이며 함께 제공되는 형식 매개 변수 중 사용자 정보가 있습니다.

handleGetUserInfo(e) {
        console.log(e)
        const { userInfo } = e.detail;
 }

페이지의 기본 구성

배경색             

풀다운 새로 고침의 배경색, 풀다운 새로 고침의 일부는 배경입니다.

backgroundTextStyle

애플릿의 배경 텍스트 스타일은 밝은 색상 어두운 색상 두 가지 값만 있습니다.

navigation바배경색

내비게이션 바의 배경색

navigationBarTitleText 

탐색 모음의 제목 텍스트

navigationBarTextStyle

내비게이션 바의 텍스트 색상은 검정 검정 흰색 흰색 두 가지 값만 있습니다 .

enablePullDownRefresh

당겨서 새로 고침 기능을 활성화합니다. 기본값은 false입니다.

onReachBottomDistance

바닥 방법을 트리거하는 거리, 단위는 px입니다.

탭바 설정

uni-app의 pages.json 에서 구성

 "tabBar": {
    "color": "#000000",  
    "selectedColor": "#d00",  
    "borderStyle": "black",
    "backgroundColor": "#ffffff",  
    "position": "bottom",     
    "list": [{
        "pagePath": "pages/index/index", 
        "text": "首页",
        "iconPath": "static/icon/shouye.png", 
        "selectedIconPath": "static/icon/pitch-icon/shouye.png"
      }
    // 此处进行配置第二个tabBar页面
   ]
 }

지침

1 tabBar 최소 2개, 최대 5개

2 아래 폰트 아이콘은 미선택과 선택 2가지 색상이 필요하며 다운로드 후 그림으로 사용하시길 권장합니다.

3 tabBar가 상단으로 설정되면 아이콘이 없고 텍스트만 표시됩니다.

uni-app은 vantUi를 소개합니다

1 내장 터미널 npm은 vant 애플릿 버전을 설치합니다.

2 새 wxcomponents 폴더를 만들고 dist 폴더를 @vant에 복사합니다 . 붙여넣기하고 이름을 vant 로 바꿉니다.

3 vant를 도입하여 생성된 폴더를 삭제할 수 있습니다.

4 vant를 정상적으로 import 하기 위해 필요한데 파일 경로가 "/wxcomponents/vant/...." 입니다.

5 pages.json 에서 구성을 수정합니다 . vant 및 npm 구성을 사용하도록 하십시오. 구체적인 코드는 다음과 같습니다.

동적 상단 텍스트 설정

pages.json에서 새 파일을 만들 때 해당 데이터가 자동으로 추가됩니다. 여기에서 헤더 텍스트를 설정하거나 vant 스타일 을 도입할 수 있습니다.

 "path": "pages/list/list",
    "style": {
      "navigationBarTitleText": "列表",
      "enablePullDownRefresh": false,
      "usingComponents": {
        "van-icon": "/wxcomponents/vant/icon/index",
      }
    }

축 요청 캡슐화

utils 폴더를 만들고 폴더에 http.js 파일을 추가합니다.

function axios({
  url,
  method = "get",
  data = {}
}) {
  uni.showLoading({
    title: '拼命加载中...',
    mask: true
  })
  return new Promise((resolve, reject) => {
    uni.request({
      url: "https://www.uinav.com/api/public/v1" + url,
      method,
      data,
      success(res) {
        resolve(res.data)
        uni.hideLoading()
      },
      fail(err) {
        reject(err)
        uni.hideLoading()
        uni.showToast({
          title: "请求失败"
        })
      }
    })
  })
}



export default axios

페이지 이용 시

소개하다

  import axios from '../../utils/http.js'

사용

 axios({ url: '/home/swiperdata'}).then(res => {
        console.log(res)
 })

애플릿의 라이프 사이클 기능은 uni-app과 동시에 호환됩니다.

길 위에

페이지가 로드되면        vue에 해당하는 생성된 수명 주기를 트리거합니다.

온레디

페이지가 처음으로 렌더링되면      Vue에 해당하는 마운트된 수명 주기가 트리거됩니다.

온쇼 

페이지가 전경으로 표시/잘라지면    Vue와 동일한 활성화를 트리거합니다.

onHide

페이지가 배경으로 숨거나 잘릴 때    Vue의 비활성화에 해당하는 트리거

onUnload

페이지가 언로드되면           vue와 동일한 소멸된 수명 주기가 트리거됩니다.

onPullDown새로 고침

풀다운 새로 고침을 위한 후크 기능

onReach바닥

풀업 풀업 훅 기능

새로고침하려면 켜고 끕니다.

uni.startPullDownRefresh()       // 풀다운 새로 고침 기능 활성화

uni.stopPullDownRefresh()       // 풀다운 새로 고침을 중지하는 메서드

WeChat 애플릿에서는 wx.startPullDownRefresh ()  

애플릿 내비게이션 바 사용자 정의

1 사용할 페이지의 페이지에서   "navigationStyle": "custom" 정의

2 하위 구성 요소를 정의합니다. 이 하위 구성 요소는 사용자 정의 헤더 탐색 표시줄입니다. 이 구성 요소에는 onLode가 없습니다 . 마운트된 것을 사용할 수 있습니다.

  uni.getSystemInfo ({})는  휴대폰의 기본 정보를 가져올 수 있습니다. 

  statusBarHeight 는 모바일 내비게이션 바의 높이입니다.

3 사용된 페이지는 이 구성 요소를 소개하며, 부모-자식 구성 요소를 사용하여 정상적으로 값을 전달할 수 있습니다.

참고: 이 구성 요소에서 클릭 이벤트가 적용되지 않으면 자식에서 부모로 들어오는 이벤트를 트리거할 수 있습니다.

유니앱 하도급

1 페이지는 애플릿을 사용하여 페이지를 배치하는 위치이며, 이와 동일한 수준에서 하위 패키지 폴더를 생성하고 해당 파일을 생성합니다. 형식은 다음과 같습니다.

2 pages.json 에서 하도급을 구성합니다.

   "subPackages": [{
    "root": "packageOne",
    "pages": [
      
    {
      "path": "search/search",
      "style": {
        "navigationBarTitleText": "商品搜索",
        "enablePullDownRefresh": true,
        "backgroundColor": "#d00",
        "onReachBottomDistance": 260
      }
    }
    //在此处添加另一个页面,{path:....,style....}
  ]  }]

루트 속성 은 하위 패키지의 폴더 이름이며 하위 패키지 페이지는 페이지 배열 에 배치되며 나머지는 페이지 폴더의 페이지 구성과 일치합니다.

uni-app WeChat 애플릿의 라우팅은 접두사를 제외하고 동일합니다.

레이블 점프

태그 이름

<navigator url="/pages/home/home"  open-type="navigate"></navigator>

개방형 매개변수

탐색하다

현재 페이지를 숨기고 새 페이지로 들어갑니다. 페이지 스택에는 최대 10개의 레이어가 있을 수 있습니다.

리디렉트 _

현재 페이지를 파괴(닫고)하고 새 페이지로 들어감

switchTab

특히 탭바 페이지로 이동하는 데 사용되며 탭바가 아닌 모든 페이지를 파괴합니다.

탐색뒤로

현재 페이지를 닫고 이전 수준으로 돌아갑니다.

다시 실행

모든 페이지를 닫고 새 페이지로 들어가는 탭바 페이지로 이동할 수 있습니다.

논리적 점프

uni.navigateTo(개체)

현재 페이지를 유지하고 앱의 페이지로 이동

uni.redirectTo(개체)

현재 페이지를 닫고 앱의 페이지로 이동

uni.reLaunch(개체)

모든 페이지를 닫고 앱 내의 페이지를 엽니다.

uni.switchTab(개체)

tabBar 페이지로 이동하고 tabBar가 아닌 다른 모든 페이지를 닫습니다.

uni.navigateBack(OBJECT)

현재 페이지를 닫고 이전 페이지 또는 다단계 페이지로 돌아가기

getCurrentPages() 현재 페이지 스택을 가져와 반환해야 하는 레이어 수를 결정할 수 있습니다. 

uni.preloadPage(개체)

페이지 미리 로드는 성능 최적화 기술입니다.

라우팅 매개변수 및 수신 매개변수

 참고: switchTab은 매개변수를 전달할 수 없습니다.

 예: wx.redirectTo({  url: ' /pages/home/home?id= ' +id })

 수신: 페이지 로딩을 모니터링하는 onLoad 함수 의 옵션 개체 에서 구조 분해

이미지 미리보기

 // 图片预览
 preview(img) {  //点击的图片的网址
  //接受一个数组或字符串,里面的内容是要预览的图片的网址的集合
    let image = this.dataAll.pics.map(item => item.pics_mid_url)
        uni.previewImage({  //开启预览的api
          current: img,   //当前点击的图片
          urls: image     //图片的集合
        })
 },

uni-app의 내장 팝업 상자

팝업 상자

 uni.showToast({
          title: '添加成功',
          icon: 'checkbox',
          mask: true
 })

로딩

  uni.showLoading({
    title: '拼命加载中...',
    mask: true
  })

배송 주소 추가

 addSite() {  //事件
 //uni-app获取用户收货地址的api  
    uni.chooseAddress({
      success(res) {   //成功时的回调
        console.log(res)
       }
    })
 }

확인란 구성 요소 사용

v-model 은 패키징된 컴포넌트이기 때문에 동작하지 않음 check 여부 값을 checked 로 설정 @click 통해 click 이벤트를 설정하고 이벤트에서 checked 값을 수정할 수 있음 순환형인 경우 data , 이벤트에 첨자를 해당 데이터를 변경합니다.

공유하다

공유 버튼

<button open-type="share">分享</button>

해당 로직

onShareAppMessage는  여러 데이터를 반환할 수 있는 매개 변수 옵션이  있는 공유 함수입니다. 

onShareAppMessage(
 return {
    title: " ",   //标题  
    path: '/pages/index/index',  //分享的页面
    imageUrl: '/images/chiken.webp'    //分享的主题图片 
 }
)

스캔 코드

wx.scanCode({      //扫码事件函数
   onlyFromCamera: false,     //是否只能摄像头扫码,要关闭
   scanType: ['barCode', 'qrCode'],   //扫描的类型,条形码,二维码
   success: (result) => {},   //成功的回调
   fail: (res) => {},          //失败的回调
   complete: (res) => {}  
})

개인 정보에 대한 액세스

 1 버튼 컴포넌트 작성

<button type="primary" open-type="getUserInfo" 
   @click="add" v-if="!isWarrant">
登录</button>

2 uni.getUserProfile을 사용하여  사용자 권한을 가져오고   확인 버튼을 클릭하면 성공이 트리거되며 res 매개 변수는 획득 성공 시 반환되는 개인 정보입니다.

 add() {
        uni.getUserProfile({
          desc: '用于获取个人资料', // 这里的desc在微信开发文档中要求必须填写的
          success: (res) => {
            this.isWarrant = true
            this.userInfo = res.userInfo
            console.log(res.userInfo)
          }
        })
  }

추천

출처blog.csdn.net/hjdjhh/article/details/123003711