検索
ホームページウェブフロントエンドjsチュートリアルJavaScript_javascript ヒントを使用して保守可能なスライドショー効果コードを作成する

明らかに、その効果は非常に実用的です。このエフェクトについては、エフェクト ライブラリの使用方法は説明しませんが、同様のエフェクトを作成し、それを使いやすく、目立たず、保守しやすい状態に保つ方法 (将来の保守担当者が変更する必要がないようにするため) を説明します。スクリプトの場合は、画像を変更します。 、外観またはテキストラベル)。

ステップ 1: 問題の分析
優れたスクリプトを作成するには、最初のステップは、達成したいことを分析することです。写真のスライドショー効果を作成したいのですが、メンテナンスを簡単にしたいのです。

スライドショー効果を作成する方法

Web サイトでスライドショーを表示するには、いくつかの方法があります。

ドキュメントにすべての画像を含めます。
JavaScript を使用せずに実行する場合、これは安全な選択です。さらに、ページが読み込まれると、すべての画像も読み込まれます。ただし、この方法は少数の画像に対してのみ機能します。

ドキュメント内の最初の画像が含まれており、スライドショー機能を作成するサーバー側スクリプトがあります。
これも非常に安全ですが、次の写真を取得するためだけにページ全体をロードしたくないので、エンド ユーザーにとっては非常に煩わしいものです。ただし、ページ表示や広告クリックにとってはより効果的であるため、多くのニュース サイトがこの方法を使用しています。

ドキュメント内の最初の画像を含め、必要に応じて追加の画像を読み込みます。
このメソッドで気になるのは、JavaScript に依存し、写真リストを保持する JavaScript 配列を持たなければならないことです。また、何かが起こっていることをユーザーに示すための読み込みインジケーターを提供する必要もあります。

この場合、以下の写真のリストを取得し、進むボタンと戻るボタンを使用してスライドショー効果に変換します。また、写真の総数のうちどの写真が現在表示されているかを示すインジケーターを使用します。



  • 廊下
  • ;
  • ホブ

  • バスルーム

  • >
  • ベッドルーム


最終的な出力は、サンプルのスライドショー効果のようになります。

依存関係のチェック

ここには、JavaScript の生成に依存する要素がいくつかあります: テキスト インジケーター、前方およびダウン リンク。ソリューションを使用可能な状態に保つには、次のことを確認する必要があります:

これらの要素は、JavaScript が利用可能な場合にのみ表示されます (ユーザーが提供を信頼している機能)。リンクは、ユーザーが当社に寄せる信頼を損なうことはできません。
インタラクティブな要素は、入力デバイスに関係なく利用できる必要があります (ユーザーがマウスを持っているかどうかには依存しません)。
ユーザーが再度アクセスできない限り、画像を非表示にすべきではありません。技術的には、前方リンクと後方リンクなしで最初の画像のみを表示するのはフォールバックですが、なぜユーザーはすべての画像をダウンロードし、最初の画像だけを表示する必要があるのでしょうか?
ステップ 2: スクリプトを計画する
問題を評価し、使用する解決策を選択したら、スクリプトの計画を開始できます。基本的に、スクリプトは次のことを行う必要があります:

スライド リストが存在し、いくつかの画像が含まれているかどうかを確認します (画像のスライドショー効果を作成する理由はありますか?)。
最初の写真を除き、すべての写真を非表示にします。
前方リンクと後方リンク、および現在の位置を示すインジケーターを作成します。
現在表示されている画像の番号をリンクで増減させるイベント ハンドラーを追加します。
スライド効果が範囲を超えていないことを確認してください。画像番号が 0 未満の場合は最後の画像になり、その逆も同様です。
さまざまな機能の処理

この問題を処理する方法がいくつかあります。その 1 つは、DOM を使用して各 LI エントリを反復処理し、それを非表示にすることです。このイベント リスナー関数では、まず以前に表示されていた LI (存在する場合) を非表示にし、現在の LI を表示します。

注: 画像の代わりに LI を表示または非表示にすることは、管理者が一部のタイトルなどの他の要素を各スライドに追加できるため、より合理的です。

