目次
はじめに
開発
ファイルの作成
依存関係の紹介
受信パラメータ
遍历日期
监听更新
使用测试
发布
编辑readme
执行发布
ホームページ ウェブフロントエンド uni-app ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

Jun 30, 2022 pm 08:13 PM
uni-app

この記事では、ユニアプリ カレンダー プラグインの開発を段階的に説明し、次のカレンダー プラグインが開発からリリースまでどのように開発されるかを紹介します。

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

様々な小さなプログラムやH5、さらにはAPPを開発する際には、技術の選択肢としてユニアプリを検討することになると思います。ワンクリックで複数の端末上で実行でき、比較的強力なクロスプラットフォーム パフォーマンスを実現します。しかし、開発をする限りプラグインの使用を避けることはできません。そこで、Dcloud は開発者を容易にし、プラグインに活力を注入するために uni のプラグイン マーケットをオープンしました。今後は、これらのサードパーティ プラグインの一部を簡単に使用して、開発したいビジネス ニーズの一部を満たすことができるようになります。しかし、uni プラグインの作り方をご存知ですか?プラグイン ストアにはどのように公開されますか?

はじめに

WeChat ミニ プログラムを開発した友人は、そのメイン パッケージが 2M に制限されていることを知っているかもしれません。プラグイン モールでプラグインを選択するとき、それらについてはまだ考慮する必要がありますが、より使いやすい軽量のものを使用するようにしてください。最近、ご要望があり、ページにカレンダーが登場しました カレンダーの機能は月を切り替えるだけの非常にシンプルなもので、バックエンドの一部の特別な日付データに色を付けることができます。ただし、導入した UI ライブラリのカレンダーは少し大きいので、これを機に、今回は共有ニーズに合わせて特別に設計された軽量のカレンダー プラグインを開発し、プラグインにリリースする方法を確認します。モール。

まず公開して使用した後の効果を見てみましょう:

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

開発

ファイルの作成

まず HBuilder X を開き、プロジェクト uni-app を作成し、その中に uni_modules という名前のプロジェクトを作成します。フォルダ。

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

次に、uni_modules を右クリックし、[新しい uni_modules プラグイン ] を選択します。次に、次のことを尋ねるポップアップ ボックスが表示されます。プラグインに名前を付けます。

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

名前は任意で構いません。よりセマンティックで、いくつかの独自の特性を持つことが最善です。たとえば、このカレンダー プラグインには ml-calendar という名前を付けました。 、へー、これは大まかに言うと、jsmask-light-calendar を意味します。これは、jsmask の軽量カレンダーです。面白いですね。このように、[作成] をクリックすると、プラグイン構造が生成されます。そこに、このプラグインに関するすべてのロジックを記述します。

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

まだ終わっていません。その中にindex.jsファイルを作成し、次のように書き込む必要があります。

import mlCalendar from "./components/ml-calendar/ml-calendar"
export default mlCalendar
ログイン後にコピー

関与するUIは1つだけであるためです。コンポーネントなので、exportdefault はこのコンポーネントを直接指すことができます。この手順を作成しないと、プラグインを参照するときにデフォルトでプラグインが見つからず、エラーが報告され、検索が失敗するため、この手順は重要です。

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

依存関係の紹介

今回はカレンダーを迅速に開発する必要があるため、多くの判断と時間の変更を避けることができません検証としては、例えば、今日のカレンダーの場合、アラビア数字は表示されず、今日の漢字が直接表示されるため、生成時に現在のシステム時刻と日付が正しい日付であるかどうかを判断する必要があります。同日。そのため、dayjs は、フロントエンド開発者であればその名前を知らない人はいないと思うほど、非常に軽量な時間ライブラリです。容量は小さくなりますが、利便性と拡張性を考慮してここに導入する場合があります。

ここの dayjs ファイルは、トラブルを避けるために、ノードのインストール後にパッケージからコピーしました:

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

これで、次のようになります。 vue ファイルで導入および使用されています。もちろん、サードパーティのライブラリ ファイルを保存するための libs フォルダーもここに作成しました。

import dayjs from '../../libs/dayjs.js'
ログイン後にコピー

受信パラメータ

まず、実装するインターフェイス図を見てみましょう:

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

export default {
    name: "ml-calendar",
    props: {
        value: {
            type: [Number, String, Date],
            default: ""
        },
        range: {
            type: Array,
            default: () => ["2021-01", ""]
        },
        rows: {
            type: Array,
            default: () => []
        },
        // ...
    },
    // ...
}
ログイン後にコピー

