最近色々なことがあり、とても疲れています。臆病な人にとって、未知の状況に怯えることは本当に迷惑なものです。
分为4个步骤:(1),当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询。这能使浏览器获得请求对应的IP地址。(2), 浏览器与远程`Web`服务器通过`TCP`三次握手协商来建立一个`TCP/IP`连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。(3),一旦`TCP/IP`连接建立,浏览器会通过该连接向远程服务器发送`HTTP`的`GET`请求。远程服务器找到资源并使用HTTP响应返回该资源,值为200的HTTP响应状态表示一个正确的响应。(4),此时,`Web`服务器提供资源服务,客户端开始下载资源。
リクエストが返された後、関心のあるフロントエンドモジュールに入ります
簡単に言うと、ブラウザは HTML を解析して DOM ツリーを生成します次に、CSS に基づいて CSS ルールを生成します。JavaScript は DOM API
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息200 OK 正常返回信息201 Created 请求成功并且服务器创建了新的资源202 Accepted 服务器已接受请求,但尚未处理301 Moved Permanently 请求的网页已永久移动到新位置。302 Found 临时性重定向。303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。304 Not Modified 自从上次请求后,请求的网页未修改过。400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。401 Unauthorized 请求未授权。403 Forbidden 禁止访问。404 Not Found 找不到如何与 URI 相匹配的资源。500 Internal Server Error 最常见的服务器端错误。503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
に JSON を埋め込むことです。利点は、互換性が高く、シンプルで使いやすく、ブラウザー間の双方向通信をサポートしていることです。そしてサーバー。欠点は、GET リクエストのみがサポートされていることです。原理は、script タグを動的に挿入し、script タグを通じて js ファイルを導入することです。js ファイルが正常に読み込まれた後、url パラメーターで指定した関数が実行され、必要な json データがパラメーターとして渡されます。
(1)。
JSON は XML に比べてデータサイズが小さく、通信速度が速いです。
(2)。
JSON と JavaScript 間のやり取りがより便利になり、解析と処理が容易になり、データのやり取りが向上します。
(3)。
JSON は XML よりもデータの記述が少ないです。
(4)。
JSON は XML よりもはるかに高速です。
モジュールパッケージ化 (HTML、JavaScript、CSS およびさまざまな静的ファイルイメージ、フォントなど) ツール、amd、cmd をサポート
requireJs とbrowserify の機能を使用して、commonJS の形式でスクリプトを作成します
コードを異なるチャンクに分割し、オンデマンド読み込みを実現し、初期化時間を短縮できます
webpack は非同期 IO を使用します複数レベルのキャッシュを備えています。これにより、Webpack のインクリメンタル コンパイルが高速化されます
(1) XMLHttpRequest オブジェクトを作成します。これは、非同期呼び出しオブジェクトを作成します。
(2) 新しい HTTP リクエストを作成し、HTTP リクエストのメソッド、URL、検証情報を指定します。
(3) HTTP リクエストのステータスの変化に応答する関数を設定します。
(4) HTTP リクエストを送信します。(5) 非同期呼び出しによって返されたデータを取得します。
(6) JavaScript と DOM を使用して部分更新を実装します。
http https
フロントエンドのモジュール性の理解
AMD は、RequireJS のプロモーション プロセス中のモジュール定義の標準化された出力です。
CMD は、SeaJS のプロモーションプロセス中のモジュール定義の標準化された出力です。
AMD は早期実行、CMD は遅延実行です。
AMD が推奨するスタイルはオブジェクトをモジュール オブジェクトとして返し、CommonJS スタイルは module.exports または exports のプロパティに値を割り当てることでモジュール オブジェクトを公開します。
フロントエンドエンジニアリングの価値は何だと思いますか?
ユーザーの使用を簡素化するためのテクニカルサポート (対話型部分) を提供します
と互換性があります複数のブラウザー
ユーザーのブラウジング速度 (ブラウザーのパフォーマンス) を向上させるためのサポートを提供します
Webkit またはその他のレンダリング エンジンに基づくクロスプラットフォームまたはその他のアプリケーションのサポートを提供します
表示データ用サポート (データ インターフェイス)
パフォーマンスの最適化の問題について話します
コード レベル: CSS 式の使用を避け、高度なセレクターとワイルドカード セレクターの使用を避けます。
キャッシュ使用率: Ajax のキャッシュ、CDN の使用、キャッシュ用の外部 js および css ファイルの使用、Expires ヘッダーの追加、サーバー側での Etag の構成、DNS ルックアップの削減など。
リクエストの数: CSS 画像ウィザードを使用して、スタイルとスクリプトを結合します。最初の最初の画面以外の画像リソースはオンデマンドでロードされ、静的リソースは遅延してロードされます。
帯域幅の要求: ファイルの圧縮、GZIP の有効化、
with の使用は避けてください (with は独自のスコープを作成し、スコープチェーンの長さが長くなります)
複数の変数宣言をマージします
画像や iFrame などには空の Src を使用しないでください。空の Src は現在のページを再読み込みし、速度と効率に影響します
HTML タグに Style 属性を記述しないようにしてください
モバイル パフォーマンスの最適化
CSS3 アニメーションを使用し、ハードウェア アクセラレーションを有効にしてみてください。
クリック イベントの代わりにタッチ イベントを適切に使用します。
CSS3 グラデーション シャドウ効果の使用は避けてください。
transform:translateZ(0) を使用してハードウェア アクセラレーションを有効にすることができます。
Float を乱用しないでください。 Float はレンダリング時に多くの計算を必要とするため、
の使用を減らし、Web フォントの悪用を避けるようにしてください。 Web フォントはダウンロード、解析、および現在のページで再描画する必要があるため、使用は最小限に抑えてください。
setTimeout の代わりに requestAnimationFrame アニメーションを合理的に使用する
CSS のプロパティ (CSS3 トランジション、CSS3 3D 変換、不透明度、Canvas、WebGL、ビデオ) ) – GPU レンダリングをトリガーします。賢く使用してください。過度に使用すると、携帯電話の過剰な電力消費が増加します
PC 版はモバイル版にも適用されます
スタックとキューの違いは何ですか?
スタックの挿入操作と削除操作キューの操作は一方の端で実行され、キューの操作は両端で実行されます。
キューは先入れ先出しであり、スタックは先入れ後出しです。
スタックはテーブルの最後尾でのみ挿入と削除を許可しますが、キューはテーブルの最後尾でのみ挿入と削除を許可します
スタックとヒープの違いは何ですか?
スタック領域 (スタック) - コンパイラーによって自動的に割り当ておよび解放され、関数のパラメーター値、ローカル変数値などが保管されます。
ヒープ - 通常、プログラマによって割り当てられ、解放されます。プログラマが解放しない場合、プログラムの終了時に OS によってリサイクルされることがあります。
ヒープ (データ構造): ヒープは次のようにツリーとして表示できます。
スタック (データ構造) : 先入れ後出しのデータ構造。
新しいテンプレート文字列 (JavaScript 用の単純な文字列補間関数を提供)、アロー関数 (演算子) 左側は入力パラメータ、右側は実行された操作と戻り値です。Inputs=>outputs)、for-of (配列内の値などのデータをスキャンするために使用されます)。引数オブジェクトには、不定のパラメーターとデフォルトを指定できます。パラメータを完全に置き換えます。 ES6 は Promise オブジェクトを仕様に組み込み、ネイティブ Promise オブジェクトを提供します。変数を宣言するための let および const コマンドを追加しました。ブロックレベルのスコープが追加されました。 let コマンドは実際にブロックレベルのスコープを追加します。 ES6 では、var コマンドと function コマンドで宣言されたグローバル変数はグローバル オブジェクトの属性であると規定されていますが、let コマンド、const コマンド、class コマンドで宣言されたグローバル変数はグローバル オブジェクトの属性ではありません。 。 moduleモジュールの概念の紹介もあります
本を読んでみよう
本を読んでみよう
ファクトリー パターン: 主な利点は、新しいキーワードの代わりにエンジニアリング手法を使用することで、オブジェクト間の結合を排除できることです。すべてのインスタンス化コードを 1 か所に集中させることで、コードの重複を防ぎます。
ファクトリ パターンはインスタンス化の繰り返しの問題を解決しますが、どのオブジェクト インスタンスであるかを把握することが不可能であるため、別の問題、つまり識別の問題が発生します。
コンストラクター パターンは、インスタンス化とオブジェクトの識別の繰り返しの問題を解決するコンストラクター メソッドを使用します。このパターンとファクトリー パターンの違いは次のとおりです。 >
2. このオブジェクトにプロパティとメソッドを直接割り当てます。
3.返品明細はありません。
クロージャについての理解を教えてください
クロージャには次の 3 つの特徴があります。
1. 関数のネストされた関数
2.関数
内で参照される
3.参数和变量不会被垃圾回收机制回收
Cookie数量和长度的限制
安全性问题
有些状态不可能保存在客户端
在较高版本的浏览器中,js提供了sessionStorage和globalStorage。在HTML5中提供了localStorage来取代globalStorage。
html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie。
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。5、所以个人建议:
将登陆信息等重要信息存放为SESSION其他信息如果需要保留,可以放在COOKIE中
!important > id > class > tagimportant 比 内联优先级高,但内联比 id 要高
1,去掉或者丢失样式的时候能够让页面呈现出清晰的结构
2,有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
3,方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
4,便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。
png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理.
浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。
IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。
浮动ie产生的双倍距离(IE6双边距问题:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。)
这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)
渐进识别的方式,从总体中逐渐排除局部。
首先,巧妙的使用“9”这一标记,将IE游览器从所有情况中分离出来。
接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。
css
.bb{ background-color:#f1ee18;/*所有识别*/ .background-color:#00deff/9; /*IE6、7、8识别*/ +background-color:#a200ff;/*IE6、7识别*/ _background-color:#1e0bd1;/*IE6识别*/ }
怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发
怪异模式。为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯。现在
可以使用 html5推荐的写法:上下margin重合问题
ie和ff都存在,相邻的两个div的margin-left和margin-right不会重合,但是margin-top和margin-bottom却会发生重合。
解决方法,养成良好的代码编写习惯,同时采用margin-top或者同时采用margin-bottom。
1)创建新节点
createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点
2)添加、移除、替换、插入
appendChild() removeChild() replaceChild() insertBefore() //并没有insertAfter()
3)查找
getElementsByTagName() //通过标签名称 getElementsByName() //通过元素的Name属性的值(IE容错能力较强, 会得到一个数组,其中包括id等于name值的) getElementById() //通过元素Id,唯一性
调用localstorge、cookies等本地存储方式
null是一个表示”无”的对象,转为数值时为0;undefined是一个表示”无”的原始值,转为数值时为NaN。
当声明的变量还未被初始化时,变量的默认值为undefined。
null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
undefined表示”缺少值”,就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
null表示”没有对象”,即该处不应该有值。典型用法是:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
2、属性和方法被加入到 this 引用的对象中。
3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。
var obj = {};obj.__proto__ = Base.prototype;Base.call(obj);
defer和async、动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack)、按需异步载入js