フロントエンド開発に必要な共通ツール機能のまとめ

フロントエンド開発に必要な共通ツール機能のまとめ

1. 時刻の書式設定とその他の方法

moment.jsライブラリファイルの使用をお勧めします

2. テンプレート、ループ、MAPなどのメソッドの使用

underscode.js のメソッド

3. フォームをJSONにシリアル化する


コードをコピー
コードは次のとおりです。

$.fn.serializeJson = 関数() {
var serializeObj = {};
var 配列 = this.serializeArray();
var str = this.serialize();
$(配列).each(関数() {
if (serializeObj[this.name]) {
$.isArray(serializeObj[this.name]) の場合 {
serializeObj[this.name].push(this.value);
} それ以外 {
serializeObj[this.name] = [serializeObj[this.name], this.value];
}
} それ以外 {
シリアル化Obj[this.name] = this.value;
}
});
serializeObj を返します。
};

4. ... 充填を使用した文字列インターセプト


コードをコピー
コードは次のとおりです。

String.prototype.strcut = 関数(数値) {
var 長さ = this.length;
var tmp = this.substr(0, 数値);
if (this.length > 数値) {
tmp + = "…";
}
tmp を返します。
}

5. 時間の形式はxxxx日、xxx分前、日付です


コードをコピー
コードは次のとおりです。