このカレンダーの生成に影響する、どのような値を送信するかを事前に考えておく必要があります。まず、どの年と月のデータが必要かを知る必要があります。value ここで渡すことができます複数の型で、dayjs に処理させます。統合された日付形式を取得してください。デフォルトでは、現在の月を意味する空の文字列が渡されます。結局のところ、年と月を知ることによってのみ、月の日数を取得し、週に対応する日を生成することができます。

range 代表时间范围,可以选择上图的左右箭头对应的上一个月和下一个月,月份不能超出范围。

rows 代表着你传入日期对应的标识色,如 :

let rows = [{
    date: "2022-5-21",
    color: "#5F8BFB"
}, {
    date: "2022-5-24",
    color: "#FBA75F"
}, {
    date: "2022-5-26",
    color: "#FBA75F"
}]
ログイン後にコピー

接下来,我们就围绕着这些参数去完成这个日历编写。

遍历日期

export default {
    name: "ml-calendar",
    data() {
        return {
            year: "",
            month: "",
            date: [],
            now: "",
            first: dayjs(this.value).format("YYYY-MM")
        }
    },
    methods: {
        render() {
            this.date.length = 0;
            this.year = dayjs(this.first).year();
            this.month = dayjs(this.first).month() + 1;
            this.now = dayjs().format("YYYY-MM-DD");

            let days = [...new Array(dayjs(this.first).daysInMonth()).keys()].map(i => {
                let n = i + 1;
                let text = n  dayjs(date).diff(item.date, 'day') === 0);
                if (obj) {
                    color = obj.color
                }
                return {
                    text,
                    date,
                    color,
                    now,
                }
            })
            let week = dayjs(`${this.year}-${this.month}-1`).day();
            this.date = [...new Array(week ? (week - 1) : 6).fill(null), ...days]
        },
        // ...
    }
}
ログイン後にコピー

首先,我们定义一个 first 变量,表示需要展示的年月,因为要变成日历,肯定日期要对应周几,这样我们通过  dayjs(this.first).daysInMonth() 方法获取当前传入月份的天数,然后进行遍历,把 rows 传入的标记色都给填充上。再通过得知算出这个月的第一天是周几,然后在前面就空出多少个数据来生成出 date

<template>
	<view>
        <!-- more -->
		<view>
			<view :class="{'active':item&&item.color}">
				<view></view>
				<text>{{item.now?'今日':item.text}}</text>
			</view>
		</view>
	</view>
</template>
ログイン後にコピー

当然,通过观察,每行始终是7个等大的格子,所以样式方面我们大可以使用 grid布局 ,可以十分快速的实现效果 。

.m-calendar-month__days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
}
ログイン後にコピー

监听更新

当修改当前日期时,或者标记数据时都要求重新渲染日历,此时用 watch 就可以轻松实现。

watch: {
    first(v) {
        this.render()
        this.$emit("change", {
            year: this.year,
            month: this.month,
        })
    },
    rows(v) {
       this.render()
    }
}
ログイン後にコピー

别忘了,我们还要定义两个事件给开发者使用,在 first 改变是会发出来一个 change事件 ,表示当前日历的年月,发生了改变发出通知。此时接受到通知,你可以从后端走接口重新获取新值或者完成其他的业务逻辑。而另一个是 select事件 来完成点击某个日期,发出的响应,在上个步骤的遍历阶段可以看出。

使用测试

<template>
    <view>
        <ml-calendar></ml-calendar>
    </view>
</template>
<script>
export default {
    data() {
        return {
            value:"2022-05",  // 初始化显示的月份
            range: ["2021-05", ""], // 时间范围
            rows: [{   // 特殊日期标注数据,当前日期和标注颜色
                date: "2022-5-21",
                color: "#5F8BFB"
            }, {
                date: "2022-5-24",
                color: "#FBA75F"
            }, {
                date: "2022-5-26",
                color: "#FBA75F"
            }],
            // ...
        }
    },
    methods: {
        // 切换日历时触发
        changeDate(e){
            console.log(e)  
        },
        // 点击日期返回当前日期对象 
        selectDate(e){
            console.log(e)  
        }
    }
    //...
}
</script>
ログイン後にコピー

日历的大小可能受外界容器的影响,所以,给他加一个100%的宽,此时,我们可以看到,他浏览器和微信小程序的表现是基本一致的。

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

发布

编辑readme

发布之前我们当然需要在里面的 readme.md 文件写写你开发这款软件是什么?怎么用?这些至少说明白,不然别人过段时间自己都忘了怎么用了,方便别人也方便自己吧。

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

