ウェブ コンポーネント
従来のウェブ コンポーネント デベロッパーがアプリを組み合わせて 優れたアプリを構築できるようになります例 GitHub の time-elements の Stefan ジュディスweb-vitals-element つまり Google のダークモードの切り替え。データの とはいえ、一貫したデザイン システムのセットに頼ることを コンポーネントを同じベンダーから使用できます。例として、SAP のもの、 UI5 Web Components は、 ポリマー要素 Vaadin の要素、Microsoft の FAST、 マテリアル ウェブ コンポーネント、 AMP コンポーネントなど、多岐にわたります。理由: 多数のデベロッパーがこの記事で取り上げていませんが、 フレームワーク(React、Vue.js など) Ember.js など。デベロッパーに選択肢の自由を与えるのではなく、 これらの選択肢のいずれかを選択する(または、ユーザーの視点によっては、テクノロジーの選択を強制する) スーパーアプリ プロバイダは、デベロッパーが使用する必要がある一連のコンポーネントを普遍的に提供しています。
ミニアプリのコンポーネント
これらのコンポーネントは、前述のコンポーネント ライブラリと同じように考えることができます。特典を 使用可能なコンポーネントの概要、 WeChat のコンポーネント ライブラリ ByteDance のコンポーネント Alipay のコンポーネント、 Baidu クイックアプリ コンポーネント。
先ほどお見せしたとおり、たとえば WeChat の<image>
はウェブ コンポーネントであり、すべてのコンポーネントが厳密にはウェブ コンポーネントというわけではありません。一部
<map>
や <video>
などのコンポーネントは、次のようにレンダリングされます。
OS 組み込みコンポーネント
WebView の上にレイヤ化されますこの実装の詳細は公開されませんが、
他のコンポーネントと同様にプログラムされます。
細かい点は異なりますが、全体的なプログラミングのコンセプトはすべての super アプリで同じです 接続できますデータ バインディングは重要な概念で、 マークアップ言語。通常、コンポーネントは機能別にグループ化されるため、 選ぶのが簡単です。以下は、Alipay の分類の例です。これは似たようなものです。 他のベンダーのコンポーネントグループに 関連しています
- コンテナを表示する
<ph type="x-smartling-placeholder">
- </ph>
view
swiper
scroll-view
cover-view
cover-image
movable-view
movable-area
- 基本的なコンテンツ
<ph type="x-smartling-placeholder">
- </ph>
text
icon
progress
rich-text
- フォームのコンポーネント
<ph type="x-smartling-placeholder">
- </ph>
button
form
label
input
textarea
radio
radio-group
checkbox
checkbox-group
switch
slider
picker-view
picker
- ナビゲーション
<ph type="x-smartling-placeholder">
- </ph>
navigator
- メディア コンポーネント
<ph type="x-smartling-placeholder">
- </ph>
image
video
- 描画キャンバス
<ph type="x-smartling-placeholder">
- </ph>
canvas
- マップ
<ph type="x-smartling-placeholder">
- </ph>
map
- オープン コンポーネント
<ph type="x-smartling-placeholder">
- </ph>
web-view
lifestyle
contact-button
- ユーザー補助
<ph type="x-smartling-placeholder">
- </ph>
aria-component
以下は、Alipay の <image>
が
画像データ配列をループする a:for
ディレクティブ(リスト レンダリングを参照)
index.js
で提供されます。
/* index.js */
Page({
data: {
array: [
{
mode: "scaleToFill",
text: "scaleToFill",
},
{
mode: "aspectFit",
text: "aspectFit",
},
],
src: "https://images.example.com/sample.png",
},
imageError(e) {
console.log("image", e.detail.errMsg);
},
onTap(e) {
console.log("image tap", e);
},
imageLoad(e) {
console.log("image", e);
},
});
<!-- index.axml -->
<view class="page">
<view class="page-section" a:for="{{array}}" a:for-item="item">
<view class="page-section-demo" onTap="onTap">
<image
class="image"
mode="{{item.mode}}"
onTap="onTap"
onError="imageError"
onLoad="imageLoad"
src="{{src}}"
lazy-load="true"
default-source="https://images.example.com/loading.png"
/>
</view>
</view>
</view>
item.mode
から mode
属性へのデータ バインディング、src
から src
属性へのデータ バインディングに注意してください。
3 つのイベント ハンドラ onTap
、onError
、onLoad
を同じ名前の関数にマッピングします。として
前に示したように、<image>
タグは内部で
<div>
は、画像の最終サイズのプレースホルダ、オプションの遅延読み込み、デフォルトのソースに置き換えます。
その他
コンポーネントで使用可能な構成オプションはすべて、 ドキュメントをご覧ください。ドキュメントへの埋め込み シミュレータによるコンポーネント プレビュー すぐにコードが具体的になります
<ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">各コンポーネントには QR コードもあり、Alipay アプリでスキャンしてコンポーネントを開くことができる 自己完結型の最小限のサンプルで提供されます。
<ph type="x-smartling-placeholder">デベロッパーは、
独自の URI スキーム antdevtool-tiny://
。これにより、ドキュメントが個々のインフラストラクチャに直接リンクできるようになり、
用意されているため、デベロッパーはすぐにコンポーネントを使い始めることができます。
カスタム コンポーネント
開発者は、ベンダー提供のコンポーネントを使用するほかに、カスタム コンポーネントを作成することもできます。「
データ アナリストに
WeChat、
ByteDance、
Alipay
Baidu、
クイックアプリ。
たとえば、バイドゥのカスタム コンポーネントは 4 つのファイルで構成され、同じフォルダに配置する必要があります。
custom.swan
、custom.css
、custom.js
、custom.json
。
custom.json
ファイルは、カスタム コンポーネントとしてフォルダの内容を示します。
{
"component": true
}
ファイル custom.swan
にはマークアップが含まれ、custom.css
には CSS が含まれます。
<view class="name" bindtap="tap">{{name}} {{age}}</view>
.name {
color: red;
}
custom.js
ファイルにロジックが含まれています。コンポーネントのライフサイクル関数は attached()
です。
detached()
、created()
、ready()
。コンポーネントは通知に反応したり
ページのライフサイクル イベント(show()
と hide()
)。
Component({
properties: {
name: {
type: String,
value: "swan",
},
},
data: {
age: 1,
},
methods: {
tap: function () {},
},
lifetimes: {
attached: function () {},
detached: function () {},
created: function () {},
ready: function () {},
},
pageLifetimes: {
show: function () {},
hide: function () {},
},
});
その後、カスタム コンポーネントを index.json
にインポートできます。名前はインポートのキーによって決まります
(ここでは "custom"
)を使用して、カスタム コンポーネントを index.swan
で使用できます。
{
"usingComponents": {
"custom": "/components/custom/custom"
}
}
<view>
<custom name="swanapp"></custom>
</view>
謝辞
この記事をレビューしたユーザー: Joe Medley Kayce Basques Milica Mihajlija 氏 Alan Kent、 と Keith Gu です。