Javascript

【Javascript】よさげなLightBoxライブラリ。

をみつけたのでメモ。

http://lokeshdhakar.com/projects/lightbox2/

【AngularJS, Jasmine】テストの書き方まとめ。

簡単なプロジェクトで練習してみたので自分用にまとめ直し。

  • まずはテスト用の簡単なプロジェクトを準備。ディレクトリ構成は下記の通り。

jasmineフォルダ以下はjasmine Standalone Distributionのファイル群。
testディレクトリ以下にテスト用のファイルを配置している。runner.htmlにアクセスすることでテストが実行される。
今回作成したAngularアプリケーションは、app.jsindex.htmlindexController.jsindexService.jsの4ファイルで構成。
それぞれのファイル内容は下記の通り。

app.js

index.html

indexController.js

indexService.js

index.htmlにアクセスすると画面にhello world.が表示される。見た目はそれでおしまいだが、テスト用に用意したサービスを実行しまくっているので、コンソールには色々と吐かれる。 これらをテストするためにトリガーファイルとなるrunner.htmlを用意する。

runner.html

index.htmlとの違いとして、angular.min.js本体を読み込んだ直後にangular-mocks.jsを読み込んでいる。8行目から14行目はjasmine本体のセットアップ処理なのでこれは必ず必要となる。

ここまでの設定が完了したら、実際にテストを記述していく。 今回はテスト本体をtest\controllers\indexControllerSpec.jsに配置した。

describe()メソッドでテストのセットを作成するようなイメージ。この中にある複数のit()メソッドがそれぞれのテスト内容となる。雰囲気はソースコード内のコメントアウトを参照。

indexControllerSpec.js

で実際runner.htmlにアクセスすると下記画像の通りテストが実行されて、結果を知らせてくれる。

意外と簡単にテストを作成することが出来た。リソースが絡んだテストなんかはまた次回。

【jQuery】手っ取り早くScrollToTopを実装する。

ぺたり。

秒数は好みで。

【Javascript】でUUIDを発行する。

便利な関数をStackさんで見つけたのでペタリ。

使い方はこう。

http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript

【Javascript】文字列の指定位置に特定の文字列を挿入する。

Stringオブジェクトを拡張すると便利。

どこでもいいので(当然使いたいタイミングよりは前)下記拡張を記述する。

String.prototype.splice = function(idx, rem, s) {
    return (this.slice(0, idx) + s + this.slice(idx + Math.abs(rem)));
};

下記のようにして用いる。

'foo baz'.splice(4, 0, 'bar ');
// 'foo bar baz'

めっちゃ便利。

 

【Javascript】String.indexOf()メソッドで大文字、小文字を区別せずに処理させる。

indexOf()を実行する前にString.toLowerCase()を挟んでやれば解決。

if ('LOL'.toLowerCase().indexOf('lol') === -1) {
    // do something
}

 

【Javascript】スネークケースをキャメルケースに変換する。

メモ。

var str = 'hoge_fuga_piyo';
var camel = str.replace(/_./g, function(matched) {
    return matched.charAt(1).toUpperCase();
});

console.log(camel);

 

【Javascript】関数の引数名を習得する。

AngularJSとかで変数名から注入するサービスを習得してくれる所でやっている処理。

Qiitaで素晴らしいソースを発見。

function getParams(func) {
    var source = func.toString()
        .replace(/\/\/.*$|\/\*[\s\S]*?\*\/|\s/gm, ''); // strip comments
    var params = source.match(/\((.*?)\)/)[1].split(',');
    if (params.length === 1 && params[0] === '')
        return [];
    return params;
}

関数オブジェクトのtoString()がソースコードを返してくれるのでそれを利用しているとのこと。

使い方としては関数をそのまま渡せばOK。