执行发布

最后我们在 uni_modules 的文件夹中,找的我们刚刚写的 ml-calendar ,在这个文件夹上点击右键选择 发布到插件市场 (此前,必须要在Dcloud注册为开发者并且实名认证)。

此时,会填写一些关于这款插件的信息:

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

当然,里面会涉及到这款插件的兼容情况的填写,至于到底兼不兼容各端,收不收费根据情况去选择吧。

1ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

当点击提交后,就会执行发布指令了。

此时,如果控制台会有发布后的返回信息:

1ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

如果成功则会返回一个插件地址链接,点开链接:

1ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。

到这里属于你自己的一款插件就开发并发布完成了,是不是非常的容易啊。以后在开发uni-app时遇到可以抽离的,我们都可以制成插件发布出来,成就感和便利性都是满满当当~

推荐:《uniapp教程

以上がユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。の詳細内容です。詳細については、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VSCode でユニアプリを開発するにはどうすればよいですか? (チュートリアルの共有) VSCode でユニアプリを開発するにはどうすればよいですか? (チュートリアルの共有) May 13, 2022 pm 08:11 PM

VSCode でユニアプリを開発するにはどうすればよいですか?次の記事では、VSCode でのユニアプリ開発に関するチュートリアルを紹介します。これは、おそらく最も詳細なチュートリアルです。ぜひ見に来てください!

uniapp を使用してシンプルなマップ ナビゲーションを開発する uniapp を使用してシンプルなマップ ナビゲーションを開発する Jun 09, 2022 pm 07:46 PM

uniapp を使用してシンプルなマップ ナビゲーションを開発するにはどうすればよいですか?この記事では簡単な地図の作り方を紹介しますので、ぜひ参考にしてください。

uniapp を使用してスネーク ゲームを開発する方法について話しましょう。 uniapp を使用してスネーク ゲームを開発する方法について話しましょう。 May 20, 2022 pm 07:56 PM

uniapp を使用してスネーク ゲームを開発するにはどうすればよいですか?次の記事では、Uniapp に Snake ゲームを実装する手順を段階的に説明します。お役に立てば幸いです。

uni-app vue3 インターフェイスリクエストをカプセル化する方法 uni-app vue3 インターフェイスリクエストをカプセル化する方法 May 11, 2023 pm 07:28 PM

uni-app インターフェイス、グローバル メソッドのカプセル化 1. ルート ディレクトリに API ファイルを作成し、API フォルダーに api.js、baseUrl.js、および http.js ファイルを作成します。 2.baseUrl.js ファイル コード exportdefault"https://XXXX .test03.qcw800.com/api/"3.http.js ファイル コードexportfunctionhttps(opts,data){lethttpDefaultOpts={url:opts.url,data:data,method:opts.method

ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。 ユニアプリ カレンダー プラグインを開発 (および公開) する手順を段階的に説明します。 Jun 30, 2022 pm 08:13 PM

この記事では、ユニアプリ カレンダー プラグインの開発をステップごとに説明し、次期カレンダー プラグインの開発からリリースまでの手順を紹介します。

uniapp が複数選択ボックスの全選択機能を実装する方法を説明する例 uniapp が複数選択ボックスの全選択機能を実装する方法を説明する例 Jun 22, 2022 am 11:57 AM

この記事では、uniapp に関する関連知識を提供します。主に、複数選択ボックスの全選択機能の実装に関する問題を整理します。全選択機能が実装できない理由は、チェックボックスのチェックされたフィールドがオンになっている場合です。動的に変更されると、インターフェイス上のステータスはリアルタイムに変更されますが、checkbox-group の変更イベントはトリガーされません。

uniapp のスクロールビュー ドロップダウンの読み込みについて話しましょう uniapp のスクロールビュー ドロップダウンの読み込みについて話しましょう Jul 14, 2022 pm 09:07 PM

uniapp はスクロールビューのドロップダウン読み込みをどのように実装しますか?次の記事では、uniapp WeChat アプレットのスクロールビューのドロップダウン読み込みについて説明しています。

uniapp が電話録音機能を実装する方法の詳細な例 (コード付き) uniapp が電話録音機能を実装する方法の詳細な例 (コード付き) Jan 05, 2023 pm 04:41 PM

この記事では、uniapp に関する関連知識を皆さんに提供します。主に uniapp を使用して電話をかける方法と同期録音する方法を紹介します。興味のある友人はぜひご覧ください。皆様のお役に立てれば幸いです。

See all articles