「lab.js」の基本的な考え方は,「実験」は「同じような(役割の)コンポーネント(パーツ)」に分解できるということです。これらのコンポーネントから,複雑な実験も作ることができます。
例えば,典型的な実験では,実験参加者に順番に呈示する,複数の「screen」(画面)に分解することが出来ます。これらの画面で行われることはとても似ています。例えば,画面が呈示される前に,呈示するコンテンツを読み込みます。また,参加者の反応まで待つか,画面を一定時間後に切り替えます(両方を同時に指定することもあります)。
「screen」は,次のレベルで「sequence」に統合されます。完成した実験では各試行で画面が連続して呈示されますが,それぞれの画面には異なった役割があり,様々な実験でその役割は共通しています。例えば「注視画面」,「刺激画面」,「試行間のブランク画面」などです。
「**screen」**と「sequence」 は,「lab.js」のコアとなるコンポーネントです。これらは実験を作る中では異なったパーツとして利用されますが,コンポーネントの挙動には共通性を持たせてあります。どちらのコンポーネントも,呼び出された後に準備段階と実行段階があり,内的な構造も共通しています。このように,lab.jsでは,基本的なコンポーネントはコアとなるプロトタイプと同じ内部構造をしており,一部のみ異なるように設計されています。