Date.prototype.Format = function(fmt, current) {
if (現在) {
var diff = current - this.getTime();
(差分 < 5 * 60 * 1000)の場合{
「ただ今」を返します。
}
(差分 < 60 * 60 * 1000)の場合{
return (Math.floor(diff / (60 * 1000))) + "分前";
}
(差分 < 24 * 60 * 60 * 1000)の場合{
return (Math.floor(diff / (60 * 60 * 1000))) + "時間前";
}
(差分 < 30 * 24 * 60 * 60 * 1000)の場合{
return (Math.floor(diff / (24 * 60 * 60 * 1000))) + "日前";
}
(差分 < 12 * 30 * 24 * 60 * 60 * 1000)の場合{
return (Math.floor(diff / (30 * 24 * 60 * 60 * 1000))) + "一ヶ月前";
}
(差分>12 * 30 * 24 * 60 * 60 * 1000)の場合{
return (Math.floor(diff / (12 * 30 * 24 * 60 * 60 * 1000))) + "年前";
}
}
var o = {
"Y+": this.getFullYear(), //月
"M+": this.getMonth() + 1, //月
"d+": this.getDate(), //日
"h+": this.getHours(), // 時間
"m+": this.getMinutes(), // ポイント
"s+": this.getSeconds(), // 秒
"q+": Math.floor((this.getMonth() + 3) / 3), //四半期
"S": this.getMilliseconds() // ミリ秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
(変数 k が o の場合)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
fmt を返します。
};

6. URLの解析


コードをコピー
コードは次のとおりです。

関数parseUrl() {
var arr = location.search.split('?')[1].split('&');
var パラメータ = {};
(var i = 0, l = arr.length; i < l; i++) の場合 {
var パラメータ = arr[i].split('=');
パラメータ[パラメータ[0]] = パラメータ[1];
}
パラメータを返します。
}

7. パラメータを取得する


コードをコピー
コードは次のとおりです。

関数 getParameterByName(名前) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = 新しい RegExp("[\\?&]" + 名前 + "=([^&#]*)"),
結果 = regex.exec(location.search);
結果が null を返します。"" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

8. 関数スロットリングにより、リアルタイム検索機能などの頻繁なイベントトリガーがよりまばらになり、パフォーマンスが向上します。使用方法は、fnはイベント応答関数、delayは間隔時間、throttle(fn, delay)を呼び出してイベントに新しい関数を返すことです。


コードをコピー
コードは次のとおりです。

関数スロットル(fn, 遅延) {
var タイマー = null;
関数()を返す{
var コンテキスト = this、
args = 引数;
タイマーをクリアします。
タイマー = setTimeout(関数() {
fn.apply(コンテキスト、引数);
}、 遅れ);
};
}

9. フォームの複数送信を防ぐには、9のように新しい関数を返す


コードをコピー
コードは次のとおりです。

/**
* 複数回のクリックを防ぐ
*
* fnが完了したときに呼び出されるコールバック
* 関数 fn(イベント,終了) {
* (typeof end === "function") && end(); // 操作が完了しました
* }
*/function noRepeateTap(fn) {
var $obj;
関数(イベント)を返す{
$obj = $(これ);
($obj.data("loading") === "true") の場合 {
戻る;
}
$obj.data("読み込み中", "true").addClass('読み込み中');
fn.call(this, イベント, 関数終了() {
$obj.data("読み込み中", "").removeClass('読み込み中');
戻る;
});
}
}

例9


コードをコピー
コードは次のとおりです。

// イベントをバインドする
$(container).on('click', '.btn-cancel', noRepeateTap(cancel));
//イベント応答関数
関数キャンセル(イベント、終了) {
イベントをデフォルトにしない();
//非同期リクエストをシミュレートする
setTimeout(関数(){
end(); // 完了を通知するには、手動でインジェクション完了関数を呼び出す必要があります。この関数は、スタイルを調整するためにロードクラスクラスを自動的に追加し、完了後に自動的に削除します。
},5000)
}

<<:  Prometheusコンテナのデプロイメントのための実用的なソリューション

>>:  少なくともn日間連続してログインしているユーザーに対するSQLクエリ

推薦する

DockerプライベートイメージライブラリとAlibaba CloudオブジェクトストレージOSSの簡単な分析

Docker プライベートイメージライブラリDockerプライベートイメージライブラリとAlibab...

vmware16 仮想マシンに共有フォルダを設定する方法

1. 仮想マシンに共有フォルダを設定します。 1. 処理する仮想マシンを選択し、右クリックして設定...

Mac に mysql5.7 をインストールするための完全な手順 (画像とテキスト付き)

最近、Mac システムを使用して、ローカル Web サーバー環境を構築する準備をしていました。 Ma...

Vue の匿名スロットと名前付きスロットの詳細な説明

目次1. 匿名スロット2. 名前付きスロット要約するスロット (slot) は、Vue のコンテンツ...

MySQL SQL文の特殊処理文のまとめ(必読)

1.テーブル全体を更新します。データ行の列の値が空の場合は、別の列フィールドの値と同じにします。 ...

TomcatのmaxPostSize属性を設定する際に注意する必要がある問題を解決する

必要:近い将来、大容量ファイルのアップロード機能を実装します。フロントエンドフレームワークのアップロ...

Windows 10 システムで nginx ファイル サーバーを構成するためのグラフィック チュートリアル

Nginx の公式 Web サイトから Windows バージョンの Nginx をダウンロードしま...

MySQL実行計画を学ぶ

目次1. 実施計画の概要2. 実行計画の実践id:選択タイプ:テーブル:タイプ:可能なキー:鍵:キー...

CSSスプライト技術は複数の背景を1つのPNG画像に統合しますCSSポジショニング

アメリカのYAHOOがページ制作で使用している画像統合技術。これらのアイコン、列背景、画像ボタンを定...

MySQL トリガーの基本的な使い方(作成、表示、削除など)の詳細な説明

目次1. MySQLトリガーの作成: 1. MySQLトリガー作成構文: 2. MySQL作成構文の...

HTML2 キャンバス SVG が認識されない場合の解決策

ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...

Web インタビュー: MVC と MVVM の違いと、Vue が MVVM に完全に準拠していない理由

目次MVCとMVVMの違い前述のMVCC の概要長所と短所MVVM概要MVVM 実装者 — Vue ...

Linuxコマンドのファイル上書きとファイル追加の詳細な説明

1. コマンド > と >> の違いコマンド>: ファイルが存在する場合は、...

MySQL の主キーがクエリを高速化するために数値を使用するか UUID を使用するかについての簡単な分析

実際の開発では、MySQL の主キーは重複できず、主キーが自動的にインクリメントされることがあります...