WeChat アプレット学習 WXS 使用方法チュートリアル

WeChat アプレット学習 WXS 使用方法チュートリアル

wxsとは何ですか?

wxs (WeiXin Script) は、小規模プログラム用のスクリプト言語です。WXML と組み合わせて、ページ構造を構築できます。

wxs タグ

<wxs モジュール="utils" src="../../wxs/test.wxs"></wxs>

モジュール属性:

現在のタグのモジュール名。この値は一意にすることをお勧めします。同じ名前のモジュールがある場合は、順番に上書きされます(後者が前者を上書きします)。

src属性:

a. 参照できるのは .wxs ファイルのみであり、パスは相対パスである必要があります。

b. すべての wxs モジュールはシングルトンです。wxs モジュールが初めて参照されると、自動的にシングルトン オブジェクトとして初期化されます。複数のページ、複数の場所、複数の使用はすべて同じ wxs モジュール オブジェクトを使用します。

c. wxs モジュールが定義された後に参照されていない場合、モジュールは解析されず、実行されません。

wxsモジュール

wxs コードは、wxml ファイルのタグ内、または拡張子が .wxs のファイルに記述できます (WeChat 開発者ツールでは、右クリックして .wxs ファイルを直接作成し、その中に wxs スクリプトを直接記述します)。

書き方1は以下のとおりです。

//テスト.wxml
<wxs モジュール="utils">
  モジュール.エクスポート = {
    メッセージ: 'こんにちは世界'
  }
</wxs>
<ビュー> {{utils.msg}}</ビュー>
// 画面出力: hello world

書き方2は次のとおりです。

//テキスト.wxml
<wxs モジュール="utils" src="../../common/wxs/test.wxs"></wxs>
// 単一タグクロージャメソッドを直接使用することもできます // <wxs module="utils" src="../../common/wxs/test.wxs" />
<ビュー> {{utils.msg}}</ビュー>
//テスト.wxs
モジュール.エクスポート = {
  メッセージ: 'こんにちは世界'
}

通常、wxs コードは .wxs ファイルに記述することをお勧めします。

モジュールの説明

  1. 各 .wxs ファイルと wxs タグは個別のモジュールです。
  2. 各モジュールには独立したスコープがあります。つまり、モジュールで定義された変数と関数はデフォルトでプライベートであり、他のモジュールからは見えません。
  3. モジュールが内部のプライベート変数と関数を公開したい場合は、module.exports を通じてのみ実現できます。

Q1: 同じ wxml で複数の wxs ファイルをインポートし、同じ名前の変数または関数がある場合はどうなりますか?

//テスト.wxml
<wxs モジュール="utils" src="../../wxs/test.wxs"></wxs>
<wxs モジュール="utils1" src="../../wxs/test1.wxs"></wxs>
<ビュー> {{utils.msg}} + {{utils.say()}}}</ビュー>
<ビュー> {{utils1.msg}} +{{utils1.say()}}</ビュー>

//テスト.wxs
モジュール.エクスポート = {
  メッセージ: 'hello test.wxs',
  言う: 関数 (){
    'test.wxsのsay()'を返します
  }
}
//テスト1.wxs
モジュール.エクスポート = {
  メッセージ: 'hello test1.wxs',
  言う: 関数 (){
    'test1.wxsのsay()'を返す
  }
}
// 画面出力 // hello test.wxs + test.wxs の say()
// hello test1.wxs + test1.wxs の say()

検証の結果、各モジュールには独立したスコープがあることがわかりました。

Q2: 他の wxs ファイル モジュールを .wxs モジュールにインポートしたい場合は、どうすればよいでしょうか?

require関数を通じて

//テスト.wxs
var test1 = require('./test1.wxs')
モジュール.エクスポート = {
  メッセージ: 'hello test.wxs',
  言う: 関数 (){
    コンソールログ(test1.msg)
    'test.wxsのsay()'を返します
  }
}
// コンソール出力 // [WXS ランタイム情報] hello test1.wxs 

wxsコメント

// wxml ファイル <wxs module="utils">
// .wxs 単一行コメント/**
 * .wxs-複数行コメント*/
 
