ctressaとlinecitats


車輪ができたら忘れないように文章を書きますよ.

ctressa


ctressaはこの間テストに夢中になっていた.
だからいくつかの断言ライブラリ、断言フレームワークのコードを読みました.
本質的にはmocha,avaなどの断言フレームワークは,最初の実装はほとんどタスクアクチュエータである.
各断言はタスクであり、テストを実行することはこのタスクキューを実行することです.
mocha ava diff
mochaはグローバルに方法を導入し、オリジナルでは同時実行をサポートせず、シリアルでテストを実行し、nodeとブラウザで簡単に使用します.
AVaはインポートを利用して、できるだけグローバル変数に影響を与えず、同時非同期をサポートし、テストファイルを個別のプロセスとして使用します.テストファイルを有効に分離します.
断言の枠組みは今でも多い.具体的な選択はやはり個人のニーズを見る必要があります.
一方、expect/chai/should/assertなど、断言ライブラリの選択も異なります.
expectはプロトタイプチェーンに侵入せず、ブラウザとの互換性が向上
should = !以上
ブレークスルー・ライブラリの以前の実装を読みました.例えばexpect(test)などの断言.toBeA('number')
左の値に分けてテストすることができ、右の値は期待値です.中間の述語は両者の関係を表す.
should.jsはObjectにいます.prototypeバインドshould使用法
var test = {name: 'zwkang'}

test.should.eql(test)

中間の述語比較は断言ライブラリの核心でしょう.
そうすると、JSは中国語変数をサポートしています.中国語で断言ライブラリを作成できることを意味しているのではないでしょうか.
中華語は博大で奥深い.中間の接続語は相対的に多すぎる.
一言でいくつかの表現ができるのは普通です.だから、折衷的な表現を選んで、合理的に断言を表現します.
ctressaはこのように表現できます.
 ({}). . ;
 (true). ;

note:

  • mochaはshowDiffをキャプチャし、期待値とテスト対象値を徹底的に比較するかどうかを決定します.line 41
  • ctressaシミュレーションnode.0.x Error
  • を実現
  • 既存の英語構造では、フィールドに中国語のaliasを割り当てます.

  • linecitats


    nowに似ていますshのserverツール.
    コマンドラインでリソースフォルダのディレクトリを作成できます.

    プロセスは複雑ではありません

  • 初期化構成、例えばフォルダ位置等
  • .
  • サーバ
  • を起動
  • 圧縮ファイルミドルウェア
  • ファイルのキャッシュ
  • 実際には、1つのサーバがクライアントにリソースを提供し、cdn、キャッシュサーバなどの多くのリソースサーバが存在する可能性があります.

    1.構成の初期化


    初期化構成は簡単ですが、最も簡単なのはフォルダに直接転送することです.
    初期化

    2.サーバの起動


    ここではhttpモジュールを直接使用することができます.
    しかしkoaは私たちのresponse bodyに対して、headerは操作するのがもっと気持ちがいいです.
    ここではkoaに基づいてサーバの起動を行うことができます.もちろんexpressとかは大丈夫です.

    3.圧縮ファイルミドルウェア


    ファイルの圧縮
    deflate/gzipは2つの比較的一般的な圧縮スキームである.
    一般的な圧縮ネゴシエーション:
    ブラウザは、ヘッダのAccept-Encodingを要求することによって、ブラウザがサポートする圧縮スキームを通知します.
    サーバはブラウザの要求を受信し、1つ以上の圧縮スキームを選択します.圧縮リソースはブラウザに戻り、ヘッダContent-Encodingは圧縮スキームを示します.
    varyフィールドを使用して、中間キャッシュサーバが異なるAccept-Encodingリソースをキャッシュできるようにします.そうでなければ、リクエストのたびに一貫したキャッシュであり、ブラウザが解凍をサポートできない可能性があります.

    4.リソースのキャッシュ


    一般的なキャッシュ・スキームには、強力なキャッシュ/交渉キャッシュが含まれています.
    違いは、サービス側がリソースを要求するかどうかです.
    強キャッシュはExpiresとCache-Controlに分けられ、優先順位はCache-ControlがExpiresより大きい.出現バージョンは1つがHTTP 1つがHTTP 1.1
    http 1とhttp 1.1つの大きな違いは、接続が多重化可能かどうかです.
    キャッシュはまずExpiresとCache-Controlを表示し、存在する場合は強いキャッシュが実現するかどうかを判断します.無効になった場合、サーバからリソースを要求すると、キャッシュを交渉する役割は、リソースの生存性を判断することであり、lastModifiedファイルの最終変更時間に従い、Etagはファイルの特定のコンテンツ、例えばファイルコンテンツのsha 1値に従う.
    lastModified === ctx.get("If-Modified-Since")
          fileSum === ctx.get("is-none-match")

    EtagとlastModifiedが同時に存在する場合、両方が同時に304ステータスコードを返し、ブラウザリソースが変更されていないことを通知する必要があります.
    これにより、強力なキャッシュと交渉キャッシュを簡単に使用して、キャッシュの効果を達成することができます.
    また、これは直接koaミドルウェアで書かれているので、後でクラスライブラリとして多重化を使用する方法を提供してもいいです.
    ファイルの圧縮
    まとめ:
  • 造輪は知識を得ることができ、生成されたコードは記録にすることができる.
  • 良いクラスライブラリを作りたいです.