タグ

ブックマーク / efcl.info (11)

  • class extends構文を使わずにArrayを継承する

    ES2015からclass extendsを使うことでクラスを継承することができます。 今まではビルトインのArrayやErrorの継承は内部プロパティを引き継ぐことができませんでした。 Chapter 28. Subclassing Built-ins How ECMAScript 5 still does not allow to subclass array — Perfection Kills ES2015からはclass extendsを使うと内部プロパティも含め継承できます。 lengthプロパティの動作も継承できています。 class SubArray extends Array { last(){ return this[this.length - 1]; } } var array = new SubArray(1,2,3); array.push("x"); conso

    class extends構文を使わずにArrayを継承する
    KinjouJ
    KinjouJ 2017/12/02
  • React/dekuコンポーネントとthisのパターン

    componentWillMount() { store.on("change", this.onChange.bind(this)); } componentWillUnmount() { store.off("change", this.onChange.bind(this)); } だとイベントが解除できないという問題が起こります。 そのため、事前にbind済みのハンドラを持っておく必要が出てきたりします。 サンプル この記事では上記のような、ボタンでカウントアップするだけのものを React - thisを普通にbindする手法 React - azu/idempotent-bindを使ってbindする手法 deku を使って書く の3つ書いてみます。 ソースコードはこちら azu/component-event-binding React - thisを普通にbindする手法 こ

    React/dekuコンポーネントとthisのパターン
    KinjouJ
    KinjouJ 2016/06/12
  • JavaScript Plugin Architectureというプラグイン設計について学ぶ無料の電子書籍を書いた

    JavaScript Plugin ArchitectureというJavaScriptのプラグイン設計についての電子書籍を書きました。 この書籍はJavaScriptのライブラリやツールにおけるプラグインアーキテクチャについて見ていく事を目的としたものです。 以下の形式で読むことができます。 Web版 PDF形式 ePub形式 Mobi形式 GitHub上にソースコードも公開されているでので直接Markdownファイルを読むこともできます。 MarkdownよりはWeb版の方が見やすいのでそちらをオススメします。 Twitterのハッシュタグは#js_plugin_book 更新情報はRSSやリリースノートから見ることができます。 v1.0.0 最初に書くと決めたプラグインアーキテクチャが揃ったので1.0.0としてリリースしました。 JavaScript Promiseのの時と同じく、継

    JavaScript Plugin Architectureというプラグイン設計について学ぶ無料の電子書籍を書いた
  • npmパッケージをExampleテストしよう

    自分がそう呼んでいるだけなので、正式名称があるのかよくわかりませんが、 あるライブラリを公開する際に、exampleディレクトリにそのライブラリを使って実際に動くサンプルコードを作って、それを実行するテスト というのを示しています。 Go言語のExampleと近いような気がします。 testing - The Go Programming Language 以下のスライドでも簡単に解説してますが、この記事はExampleテストのメリットやNodeモジュールでのやり方について書いていきます。 ロジック、E2E、描画、音、動画、Example、文章 - 色々なJSテスト Exampleテストの利点 以下は思いついたExampleテストの良いところですが、これについて簡単に解説します。 始めるのが簡単 実際に動くサンプルコードが作成できる ドキュメントの一部になる package.jsonの設定

    npmパッケージをExampleテストしよう
  • テストできないコードをE2Eテストを使ってリファクタリングしよう

    ユニットテストがしにくい状態となってるコードをTestiumを使ったE2Eテストを書いてリファクタリングしてみる話です。 例えば、以下のようなjQueryで書いたコードは外(テストコード)から取り出すポイントがないので、ユニットテストを書くのは難しいと思います。(そもそもViewのコードなので) 特定のバージョンでの変更点を簡単に確認できるよう、 「Aの列のラジオボタンを選ぶと同じ行より一つ下にあるBの列のラジオボタンを自動で選ぶ」 という補助機能 $(document).ready(function () { // seq: シーケンス番号 $.each(["new_version", "old_version"], function () { $("input[name='" + this + "']").each(function (idx, elem) { if (idx == 0

    テストできないコードをE2Eテストを使ってリファクタリングしよう
    KinjouJ
    KinjouJ 2015/01/24
  • The Refactoring Tales - JavaScriptのリファクタリング本を読んだ

    GitHub: jackfranklin/the-refactoring-tales 読んだ日付: 2015年1月11日 まだ4章の途中までしか書かれてないですが、ウェブ版は無料で読めてPDF版等は買えるようになるようです(6-7章ぐらい予定) The Refactoring Tales - JavaScript Playground またGitHubにソースが公開されています(ウェブページはまだ反映されてない感じのtypoの修正等がありました) 感想 1,2章はフロントのJavaScriptで、jQuery世界を例にjQueryでべったり書いてしまったものをどうやって分けていくかの話。 1章はとても読みやすくて完成度もあるので読んでみるといい気がします、2章のカヌーセルの話はもっと深くやっても良かったような気がします。 縦に並ぶ$を見かけるとつらい感じになりますが、まずは手が出しやすい場

    The Refactoring Tales - JavaScriptのリファクタリング本を読んだ
  • Node.jsで書いてQuickStartを使ってブラウザで実行する話

    QuickStartというのは、名前がややこしいですがSpotify社が出してるツールのことです。 このツールはCommonJSで書いたJavaScriptのモジュールの依存関係を解決してビルドしたり、ローダとして使えるものです。 前者のビルドする機能は簡単にいえばBrowserifyです。 QuickStartもBrowserifyと同じく、nodeのcoreモジュール等をブラウザで使える様になってます。(CoreモジュールはBrowserifyが使ってるものと同じshimが使われてる) もう一つのローダとして使えるのがこのQuickStartの面白い所なんじゃないかなと思います。 この記事では、適当に試して見たQuickStartの使い方について見ていきます。 サンプルプロジェクトは以下に置いてあります。 azu/quickstart-example ビルド ビルドする場合はBrose

    Node.jsで書いてQuickStartを使ってブラウザで実行する話
  • Promiseのテストを補助するライブラリを書いた

    promise-test-helper azu/promise-test-helper という名前そのままですが、 Mocha等でPromiseのテストを書くときに見落としを減らすための補助ライブラリを書きました。 MochaのPromiseテストというのは、下記のようにpromiseオブジェクトを返すとそれをPromiseのテストと認識してやってくれる機構の事を言っています。 it("should support by mocha", function () { return getSuccessPromise().then(function (value) { assert(value); }); }); 詳しくは下記を見て下さい。 MochaがPromisesのテストをサポートしました | Web scratch Promiseのテストの難しさ Promiseのテストについてはazu

    Promiseのテストを補助するライブラリを書いた
    KinjouJ
    KinjouJ 2014/05/07
  • MochaがPromisesのテストをサポートしました

    このpromiseオブジェクトは、resolveするので、.then の第一引数で指定したonFulfilled コールバックに true という値を渡すようになってます。 今までのテストの書き方 このgetSuccessPromiseを 1.18.0より以前は以下のように書くことでテストをしていました。 it("should manually handling test...", function (done) { getSuccessPromise().then(function (value) { assert(value); done(); }).catch(done); // <= このcatchが今回の変更での焦点 }); getSuccessPromise()の返り値であるpromiseオブジェクトがresolveされると value に true が入って assert(t

    MochaがPromisesのテストをサポートしました
  • npmとbrowserifyを使ったクライアントサイドのウェブアプリ開発

    YoutubeとVimeoの検索結果のRSSをまとめてOPMLで取得できるサイトを作った | Web scratch で公開した Tech Video RSS Searcher はbrowserifyを使って作ったので、その辺の開発フローについての記事です。 browserify って何? browserify はNode.jsスタイルで書かれたモジュール(CommonJS)を ブラウザで利用できるように変換するコマンドラインツール(Nodeモジュール)となっています。 又、node.jsのCore Modulesのshimが用意されていて、 npmで公開されているnode.js向けのモジュールも一緒に変換してブラウザで動かすことが出来るようになっています。(普通に require で読みこめば勝手に変換されます) 原理的に無理だったり全てのモジュールが動くわけじゃないですが、 その辺の互

    npmとbrowserifyを使ったクライアントサイドのウェブアプリ開発
    KinjouJ
    KinjouJ 2014/01/21
  • JavaScriptでバイナリデータを扱う時の動作を理解する - prog*sig

    資料的な文章なので実用的な話という感じではないです JavaScriptで画像などのバイナリデータを読み込むという目的に沿って追っていく。 XHRを使用し取得した画像データはバイナリコンテンツである。その際にJavaScriptはデフォルトで受信したデータをユニコードとして扱うため、バイナリデータに制御文字*1を表すバイト列が含まれていた際に予期せぬ動作を引き起こすことがある。そのため、overrideMimeTypeメソッド*2を使いcharsetをx-user-definedとして受信データを特別なものとして扱うように設定する。 // overrideMimeTypeを設定するプログラム var req = new XMLHttpRequest();// XHRオブジェクト req.open('GET', URL, false); // 読み込むURLと方式 req.overri

    KinjouJ
    KinjouJ 2011/09/16
  • 1