このメソッドの問題は、必要なスタイル変更を JavaScript で行っていることです。つまり、スクリプト内で表示をブロックからなしに変更するだけではなく、より複雑なスタイル変更が必要な場合、スクリプトはさらに整理されなくなります (パフォーマンスと動作が分離されなくなります)。

スタイルは CSS パーサーに任せられます

よりクリーンなアプローチは、すべての外観変更 (すべてのリスト項目がダウンロードされた後にリスト項目の一部を非表示にする) をブラウザーの CSS パーサーに任せることです。この例では、スライドショーで CSS ルールを使用して、すべてのリスト項目を簡単に非表示にし、現在の項目のスタイルを特定のクラスでオーバーライドできます。

HTML:



  • 廊下

  • "
  • ホブ

  • img src="img; / flat3.jpg" alt="バスルーム" />
  • リビングルーム


    #slideshow li{
    display:none;
    }
    #slideshow li.current{
    display:block;
    }
    唯一の問題はCSS と JavaScript を無効にすると、訪問者は他の画像にアクセスできなくなります。したがって、JavaScript が使用可能な場合にのみこれらのスタイルを適用する必要があります。トリックは、JavaScript が利用可能な場合、スライドの UL にクラス (例: js ) を適用することです。これにより、CSS で次のように変更するだけで、JavaScript が使用可能な場合にのみエフェクトを表示できるようになります。 🎜>}
    #slideshow.js li.current{
    display:block;
    }
    このクラスのフックは、スライドショーの静的バージョンと動的バージョンを提供するために使用することもできます。

    スクリプトで行う必要があるのは、現在のクラスを削除または追加して、現在および以前の写真を表示または非表示にすることだけです。

    スクリプトが同じページ上の他のスクリプトに影響を与えないように、メイン オブジェクトを作成し、その上にすべてのメソッドとプロパティを構築します。これにより、init() 関数が上書きされたり、同じ名前の他の関数をオーバーライドしたりすることがなくなります。

    JavaScript:


    slideshow = {
    current:0, // 現在のスライドのエンコーディング
    init:function(){
    // 初期化と設定 イベントhandle function
    },
    show:function(e){
    // イベントリスナー
    }
    }
    第 3 ステップ、基本的なツールの方法 (Essential Tools)
    、スクリプトを計画して構築するためのフレームワークがあります。この機能を実現するために必要なツールについて考えてみましょう。 DOM スクリプトのヘルパー ライブラリには、少なくとも次のものが含まれている必要があります:

    イベント ハンドラーを登録する方法。現在は John Resig の addEvent() メソッドを使用します。
    CSS スタイル名を追加および削除するメソッド。
    HTML 要素のデフォルトの動作をオーバーライドするメソッド。リンクのターゲット ページを表示する必要はなく、スクリプトを実行するだけです。
    これらのユーティリティ メソッドをメイン オブジェクトに追加して開始します。

    JavaScript:


    slideshow = {
    current:0, // 現在のスライドのコーディング
    init:function(){
    // イベントハンドラー関数の初期化と設定
    },
    show:function(e){
    // イベントリスナー
    },
    addEvent:function(obj, type, fn) {
    if (obj.attachEvent) {
    obj['e' type fn] = fn;
    obj[type fn] = function( ){
    obj['e' type fn]( window.event );
                obj.attachEvent('on' type, obj[type fn]);
    } else
    obj.addEventListener( type, fn, false );
    },
    removeClass:function(o,c){
    var rep=o.className.match(' ‘ c)?' 「 c:c;
    o.className=o.className.replace(rep,”);
    },
    addClass:function(o,c){
    var test = new RegExp(”(^|\s)” c ”(\s|$)”).test(o.className );
    if(!test){o.className =o.className?' ‘ c:c;}
    },
    cancelClick:function(e){
    if (window.event){
    window.event.cancelBubble = true;
    window.event.returnValue = false;
    }
    if (e && e.stopPropagation && e.preventDefault){
    e.stopPropagation();
    e.preventDefault();
    }
    }
    }
    当文档完全ダウンロード完了,第一件事情要要执実行 init() 方法:

    JavaScript:


    slideshow = {
    current:0, // 当前幻灯片编码
    init:function(){
    // 初期化和设置イベント处理関数
    },
    show:function(e) {
    // イベント监听器
    },
    addEvent:function( obj, type, fn ) {
    if ( obj.attachEvent ) {
    obj['e' type fn ] =ふん;
    obj[type fn] = function(){
    obj['e' type fn]( window.event );
    }
    obj.attachEvent('on' type, obj[type fn] );
    } else
    obj.addEventListener( type, fn, false );
    },
    removeClass:function(o,c){
    var rep=o.className.match(' ‘ c)?' 「 c:c;
    o.className=o.className.replace(rep,”);
    },
    addClass:function(o,c){
    var test = new RegExp(”(^|\s)” c ”(\s|$)”).test(o.className );
    if(!test){o.className =o.className?' ‘ c:c;}
    },
    cancelClick:function(e){
    if (window.event){
    window.event.cancelBubble = true;
    window.event.returnValue = false;
    }
    if (e && e.stopPropagation && e.preventDefault){
    e.stopPropagation();
    e.preventDefault();
    }
    }
    }

    slideshow.addEvent(window,'load',slideshow.init);
    ステップ 4: スクリプト (スクリプト)
    これで、すべてのメソッド ツールが配置され、ウィンドウがロードされたときに init() を呼び出します。 、このメソッドのインスタンス化を開始できます。

    注: これは init() メソッドのみであり、スクリプト全体ではありません。行番号があるため、スクリプトをコピーして貼り付けるとエラーが発生します。


    1: init:function(){
    2: if(document.getElementById && document.createTextNode){
    3: var list = document.getElementById(' '); 🎜> 4: if(list){
    5: slideshow.items = list.getElementsByTagName('li'); if(slideshow .all > 1){
    8: slideshow.addClass(list, 'js '); }
    12: slideshow.show();
    13: }
    2 行目は、DOM がサポートされているかどうかを検出します。
    行 3 と 4、ID スライドショーを使用して要素を取得しようとします。これが定義されていない場合、残りのメソッドは実行されません。
    5 行目と 6 行目では、リスト項目とリスト項目の数を取得し、それぞれ属性 item と all に格納します。
    行 7 はリスト項目がもう 1 つあるかどうかを確認し、リスト項目が多すぎない場合は残りは実行されません。
    8 行目、js スタイル クラス名をリストに追加します。これにより、異なるはずのリスト項目とスタイルが非表示になります。
    9 行目、createNav() を呼び出し、このリストをパラメータとして指定します。
    行 12、show() を呼び出して、事前定義された現在の属性でスライド ドアを表示します。
    createNav() メソッドは、DOM スクリプトを使用して、スライドショーが適切に動作するために必要な HTML を作成します。


    1: createNav:function(o){
    2: var p = document.createElement('p');
    3: slideshow.addClass(p, 'slidenav') ;
    4: slideshow.prev = document.createElement('a');
    5: slideshow.prev.setAttribute('href', '#');
    6: var templabel = document.createTextNode (' 7: slideshow.prev.appendChild(templabel);
    8: slideshow.addEvent(slideshow.prev, 'click', slideshow.show); p.appendChild(slideshow.prev);
    10: slideshow.count = document.createElement('span') );
    12: slideshow.count.appendChild(templabel); appendChild(slideshow.count);
    14: slideshow.next = document.createElement('a');
    15: slideshow.next.setAttribute('href', '#');
    16: var templabel = document.createTextNode('>>');
    17: slideshow.next.appendChild(templabel );
    18: slideshow.addEvent(slideshow.next, 'click', slideshow.show) ;
    19: p.appendChild(slideshow.next);
    20: o.parentNode.insertBefore(p , o);
    2 行目と 3 行目は P を作成します。要素を使用してスライド ナビゲーション全体を含め、slidenav という名前のクラスを適用します。
    行 4 と 5、新しいリンク要素を作成し、それを prev という属性に保存し、href 属性を # に設定します。リンクが実際のリンクとして表示され、キーボードが有効になることが必要です。
    6 行目では、新しいテキスト ラベルを作成します。
    7 行目、リンクにテキスト ラベルを追加します。
    8 行目に、show() リスニング メソッドを指すイベント処理関数を追加します。
    9 行目、段落に新しいリンクを追加します。
    行 10、カウンタの開始では、SPAN 要素を作成し、それを count 属性とともに保存します。
    行 11 は、合計内の現在のスライドの位置を表示する新しいテキスト ノードを作成します。人間のカウントは 0 からではなく 1 から始まるため、現在の属性に 1 を追加する必要があります。
    行 12、テキストを新しい子ノードとして SPAN に追加します。
    13 行目、SPAN 要素を段落に追加します。
    14 行目から 19 行目は、基本的に 4 行目から 9 行目のコピーです。今回のリンクの再作成における唯一の違いは、next 属性に格納されるテキスト ラベルです。
    行 20、最近作成した段落をドキュメント内の最初の画像リストの前に挿入します。
    作成したタグはすべて必要です。残っているのは、リンクがクリックされたときに呼び出されるリスナー メソッド show() を定義することだけです。


    1: show:function(e){
    2: if(this === slideshow.next || this === slideshow.prev){
    3: スライドショー。 RemoveClass(slideshow.items[slideshow.current], 'current');
    4: var addto = (this === slideshow.next) ? 1: -1;
    5: slideshow.current = スライドショー。現在の追加先;
    6: if (slideshow.current & lt; 0) {
    7: Slideshow.current = (SlideShow.all-1);
    8: 🎜> 9: if (SLIDESHOW.current > slideshow.all-1){
    10: slideshow.current = 0; ' / ' slideshow.all);
    15: slideshow.addClass(slideshow.items[slideshow.current], 'current' ;
    行 2、クリックされた要素が下向きリンクか前方リンクかを検出します (これは addEvent() によって返されます)。
    行 3、現在表示されているスライドから現在のクラスを削除します。クリックされたリンクがあるため、これが可能になります。
    行 4 では、この属性と次の属性を比較することにより、現在のカウンターを増やすか減らすかを決定します。
    5行目、カウンターを修正します。
    6 行目から 11 行目、カウンターが範囲外にならないことを確認します。最初のスライドで前方リンクをクリックすると最後に設定され、最後のスライドで をクリックします。逆方向リンクの場合、最初のリンクに設定されます。
    行 13 と 14、新しいカウンター テキストを生成し、古いものを置き換えます。
    行 15 は、current という名前のクラスを設定することによって、新しい現在のスライドを表示します。
    行 16、cancelClick() を呼び出して、リンクのデフォルトの動作を防止します。
    これらはスクリプトのすべての内容です。このスクリプトは動作するようになりましたが、まだ保守可能ではありません。

    ステップ 5: メンテナンスの容易化
    スクリプトは完全に機能し、分離されており、完璧です。本当の問題は、現状を維持するのが簡単ではないということです。

    おそらく、スクリプト アプリケーションに関する最大の問題は、すべてのメンテナが JavaScript を理解しているわけではなく、スクリプトの変更が必要な部分を積極的に探してくれないことです。

    メンテナがこれを行うのを防ぐための最も安全な方法は、スクリプトと CSS で使用される名前と ID をスクリプトの機能から分離することです。また、テキスト ラベルは変更される可能性があるため、使用するスクリプトから分離することをお勧めします。たとえば、スクリプトが別の言語にローカライズされている場合です。

    ツールメソッドの再利用

    最初に行うことは、他のスクリプトで再利用できるユーティリティ関数をメイン スクリプトから分離することです。おそらく、ほとんどの JavaScript ライブラリはここから始まります。

    tools.js:


    /* ヘルパー メソッド */
    tools = {
    addEvent:function(obj, type, fn) {
    if ( obj.attachEvent ) {
    obj['e' type fn] 🎜> 🎜> },
    RemoveClass :function(o,c){
    var rep=o.className.match(' 'c) ?' ' c:c;
    o.className=o.className.replace(rep,”);
    addClass:function(o,c){
    var test = new RegExp (”(^|\s)” c “(\s|$)”).test(o.className) ;
    if(!test){o.className =o.className?' c:c;
    },
    cancelClick:function(e){
    if (window.event){
    window.event.cancelBubble = true;
    window.event.returnValue = false; > }
    if (e && e.stopPropagation && e.preventDefault) {
    e.stopPropagation() ;
    e.preventDefault();
    }
    }
    }
    CSS クラスと ID - 外観

    次のステップでは、外観クラスと ID を別のインクルード ファイルに分割します。他のスクリプトがこれらを使用する可能性は低いため、スライドショーの名前空間内で安全であることを確認してください。簡単な説明メモを書くのにも邪魔になりません。

    slideshow-css.js:


    slideshow.css = {
    /*
    これらは、スライド効果で使用されるクラスと ID です。
    ここでそれらのいずれかを変更できます。
    名前は必ず引用符で囲み、カンマで終了してください (最後のものを除く)。
    */

    showID :'slideshow',
    DynamicClass :'js',
    slideNavigationClass :'slidenav',
    currentClass :'current'
    }
    テキスト ラベル - エンド ユーザーへの説明

    最後になりましたが、やはりスライドショー名前空間を使用して、テキスト ラベルを別のインクルード ファイルに入れてみましょう。

    slideshow-labels.js:


    slideshow.labels = {
    /*
    これらは、スライド効果で使用されるテキスト ラベルです。
    ここでそれらのいずれかを変更できます。
    名前は必ず引用符で囲んでください。
    最後にカンマはありません。
    */

    前: ' 次: '>>',
    counterpider : ‘ of ‘
    }
    メイン スクリプトを変更します

    次に、埋め込みデータに依存するのではなく、この情報を使用するようにメイン スクリプトを変更する必要があります。変更はそれほど多くなく、検索と置換で簡単に行うことができます。

    slideshow.js:


    slideshow = {
    current:0,
    init:function(){
    if(document.getElementById && document.createTextNode ){
    var list =document.getElementById(slideshow.css.showID);
    if(list){
    slideshow.items = list.getElementsByTagName('li') > slideshow.all = スライドショー。 items.length;
    if(slideshow.all > 1){
    tools.addClass(list, slideshow.css.dynamicClass);
    }

    slideshow.show();
    tools .addClass(p, slideshow.css.slideNavigationClass);
    slideshow.prev = document.createElement('a'); .prev.setAttribute('href', '#');
    var templabel = document.createTextNode(slideshow.labels.previous);
    slideshow.prev.appendChild(templabel); slideshow.prev, 'click', slideshow.show);
    p.appendChild(slideshow.prev)
    slideshow.count = document.createElement('span'); (slideshow.current 1) slideshow.labels.counterpider slideshow.all);
    slideshow.count.appendChild(templabel);
    p.appendChild(slideshow.count)
    slideshow.next = document.createElement ('a');
    slideshow.next.setAttribute('href' , '#');
    var templabel = document.createTextNode(
    slideshow.labels.next); .appendChild(templabel);
    tools.addEvent(slideshow.next, ' click', slideshow.show);
    p.appendChild(slideshow.next);
    o.parentNode.insertBefore(p, o) );
    },
    show:function(e){
    if(this === slideshow.next || this === slideshow.prev){
    tools.removeClass(slideshow.items) [slideshow.current],
    slideshow.css.currentClass);
    var addto = this === slideshow.next ? 1 : -1;
    slideshow.current = slideshow.current addto;if(slideshow.current slideshow.current = (slideshow.all-1)
    .count.replaceChild(templabel, slideshow.count.firstChild); > tools.addClass(slideshow.items[slideshow.current], slideshow.css.currentClass);
    tools.cancelClick(e);
    }
    }
    tools.addEvent(window,'load) ',slideshow.init);
    これらはすべて、将来のメンテナが手間をかけずにスクリプトを操作できるようにするために必要なファイルです。ファイル名はそれが何であるか明らかである必要があり、時間が経つにつれて標準スクリプトになります:

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

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:学習曲線と使いやすさPython vs. JavaScript:学習曲線と使いやすさApr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソースPython vs. JavaScript:コミュニティ、ライブラリ、リソースApr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへ:すべてがどのように機能するかC/CからJavaScriptへ:すべてがどのように機能するかApr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

See all articles

ホット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

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

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境