検索
ホームページWeChat アプレットミニプログラム開発小規模なプログラム開発用の計算機

この WeChat ミニ プログラム開発チュートリアルでは、WeChat ミニ プログラムを使用して電卓関数を開発する方法を紹介します。

この記事は主にミニプログラムのメイン部分と電卓ビジネスページ部分の2つの部分に分かれています

1. ミニプログラムのメイン部分

ミニプログラムのメイン部分は3つのファイルで構成されています。次のようにプロジェクトのルート ディレクトリに配置する必要があります:

1. ミニ プログラム ロジック

App({
  onLaunch: function() { 
    // Do something initial when launch.  },
  onShow: function() {      // Do something when show.  },
  onHide: function() {      // Do something when hide.  },
  globalData: 'I am global data'})

2. ミニ プログラムの公開設定

{
  "pages": [
    "page/index/index"
  ],
  "window": {
    "navigationBarBackgroundColor": "#000",
    "backgroundColor": "#000",
    "navigationBarBackgroundColor": "#000"
  },
  "networkTimeout": {
    "request": 10000,
    "connectSocket": 10000,
    "uploadFile": 10000,
    "downloadFile": 10000
  },
  "debug": true
}

2. 電卓ページ部分

以下のファイル。

1. 電卓のページ構造

ページの構造は、表示領域とキーボード領域の 2 つの主要な部分に分かれています

キーボード領域は、ファンクション キー、数字キー、および操作キーに分かれています。以下

<template>
  <button>{{display}}</button></template><view>
  <view>
    <view>{{displayValue}}</view>
  </view>
  <view>
    <view>
      <view>
        <template></template>
        <template></template>
        <template></template>
      </view>
      /*sdf*/      <view>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
      </view>
    </view>
    <view>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
        <template></template>
    </view>
  </view></view>

2. 電卓のスタイルシート

のスタイルコードは次のとおりです

@import "reset.wxss";

page {
  font: 100 14px 'Roboto';
}.calculator {
  width: 100%;
  height: 100vh;
  background: black;
  position: relative;
  box-shadow: 0px 0px 20px 0px #aaa;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
}.calculator-display {
  background: #1c191c;
  flex: 1;
}/*TODO:解决文本垂直居中问题*/.calculator-display-text {
  padding: 0 30px;
  font-size: 6em;
  color: white;
  text-align: right;
}.calculator-keypad {
  display: flex;
}.calculator .function-keys {
  display: flex;
}.calculator .digit-keys {
  background: #e0e0e7;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap-reverse;
}.calculator-key-hover {
  box-shadow: inset 0px 0px 25vw 0px rgba(0,0,0,0.25);
}.calculator-key {
  display: block;
  width: 25vw;
  height: 25vw;
  line-height: 25vw;
  border-top: 1px solid #777;
  border-right: 1px solid #666;
  text-align: center;
  box-sizing: border-box;
}.calculator .function-keys .calculator-key {
  font-size: 2em;
}.calculator .digit-keys .calculator-key {
  font-size: 2.25em;
}.calculator .digit-keys .key-0 {
  width: 50vw;
  text-align: left;
  padding-left: 9vw;
}.calculator .digit-keys .key-dot {
  padding-top: 1em;
  font-size: 0.75em;
}.calculator .operator-keys .calculator-key {
  color: white;
  border-right: 0;
  font-size: 3em;
}.calculator .function-keys {
  background: linear-gradient(to bottom, rgba(202,202,204,1) 0%, rgba(196,194,204,1) 100%);
}.calculator .operator-keys {
  background:  linear-gradient(to bottom, rgba(252,156,23,1) 0%, rgba(247,126,27,1) 100%);
}.input-keys {
  width: 75%;
}.operator-keys {
  width: 25%;
}

3. 電卓ページのロジック処理

Page({
  data: {
    value: null, // 上次计算后的结果,null表示没有上次计算的结果
    displayValue: '0', // 显示数值
    operator: null, // 上次计算符号,null表示没有未完成的计算
    waitingForOperand: false // 前一按键是否为计算符号  },

  onLoad: function(options) {    this.calculatorOperations = {      'key-pide': (prevValue, nextValue) => prevValue / nextValue,      'key-multiply': (prevValue, nextValue) => prevValue * nextValue,      'key-add': (prevValue, nextValue) => prevValue + nextValue,      'key-subtract': (prevValue, nextValue) => prevValue - nextValue,      'key-equals': (prevValue, nextValue) => nextValue
    }
  },  
  /* AC操作,一下回到解放前 */
  clearAll() {    this.setData({
      value: null,
      displayValue: '0',
      operator: null,
      waitingForOperand: false
    })
  },  /* 仅清空当前显示的输入值 */
  clearDisplay() {    this.setData({
      displayValue: '0'
    })
  },

  onTapFunction: function(event) {
    const key = event.target.dataset.key;    switch(key) {      case 'key-clear':        if (this.data.displayValue !== '0') {          this.clearDisplay();
        } else {          this.clearAll();
        }        break;      case 'key-sign':        var newValue = parseFloat(this.data.displayValue) * -1        
        this.setData({
          displayValue: String(newValue)
        })        break;      case 'key-percent':
        const fixedDigits = this.data.displayValue.replace(/^-?\d*\.?/, '')        var newValue = parseFloat(this.data.displayValue) / 100        
        this.setData({
          displayValue: String(newValue.toFixed(fixedDigits.length + 2))
        });        break;        
      default:        break;
    }
  },

  onTapOperator: function(event) {
    const nextOperator = event.target.dataset.key;
    const inputValue = parseFloat(this.data.displayValue);    
    if (this.data.value == null) {      this.setData({
        value: inputValue
      });
    } else if (this.data.operator) {
      const currentValue = this.data.value || 0;
      const newValue = this.calculatorOperations[this.data.operator](currentValue, inputValue);      this.setData({
        value: newValue,
        displayValue: String(newValue)
      });
    }    
    this.setData({
      waitingForOperand: true,
      operator: nextOperator
    });
  },

  onTapDigit: function(event) {
    const key = event.target.dataset.key; // 根据data-key标记按键

    if(key == 'key-dot') {      // 按下点号
      if (!(/\./).test(this.data.displayValue)) {        this.setData({
          displayValue: this.data.displayValue + '.',
          waitingForOperand: false
        })
      }
    } else {      // 按下数字键
      const digit = key[key.length-1];      if (this.data.waitingForOperand) {        this.setData({
          displayValue: String(digit),
          waitingForOperand: false
        })
      } else {        this.setData({
          displayValue: this.data.displayValue === '0' ? String(digit) : this.data.displayValue + digit
        })
      }
    }
  }
})

3. プログラムのレンダリング

【関連する推奨事項】

1.

WeChatアプレット 完全なソース コードのダウンロード

2.

WeChat ミニ プログラム デモ: Zhihu Daily

以上が小規模なプログラム開発用の計算機の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター