スパのソーシャルログイン:GoogleとFacebookを介してユーザーを認証する
単一のページアプリケーションアーキテクチャを備えたWebアプリケーションの数が増加しています。これらのアプリケーションは、多くの場合、ユーザープロファイルの詳細を保存するなど、ある程度のユーザーが制限する相互作用を必要とします。従来のHTMLベースのアプリケーションでこの機能を実装することは比較的簡単ですが、各APIリクエストに認証を必要とする単一ページアプリケーションではさらに難しいです。
この記事では、passport.jsライブラリを使用して複数のプロバイダーにソーシャルログインを実装し、その後のAPI呼び出しのトークンベースの認証を実装する手法を実証します。
この記事のすべてのソースコードは、GitHubリポジトリからダウンロードできます。
キーポイント
- Passport.jsライブラリを使用して、GoogleとFacebookのソーシャルログインを実装し、単一ページアプリケーションのユーザー認証を強化します。
- セッションとCookieベースの制限を避けて、安全なトークンベースのAPI認証のためにJSON Webトークン(JWT)を選択します。
- ソーシャルログイン機能の使用:簡略化されたUI、ユーザー資格情報を保存する必要はなく、クロスサイトのパスワードリセット。
- パスポートGoogle-Oauth、Passport-Facebook、Passport-JWTなどの特定のモジュールでパスポートを構成して、認証とトークンの生成を管理します。
- パスポート-JWTモジュールを使用してトークンベースの認証を実装し、認証ヘッダーのJWTを確認することによりAPIエンドポイントを保護します。
- リダイレクトモードとクライアントスクリプトでユーザーエクスペリエンスを簡素化します。
なぜあなたのスパでソーシャルログインを使用するのですか?
Webアプリケーションにログインメカニズムを実装する際には、多くの問題を考慮する必要があります。
- UIは認証自体をどのように処理する必要がありますか?
- ユーザー情報をどのように保存する必要がありますか?
- ユーザーの資格情報をどのように保護する必要がありますか?
主にソーシャルネットワーク(主にソーシャルネットワーク)を使用すると、プラットフォームを使用して独自のアプリを確認できます。これは、多くの異なるAPI -OAuth 1.0、OAuth 2.0、OpenID、OpenID Connectなどを通じて実装されています。
これらのソーシャルログインテクノロジーを使用して、ログインプロセスを実装することには多くの利点があります。
- ユーザーが認証に使用するUIを提示する責任はもうありません。
- 敏感なユーザーの詳細を保存および保護する責任はもうありません。
- ユーザーは、単一のログインを使用して複数のサイトにアクセスできます。
- ユーザーがパスワードが漏れていると感じた場合、パスワードを一度リセットし、多くのサイトから利益を得ることができます。
- 通常、認証機能を提供するサービスは、追加の詳細を提供します。たとえば、これを使用して、ウェブサイトを使用したことがないユーザーを自動的に登録したり、プロファイルに代わって更新を投稿できるようにするために使用できます。
なぜAPIにトークンベースの認証を使用するのですか?
クライアントがAPIにアクセスする必要があるときはいつでも、アクセスを許可するかどうかを判断するための何らかの方法が必要です。これを達成するには多くの方法がありますが、主なオプションは次のとおりです。
- セッションベースの認証
- Cookieベースの認証
- トークンベースの認証
Cookieベースのアプローチは、Cookieにいくつかの識別子を保存するだけで、API要求を自動的に識別するために使用されることです。これは、最初にCookieを設定するには何らかのメカニズムが必要であることを意味し、同じホストへのすべての(適切な)リクエストにCookieが自動的に含まれるため、後続のリクエストで漏れます。
トークンベースのアプローチは、Cookieベースの認証のバリアントですが、より多くの制御を可能にします。基本的に、クッキーベースの認証システムと同じ方法でトークンを生成しますが、リクエストに自分自身を含めます - 通常は「承認」ヘッダーに、またはURLに直接。これは、ストレージトークンを完全に制御できることを意味します。これには、要求が含まれます。
注:HTTPヘッダーが「承認」と呼ばれている場合でも、実際に認証に使用しています。これは、クライアントが何をするかではなく、クライアントが誰であるかを判断するためにそれを使用しているためです。トークンを生成するために使用される戦略も重要です。これらのトークンは参照トークンにすることができます。つまり、サーバーが実際の詳細を見つけるために使用される識別子にすぎません。または完全なトークン。つまり、トークンにはすべての必要な情報が既に含まれていることを意味します。
トークンを参照するには、ユーザーの資格情報がクライアントに漏れることはないため、重要なセキュリティの利点があります。ただし、行われた各リクエストの実際の資格情報にトークンを解析する必要があるため、パフォーマンスペナルティがあります。
完全なトークンは逆です。彼らはトークンを理解している人にユーザーの資格情報を公開しますが、トークンは完了しているため、それを探すときにパフォーマンスの損失はありません。
通常、この標準によりトークンのセキュリティが改善されるため、JSON Webトークン標準を使用してフルトークンが実装されます。具体的には、JWTは暗号化トークンを許可します。つまり、トークンが改ざんされていないことを保証できます。また、暗号化できることも規定されています。つまり、トークンを暗号化キーなしではデコードすることさえできません。
ノードでJWTを使用してレビューする場合は、node.jsを使用してJSON Webトークンを使用するチュートリアルをご覧ください。
完全なトークンを使用するもう1つの欠点はサイズです。たとえば、リファレンストークンは、長さが36文字であるUUIDを使用して実装できます。代わりに、JWTは数百の文字ほど簡単になります。
この記事では、JWTトークンを使用して、それらがどのように機能するかを示します。ただし、この関数を自分で実装する場合、参照トークンまたはフルトークンを使用するか、これに使用するメカニズムを使用するかを決定する必要があります。
パスポートとは?
パスポートは、Webアプリケーションの認証用のnode.jsのモジュールのセットです。多くのノードベースのWebサーバーを非常に簡単にプラグインでき、モジュラー構造を使用して、過度の膨満せずに必要なログインメカニズムを実装できます。パスポートは、多数の認証ニーズをカバーする強力なモジュールスイートです。これらのモジュールを使用して、異なるエンドポイントの異なる認証要件を可能にするプラグ可能なセットアップを作成できます。使用される認証システムは、URLの特別な値を単純にチェックするだけでなく、すべての作業を行うためにサードパーティのプロバイダーに依存するのと同じくらい簡単です。
この記事では、APIエンドポイントのソーシャルログインとJWTトークンベースの認証を有効にするために、Passport-Google-Oauth、Passport-Facebook、およびPassport-JWTモジュールを使用します。
Passport-JWTモジュールを使用して、いくつかのエンドポイント(実際にアクセスするために認証が必要なAPIエンドポイント)がリクエストに有効なJWTが存在する必要があります。 Passport-Google-OauthおよびPassport-Facebookモジュールは、GoogleとFacebookに対してそれぞれ認証するエンドポイントを提供し、アプリの他のエンドポイントにアクセスするために使用できるJWTを生成するために使用されます。
シングルページのアプリケーションのソーシャルログインを有効にしますここから、シンプルなシングルページアプリを取得し、ソーシャルログインを実装する方法を説明します。このアプリケーションはExpressで記述されており、シンプルなAPIは安全なエンドポイントと安全でないエンドポイントを提供します。続行したい場合は、https://github.com/sitepoint-editors/social-logins-spaからこのアプリのソースコードを確認できます。このアプリケーションは、ダウンロードされたソースコードでNPMインストールを実行して、すべての依存関係をダウンロードすることで構築できます。
アプリを正常に使用するには、GoogleおよびFacebookにソーシャルログイン資格情報を登録し、アプリに資格情報を提供する必要があります。完全な指示は、DEMOアプリケーションのREADMEファイルに記載されています。これらの資格情報は、環境変数としてアクセスされます。したがって、アプリケーションは次のように実行できます:
# Linux / OS X $ export GOOGLE_CLIENTID=myGoogleClientId $ export GOOGLE_CLIENTSECRET=myGoogleClientSecret $ export FACEBOOK_CLIENTID=myFacebookClientId $ export FACEBOOK_CLIENTSECRET=myFacebookClientSecret $ node src/index.js
# Windows > set GOOGLE_CLIENTID=myGoogleClientId > set GOOGLE_CLIENTSECRET=myGoogleClientSecret > set FACEBOOK_CLIENTID=myFacebookClientId > set FACEBOOK_CLIENTSECRET=myFacebookClientSecret > node src/index.js
JWTは、安全でありながら完全に自己完結型であるため、シナリオにとって特に良い選択です。 JWTは、JSONペイロードと暗号化された署名で構成されています。ペイロードには、認証されたユーザーの詳細、認証システム、トークンの有効期間が含まれています。署名は、悪意のある第三者がそれを偽造できないことを保証します。署名キーを持っている人はトークンを生成できます。
この記事を読むと、アプリケーションの一部として含まれるconfig.jsモジュールへの参照がよく表示されます。このモジュールは、アプリケーションの構成に使用され、ノードConvictモジュールを使用して外部的に構成されています。この記事で使用されている構成は次のとおりです。
http.port - アプリケーションが実行されるポート。デフォルトは3000で、「ポート」環境変数でオーバーライドされています。
- authentication.google.clientID - Google認証用のGoogleクライアントID。これは、「Google_ClientID」環境変数を介してアプリケーションに提供されます。
- authentication.google.clientsecret - Google認証のためのGoogleクライアントキー。これは、「google_clientsecret」環境変数を介してアプリケーションに提供されます。
- authentication.facebook.clientID - Facebook認証用のFacebookクライアントID。これは、「Facebook_ClientID」環境変数を介してアプリケーションに提供されます。
- authentication.facebook.clientsecret - Facebook認証のFacebookクライアントキー。これは、「facebook_clientsecret」環境変数を介してアプリケーションに提供されます。
- authentication.token.secret - 認証トークンに署名するJWTの鍵。デフォルトは「MySuperSecretkey」です。
- authentication.token.issuer - JWTに保存されている発行者。これは、1つの認証サービスが多くのアプリケーションにサービスを提供する場合、どのサービスがトークンを発行するかを示します。
- authentication.token.audience - jwtに保存されているオーディエンス。これは、1つの認証サービスが多くのアプリケーションにサービスを提供する場合、トークンのターゲットサービスを表します。
- 統合されたパスポート
アプリでパスポートを使用する前に、少量の設定が必要です。これは、モジュールがインストールされていることを確認し、Expressアプリケーションのミドルウェアを初期化することにすぎません。
この段階で必要なモジュールは、パスポートモジュールであり、ミドルウェアをセットアップするには、Expressアプリに追加するだけです。
Passport Webサイトの手順に従って、Passport.session()を使用して電話をかけることにより、セッションサポートをセットアップすることが許可されます。アプリでセッションサポートは使用していないため、これは不要です。これは、Stateless APIを実装しているためです。そのため、各リクエストをセッションに維持する代わりに、各リクエストに認証を提供します。
安全なエンドポイントのためのJWTトークン認証を実装
パスポートでJWTトークン認証をセットアップするのは比較的簡単です。 Passport-JWTモジュールを使用します。これにより、すべての重い持ち上げが行われます。このモジュールは、「JWT」で始まる値を持つ「承認」ヘッダーを探し、ヘッダーの残りを認証用のJWTトークンとして扱います。次に、JWTを解読し、操作のために自分のコードに格納されている値を提供します。たとえば、ユーザールックアップを実行します。無効な署名などのJWTが無効である場合、トークンは期限切れになりました...リクエストは、あなた自身のコードの追加の関与なしに認識されません。
次に、JWTトークン認証を構成する方法は次のとおりです。
上記の上記では、いくつかの内部モジュールを使用しました:# Linux / OS X $ export GOOGLE_CLIENTID=myGoogleClientId $ export GOOGLE_CLIENTSECRET=myGoogleClientSecret $ export FACEBOOK_CLIENTID=myFacebookClientId $ export FACEBOOK_CLIENTSECRET=myFacebookClientSecret $ node src/index.js
config.js - アプリケーション全体の構成プロパティが含まれています。これらのプロパティは構成されており、値をいつでも使用できると想定できます。
- users.js - これはアプリケーションのユーザーストレージです。これにより、ユーザーをロードして作成できます。ここでは、ユーザーを内部IDでロードするだけです。
- ここでは、既知のキー、出版社、聴衆を使用してJWTデコーダーを構成し、承認ヘッダーからJWTを取得する必要があることをポリシーに通知します。出版社または聴衆のいずれかがJWTに保存されているものと一致しない場合、認証は失敗します。これは、非常に単純な保護ですが、counterfutiating防止防止の別の層を提供します。
トークンを正常にデコードした後、ペイロードとしてコールバックに渡されます。ここでは、トークンの「トピック」によって識別されたユーザーを見つけようとしています。実際、トークンが取り消されていないことを確認するなど、追加のチェックを行うことができます。
ユーザーが見つかった場合、パスポートに提供し、パスポートをReq.Userとしてリクエスト処理の残りに提供します。ユーザーが見つからない場合、パスポートにユーザーに提供されず、パスポートは認証が失敗したと考えます。
これはリクエストハンドラーに接続できるため、リクエストが成功するために認証が必要になるようにします。
上記の3行目は、パスポートにリクエストを処理させる魔法です。これにより、Passportは、渡されたリクエストで構成した「JWT」ポリシーを実行し、すぐに継続または故障させることができます。
このテストを実行するために、https://www.jsonwebtoken.ioにアクセスし、そこでフォームに記入することにより、手動でJWTを生成しました。 「ペイロード」は私が使用しているものです:
有効なトークンでのみリソースにアクセスできるようになり、実際にトークンを生成する方法が必要です。これは、正しい詳細を備えたJWTを構築し、上記と同じキーで署名するJSONWebtokenモジュールを使用して行われます。 JWTSを生成するときに、まったく同じオーディエンス、発行者、およびキー構成設定を使用することに注意してください。また、JWTの有効期間が1時間であることを指定します。これは、アプリにとって合理的であると思われる期間であり、構成から簡単に変更できるように抽出することもできます。 この場合、JWT IDは指定されていませんが、これを使用してトークン用の完全に一意のIDを生成することができます。たとえば、UUIDを使用します。これにより、トークンを取り消し、DataStoreに取り消されたIDのコレクションを保存し、パスポートポリシーでJWTを処理するときにJWT IDがリストにないかどうかを確認する方法が提供されます。 トークンを生成する機能があるため、ユーザーに実際にログインする方法が必要です。これは、ソーシャルログインプロバイダーが登場する場所です。ユーザーがソーシャルログインプロバイダーにリダイレクトし、成功するとJWTトークンを生成し、将来のリクエストのためにブラウザのJavaScriptエンジンに提供できる機能を追加します。私たちはすでにこのコンポーネントのほぼすべてを持っているので、それらをまとめる必要があります。 パスポートのソーシャルログインプロバイダーは、2つの部分に分割されます。まず、適切なプラグインを使用してソーシャルログインプロバイダーのパスポートを実際に構成する必要があります。第二に、ユーザーが指示されるエクスプレスルートは、認証を開始するために必要であり、認証が成功した後にユーザーがリダイレクトされるルートが必要です。 これらのURLを新しいサブブロウザーウィンドウで開きます。これは、完了したら閉じて、開いたウィンドウ内のJavaScriptメソッドを呼び出すことができます。これは、プロセスがユーザーに対して比較的透明であることを意味します。せいぜい新しいウィンドウが開いているのを見て、資格情報を提供するように依頼しますが、彼らが現在ログインしているという事実以外に何も見ることができません。
これにより、ウィンドウ上にグローバル関数オブジェクト(AuthingicateCallbackという名前)が登録されます。これにより、アクセストークンが保存され、ルートを開き、認証を開始します。
ここでは、オープンプログラム(つまり、メインアプリケーションウィンドウ)に上記のAuthingAteCallbackメソッドを呼び出す単純なJavaScriptコードのみがあり、その後、自分自身を閉じます。
Google認証パスポートの構成は次のようになります:
次は、このログインを管理するためにルーティングハンドラーをセットアップすることです。これらは次のようになります:
Facebook認証を実装 このモジュールは、Googleモジュールとほぼ同じ方法で動作するため、同じ設定と同じ設定が必要です。唯一の本当の違いは、それが異なるモジュールとそれにアクセスするURL構造であることです。 Facebook認証を構成するには、クライアントID、クライアントキー、およびリダイレクトURLも必要です。クライアントIDおよびクライアントキー(FacebookのアプリIDとアプリキーと呼ばれる)は、Facebook開発者コンソールでFacebookアプリを作成することで取得できます。 Facebookログイン製品がアプリに追加されていることを確認して、動作させる必要があります。 Facebook認証パスポート構成は次のとおりです
これは、「Google」の代わりに「Facebook」が使用されていることを除いて、Googleの構成とほぼ同じです。 URLルーティングも似ています
ソーシャルログインプロバイダーを使用して、ユーザーログインと登録をアプリにすばやく簡単に追加します。実際、これにより、ブラウザのリダイレクトを使用してユーザーをソーシャルログインプロバイダーに送信し、アプリに送り返すため、従来のアプリに比較的簡単に統合されていても、単一ページアプリに統合できます。 この記事は、これらのソーシャルログインプロバイダーを、使いやすく、使用したい将来のプロバイダーに簡単に拡張できることを約束する単一ページアプリケーションに統合する方法を示しています。 Passportには、さまざまなプロバイダーと連携できる多くのモジュールがあり、適切なモジュールを見つけて、GoogleやFacebookで上記のように構成するだけです。 この記事は、ジェームズ・コルチェによって査読されました。 SitePointコンテンツを最高の状態にしてくれたすべてのSitePointピアレビュアーに感謝します に関するFAQ
ソーシャルログインを私のWebアプリケーションに統合することの利点は何ですか? ソーシャルログインを使用するときにユーザーデータのセキュリティを確保する方法は? Webアプリケーションに複数のソーシャルログインを統合できますか? 複数のソーシャルメディアアカウントを使用してユーザーに対処する方法は? ユーザーがソーシャルメディアアカウントを無効にした場合はどうなりますか? CSSを使用して、ソーシャルログインボタンの外観をカスタマイズできます。ただし、ソーシャルメディアプラットフォームが提供するブランドガイドラインに従ってください。たとえば、Facebookの「F」ロゴは常に元の形式で使用する必要があり、いかなる方法でも変更しないでください。 はい、ソーシャルログインはWebおよびモバイルアプリケーションに使用できます。ソーシャルログインをモバイルアプリに統合するプロセスは、Webアプリのプロセスと似ていますが、ソーシャルメディアプラットフォームが提供する特定のSDKを使用する必要がある場合があります。 ソーシャルメディアプラットフォームでテストアカウントを作成し、これらのアカウントを使用してアプリにログインすることにより、ソーシャルログイン機能をテストできます。これにより、アプリが開始される前に問題やエラーを特定するのに役立ちます。 ユーザーがサインアップするソーシャルメディアアカウントを忘れた場合、メールアドレスまたは電話番号を入力してアカウントにリンクされたソーシャルメディアアカウントのリストを受信できるリカバリオプションを提供できます。 いくつかのツールとプラグインを使用してコーディングなしでソーシャルログインを統合できますが、コーディングの知識を知ることは有益です。これにより、統合プロセスの柔軟性と制御が可能になり、発生する可能性のある問題を解決するのにも役立ちます。 以上がスパのソーシャルログイン:GoogleとFacebookを介してユーザーを認証するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。# Windows
> set GOOGLE_CLIENTID=myGoogleClientId
> set GOOGLE_CLIENTSECRET=myGoogleClientSecret
> set FACEBOOK_CLIENTID=myFacebookClientId
> set FACEBOOK_CLIENTSECRET=myFacebookClientSecret
> node src/index.js
// src/index.js
const passport = require('passport');
.....
app.use(passport.initialize());
サポートトークン生成
# Linux / OS X
$ export GOOGLE_CLIENTID=myGoogleClientId
$ export GOOGLE_CLIENTSECRET=myGoogleClientSecret
$ export FACEBOOK_CLIENTID=myFacebookClientId
$ export FACEBOOK_CLIENTSECRET=myFacebookClientSecret
$ node src/index.js
ソーシャルログインプロバイダー
# Windows
> set GOOGLE_CLIENTID=myGoogleClientId
> set GOOGLE_CLIENTSECRET=myGoogleClientSecret
> set FACEBOOK_CLIENTID=myFacebookClientId
> set FACEBOOK_CLIENTSECRET=myFacebookClientSecret
> node src/index.js
# Linux / OS X
$ export GOOGLE_CLIENTID=myGoogleClientId
$ export GOOGLE_CLIENTSECRET=myGoogleClientSecret
$ export FACEBOOK_CLIENTID=myFacebookClientId
$ export FACEBOOK_CLIENTSECRET=myFacebookClientSecret
$ node src/index.js
Passport-Google-Oauthモジュールを使用すると、Googleに対して認証されます。これには、3つの情報が必要です
# Windows
> set GOOGLE_CLIENTID=myGoogleClientId
> set GOOGLE_CLIENTSECRET=myGoogleClientSecret
> set FACEBOOK_CLIENTID=myFacebookClientId
> set FACEBOOK_CLIENTSECRET=myFacebookClientSecret
> node src/index.js
// src/index.js
const passport = require('passport');
.....
app.use(passport.initialize());
最初のソーシャルログインプロバイダーができたので、2番目のソーシャルログインプロバイダーを拡張して追加しましょう。今回は、Passport-Facebookモジュールを使用してFacebookになります。
// src/authentication/jwt.js
const passport = require('passport');
const passportJwt = require('passport-jwt');
const config = require('../config');
const users = require('../users');
const jwtOptions = {
// 从 "Authorization" 标头获取 JWT。
// 默认情况下,这会查找 "JWT " 前缀
jwtFromRequest: passportJwt.ExtractJwt.fromAuthHeader(),
// 用于签署 JWT 的密钥
secretOrKey: config.get('authentication.token.secret'),
// JWT 中存储的发行者
issuer: config.get('authentication.token.issuer'),
// JWT 中存储的受众
audience: config.get('authentication.token.audience')
};
passport.use(new passportJwt.Strategy(jwtOptions, (payload, done) => {
const user = users.getUserById(parseInt(payload.sub));
if (user) {
return done(null, user, payload);
}
return done();
}));
// src/index.js
app.get('/api/secure',
// 此请求必须使用 JWT 进行身份验证,否则我们将失败
passport.authenticate(['jwt'], { session: false }),
(req, res) => {
res.send('Secure response from ' + JSON.stringify(req.user));
}
);
ソーシャルログインをWebアプリケーションに統合すると、いくつかの利点があります。まず、ユーザーは、別のユーザー名とパスワードを覚えていない既存のソーシャルメディアアカウントに登録できるため、ユーザーの登録プロセスを簡素化します。第二に、単純化された登録プロセスにより、より多くのユーザーがサインアップできるようになるため、コンバージョン率を改善できます。最後に、ソーシャルメディアプロファイルでユーザーデータにアクセスできるようになり、ウェブサイトでのエクスペリエンスをパーソナライズするために使用できます。
ソーシャルログインを統合するときにユーザーデータのセキュリティを確保することが重要です。これは、OAUTH 2.0などの安全なプロトコルを使用して認証することで行うことができます。これにより、ユーザーパスワードがアプリと共有されないようにします。さらに、アプリケーションで必要なユーザーデータの最小額のみを要求し、このデータが安全に保存されることを確認する必要があります。
はい、Webアプリケーションに複数のソーシャルログインを統合できます。これにより、ユーザーがより多くの選択肢を提供し、登録の可能性を高めることができます。ただし、ユーザーが使用することを選択したソーシャルログインに関係なく、ユーザーエクスペリエンスがシームレスであることを確認することが重要です。
複数のソーシャルメディアアカウントを持つユーザーの処理は困難です。解決策の1つは、ユーザーがアプリの複数のソーシャルメディアアカウントを単一のアカウントにリンクできるようにすることです。このようにして、リンクされたアカウントでログインするオプションがあります。
ユーザーがソーシャルメディアアカウントを無効にした場合、アカウントを使用してアプリにログインすることができなくなります。これを処理するために、ユーザーにメールアドレスまたは電話番号をアカウントに追加するオプションを提供できます。ソーシャルメディアアカウントを無効にすると、この情報をログインできます。
ソーシャルログインボタンの外観をカスタマイズする方法は?
モバイルアプリにソーシャルログインを使用できますか?
ソーシャルログイン機能をテストする方法は?
ユーザーが使用するソーシャルメディアアカウントに登録するのを忘れた場合はどうすればよいですか?
コーディングなしでソーシャルログインを統合できますか?

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Zustand非同期操作のデータの更新問題。 Zustand State Management Libraryを使用する場合、非同期操作を不当にするデータ更新の問題に遭遇することがよくあります。 �...