/*
変数a = 1

</wxs>

上記の例では、すべての wxs コードがコメント化されています。3 番目の書き方は比較的まれです。勉強中に見かけたので記録しました。

.wxs ファイルの場合、コメントには単一行と複数行の 2 種類しかありません。

wxsの基本

加算演算 (+) は文字列を連結するために使用されます。

<wxs モジュール="utils">
モジュール.エクスポート = {
  getnum: 関数 () {
    変数a = 10
    var b = 20
    var str = a + '+' + b + '=' + (a+b) 
    文字列を返す
  }
}
</wxs>
<ビュー>{{utils.getnum()}}</ビュー>

`` 連結演算子は使用できません。使用するとエラーが報告されます。

wxs は現在、次のデータ型をサポートしています。

数値(値)、文字列(文字列)、ブール値(ブール値)、配列(配列)、オブジェクト(オブジェクト)、関数(関数)、日付(日付)、正規表現(正規表現)

wxs データ型には null/undefined はありません。

日付オブジェクトを生成するには、現在の時刻のオブジェクトを返す getDate() を使用する必要があります。

<wxs モジュール="utils">
モジュール.エクスポート = {
  getNowTime: 関数 () {
    getDate() を返す
  }
}
</wxs>
<ビュー>{{utils.getNowTime()}}</ビュー>
// 画面出力 // 2021 年 5 月 1 日土曜日 14:42:57 GMT+0800 (中国標準時)

new Date() は使用できません。エラーが報告されます。

分割や矢印関数などの ES6 構文はサポートされていません。

変数を宣言するために let/const を使用することはできません。var を使用する必要があり、変数の昇格があります。

<wxs モジュール="utils">
モジュール.エクスポート = {
  getnum: 関数 () {
    a = 10とする
    返す
  }
}
</wxs>
<ビュー>{{utils.getnum()}}</ビュー>

アプリケーションシナリオ

通常、バックエンドはタイムスタンプ形式をフロントエンドに返しますが、それを yyyy-mm-dd などの目的の時間形式に処理する必要があります。この場合、wxs を使用して時間変換関数を呼び出すことができます。

おそらく、js の関数を使用してデータをパッケージ化し、それをページに出力することは可能ではないのかと尋ねる人がいるかもしれません。答えは「はい」です。比較的優れていると思われるソリューションを追求するだけです。

<wxs モジュール="utils">
モジュール.エクスポート = {
  formatTime: 関数 (timeStamp) {
    var now = getDate(parseInt(timeStamp))
    var 年 = now.getFullYear()
    var 月 = now.getMonth()+1 
    月 = 月 < 10 ? '0' + 月: 月
    var 日 = now.getDate()
    日 = 日 < 10 ? '0' + 日 :日
    年 + '-' + 月 + '-' + 日を返す 
  }
}
</wxs>
<ビュー>{{utils.formatTime(1619852841428)}}</ビュー>
// 画面出力 // 2021-05-01

バックグラウンドによって返されるネットワーク イメージ アドレスは、相対パスの場合もあれば、完全なイメージ パスの場合もあります。イメージを表示する場合は、設定されたドメイン名のプレフィックスを追加する必要があります。

<wxs モジュール="utils">
モジュール.エクスポート = {
  getImg: 関数 (url = '') {
    var origin = 'https://xxx.com'
    url.indexOf('https') !== -1 || url.indexOf('http') !== -1) の場合 {
      戻りURL
    } それ以外 {
      戻り元 + URL
    }
  }
}
</wxs>
<画像 src="{{utils.getImg('/a.png')}}"></画像>
// src 出力 // https://xxx.com/a.png

ピットフォールレコード

コンパイルを使用して wxml を呼び出すと、予期される LineFeed が表示されます。

解決策: ES6 のすべての部分を ES5 に置き換え、var 宣言を使用します。

要約する

これで、WeChat ミニプログラム学習のための wxs の使用方法に関するチュートリアルの記事は終了です。WeChat ミニプログラムでの wxs の使用方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • WeChatアプレットwxsが天井効果を達成

<<:  Linux システムでの nginx サーバーのインストールと負荷分散構成の詳細な説明

>>:  MySQL 5.7.20 無料インストールバージョンの設定方法グラフィックチュートリアル

推薦する

Windows Server 2008 64ビット MySQL5.6 インストール不要版 設定方法図

1 公式ウェブサイトから MySQL 5.6 バージョンの圧縮パッケージmysql-5.6.36-w...

MySQL 8.0.11 MacOS 10.13 のインストールと設定方法のグラフィックチュートリアル

MacにMySQLデータベースをインストールし、環境変数を設定する手順を参考までに記録します。具体的...

CentOS 7 は Hadoop 2.10 の高可用性 (HA) をビルドします

この記事では、CentOS 7 で高可用性 Hadoop 2.10 クラスターを構築する方法を紹介し...

Nodejs-cluster モジュールの知識ポイントの概要と使用例

面接官から「NodeJS で複数のプロセスを開始する方法を教えてください」と尋ねられることがあります...

HTML タグ マーキーはさまざまなスクロール効果を実現します (JS 制御なし)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

TCP 3 回目のハンドシェイク データ転送プロセス図

RFC793 ドキュメントの SYN フラグを持つプロセス パケットはデータを伝送できません。つま...

VUE ユニアプリライフサイクルに関する簡単な説明

目次1. アプリケーションライフサイクル2. ページのライフサイクルコンポーネントライフサイクル要約...

Vue3でカルーセルコンポーネントをカプセル化する方法

目的カルーセルコンポーネントをカプセル化して直接使用します。具体的な内容は以下のとおりです。一般的な...

Linux 上の Vim で色とテーマを変更する方法

Vim は Linux でよく使用されるテキスト エディターです。 Vim は、Sublime や ...

MySQL バッチ挿入ループの詳細なサンプルコード

背景数日前、MySql でページングを行っていたときに、ページングに制限 0,10 を使用するとデー...

ログインインターセプションを実装するためのVueルーティング

目次1. 概要2. ログインインターセプションを実装するためのルーティングナビゲーションガード1. ...

vite2.0 設定学習の詳しい説明(typescript 版)

導入悠宇希の原文です。 vite は Vue CLI に似ています。vite も、基本的なプロジェク...

Vue プロジェクトでの支払い機能の実装 (WeChat 支払いと Alipay 支払い)

目次プロジェクトにおける一般的な支払い方法Alipay決済微信ペイプロジェクトにおける一般的な支払い...

TypeScript 3.7 で注目すべき 3 つの新機能について簡単に説明します。

目次序文オプションの連鎖ヌル結合呼び出されていない関数のチェック他の序文TypeScript 3.7...