フロントエンドは、どのようなSEOに注意を払う必要があります
合理的なタイトル、説明、キーワード:右3・バイ・重量の前の検索は、タイトルの値が重要なポイントを強調することが減少し、重要なキーワードは、別のページタイトルが異なるようにせいぜい2回表示されず、前に頼る;説明プット非常にページの内容を要約し、右の長さではなく、あまりにも多くのキーワードを詰め、異なるページ記述が異なっている。キーワードはに重要なキーワードが含ま
W3Cの仕様に準拠するセマンティックHTMLコード:セマンティック・コードは、ウェブ検索エンジンを理解することは容易である
重要なコンテンツ最前線でのHTMLコード:検索エンジンHTML順をクロールするには、上から下にあり、長さをクロールするためにいくつかの検索エンジン上の制約がある、重要なコンテンツがクロールされることを保証するために
、出力JSの内容を使用しないことが重要:爬虫類は、JSを実行されません。コンテンツ
少ないIFRAME:検索エンジンはIFRAMEのコンテンツクロールしません
Altキーを追加する必要があります非装飾画像を
サイトの速度を向上させる:サイトの速度は、検索エンジンのランキングの重要な指標であります
バブリングされていないイベントイベント機関を実装する方法のバブリングなしイベント委譲し、
イベントデリゲートは、子要素がトリガイベントをバインドすると親要素の代わりに、イベントバブリング・メカニズムを使用することです
長所:あなたは子ノードにイベントをログオフする必要はありません、メモリを節約
ページの最適化
CNDは、クエリの数を減らす
要求のhttpを減らすために
Ajaxのローカルキャッシュの
圧縮CSSをJS、
画像を圧縮します
Gitは、少なくとも5、頻繁に使用するコマンド、および各コマンドがないと言うこと。
Gitのinitは、ローカルリポジトリを作成します
。Gitは追加のステージング領域にローカルファイルを追加します。
「」ステージングエリアのバージョンゾーンに提出した内容-mコミットGitリポジトリ
のGitをログの表示ログ
Gitのブランチdevのは、ブランチ作成
の枝を見てGitのブランチを
Ajaxのプロセスが概説します。
- XMLHttpRequestオブジェクトを作成し、オブジェクトは、非同期呼び出しを作成することです
- 新しいHTTPリクエストを作成し、HTTPリクエスト、URLと認証情報の方法を指定します
- HTTPリクエストの状態変化の応答関数を設定します
- HTTPリクエストを送信します
- データは非同期呼び出しから返されます
- JavaScriptとDOMの実装パーシャルリフレッシュを使用します
クロスドメイン
セキュリティ上の理由から、ブラウザなので、同一生成元ポリシーを持っています。これは、プロトコル、ドメイン名または別のポートがクロスドメインの場合は、Ajaxリクエストが失敗した、あります
JSONP
JSONP原理はそれを使用することで、非常に簡単です
<script src="http://domain/api?param1=a¶m2=b&callback=jsonp"></script>
<script>
function jsonp(data) {
console.log(data)
}
</script>
JSONPの使い方は簡単と相性良いですが、彼らがいる場合にのみ取得要求を
HEARTS
CORSは、ブラウザとバックエンドの両方をサポートする必要があります
主なブラウザが自動的にCORSを通信する、CORSは、通信を実現するバックエンドです。クロスドメインを達成するために、CORSのバックエンドの実装限り。
サーバーのセットアップアクセス制御-許可-起源は、CORSを開くことができます。この属性は、ドメインがリソースにアクセスできるかを示しますが、ワイルドカードを設定した場合、すべてのサイトがリソースにアクセスできることを示し
document.domainをします
本実施形態の場合は、例えば同じ2つのドメインのために使用することができるa.test.comとb.test.com本実施形態に適し。
ただ、ページを与える= document.domainをを追加「test.com」同じクロスドメイン持つことができる二次ドメイン名を表し
のpostMessageを
これは多くの場合、ページに埋め込まれたサードパーティのページデータを取得するために使用されます。ページメッセージを送信し、受信した別のページメッセージのソースを決定します
// 发送消息端
window.parent.postMessage('message', 'http://blog.poetries.com');
// 接收消息端
var mc = new MessageChannel();
mc.addEventListener('message', (event) => {
var origin = event.origin || event.originalEvent.origin;
if (origin === 'http://blog.poetries.com') {
console.log('验证通过')
}
});
プロトタイプ
プロトタイプチェーンによって複数のオブジェクトであるプロトがアップ接続されています。objがのvalueOf関数プロトタイプチェーンによって見出さためobjが、のvalueOfの機能にアクセスすることができる理由
オブジェクトは、すべてのオブジェクトの父である、すべてのオブジェクトは、__proto__で見つけることができます
機能は、すべての関数の父である、すべての機能がを通じて利用可能なプロトそれを見つけます
オブジェクトのプロトタイプ機能
__proto__プロパティプロトタイプオブジェクトポイント、プロトプロトタイプとプロトタイプチェーンを形成するために一緒に接続されたオブジェクト
VAR、聞かせてのconstとの違い
関数が可変リフトよりも優先されます強化、全体の機能を強化する機能がスコープの最上部に移動し、唯一のスコープ文を強化する変数は、先頭に移動し
、それが宣言される前に、私たちが使用できるアップグレード存在VAR。なぜなら、一時的なデッドゾーンのconstのが宣言される前に使用することはできない、聞かせて
窓に取り付けられた下の変数につながるグローバルスコープ内の変数を宣言するVARを、他の2つはありません
constの役割をしましょうと基本的に同じですが、後者は宣言します変数は再び割り当てることができません
クラスの継承
ES6では、我々は、実装するために達成するために、クラスの継承を使用し、シンプルであることができます
class Parent {
constructor(value) {
this.val = value
}
getValue() {
console.log(this.val)
}
}
class Child extends Parent {
constructor(value) {
super(value)
this.val = value
}
}
let child = new Child(1)
child.getValue() // 1
child instanceof Parent // true
コアクラスの継承を使用することで延びて親クラスから継承されたかを示す、およびサブクラスのコンストラクタで呼び出さなければならないスーパーコードのように見ることができるので、Parent.call(この値)。
window.onload和$(ドキュメント).ready
window.onload()メソッドは、実行するためにロードされた画像を含むページ内の要素のすべての後まで待つことです。
$(ドキュメント).ready()DOM構造の描画が完了した後、あなたがロードされたまで待つ必要はありませんが実行されます