2017年01月08日

Angular2のRouting2

Angular2のRoutingで基本的なルーティングの解説をしたけどもう少し高度なルーティング続きを読む
タグ:Angular2
posted by ねこまんま at 17:42 | Comment(0) | TrackBack(0) | Angular | 更新情報をチェックする

2017年01月06日

Stateless Functionでrefを利用する

Stateless Functionではrefsへの参照を生成しないため以下のようにして要素の内容を取得する

続きを読む
タグ:REACT
posted by ねこまんま at 17:15 | Comment(0) | TrackBack(0) | React | 更新情報をチェックする

2017年01月05日

Re : Flux を使わずに React コンポーネント間のコミュニケーションを行う8つの方法

参考:Flux を使わずに React コンポーネント間のコミュニケーションを行う8つの方法 - Qiita

結構はやい段階でReduxに以降してしまったためココらへんの知識が浅いので色々と書いてためしてみました。続きを読む
タグ:REACT
posted by ねこまんま at 14:44 | Comment(0) | TrackBack(0) | React | 更新情報をチェックする

2016年12月30日

Angular2のRouting

app.module.ts内などでRouterModuleを読み込み@NgModuleでimportsでルーティング設定を行います。

import { RouterModule }   from '@angular/router';

@NgModule({
...
imports: [
RouterModule.forRoot([
{
path: 'list',
component: ListComponent
},
{
path: 'detail',
component: DetailComponent
}
])
]
...
});


app.components.ts内の@Componentではrouter-outletタグで@NgModuleのpathがあった場合にcomponentがouter-outletタグに指定したコンポーネントが表示されます。

@Component({
selector: 'my-app',
template: `
<h1>{{title}}</h1>
<router-outlet></router-outlet>
`
});
タグ:Angular2 routing
posted by ねこまんま at 17:27 | Comment(0) | TrackBack(0) | Angular | 更新情報をチェックする

2016年12月21日

Angular2のライフサイクルメソッド

OnInitやOnChangesをimportしておけば子コンポーネントでngOnInitやngOnChangesといったライフサイクルメソッドが利用可能

import { Component} from '@angular/core';

@Component({
selector: 'my-app',
template: `
<div>
<my-h1 [myText]=h1></my-h1>
<p (click)="onClick()">click</p>
</div>
`
})
export class AppComponent{
h1:string = "h1";
onClick(){
this.h1 = this.h1+"!";
}
}


import { Component, Input,OnInit,OnChanges } from '@angular/core';

@Component({
selector: 'my-h1',
template: `
<h1>{{myText}}</h1>
`
})
export class h1Component implements OnInit,OnChanges{
@Input() myText:String;
ngOnInit() {
console.log("ngOnInit")
}
ngOnChanges(changes) {
console.log('ngOnChanges',changes);
}
}
タグ:Angular2
posted by ねこまんま at 13:03 | Comment(0) | TrackBack(0) | Ajax | 更新情報をチェックする

2016年12月20日

Angular2のサービス

Angular2のサービスに関しては「Angular2のDIを知る - Qiita」が詳しかった。

serviceは単純にデータ構造をかえすものにしておいて、providersに配列として登録、constructor(private fooService: FooService)みたいな感じで設定しておけばclass内からアクセスできるようになる。

myFoo.service.ts

export default class FooService {
say1(): string {
return "foo1";
}
say2(): string {
return "foo2";
}
}


app.component.ts

import { Component } from '@angular/core';
import FooService from "./myFoo.service";

@Component({
selector: 'my-app',
providers: [FooService],
template: `
<div>
<h1>{{name}}</h1>
<p (click)="onClick()">click</p>
</div>
`
})
export class AppComponent {
name:string;
constructor(private fooService: FooService) {
this.name = fooService.say1();
}
onClick(){
this.name = this.fooService.say2();
}
タグ:Angular2
posted by ねこまんま at 00:41 | Comment(0) | TrackBack(0) | Angular | 更新情報をチェックする

2016年12月19日

Angular2のコンポーネント

Angular2でコンポーネントapp.modules.tsにコンポーネントを登録しておけば利用できるようになる。

app.component.ts

import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<my-h1 myText="h1"></my-h1>
<my-h2 myText="h2"></my-h2>
`
})
export class AppComponent {

}


h1.component.ts

import { Component, Input } from '@angular/core';

@Component({
selector: 'my-h1',
template: `
<h1>{{myText}}</h1>
`
})
export class h1Component {
@Input() myText:String;
}


h2.component.ts

import { Component, Input } from '@angular/core';

@Component({
selector: 'my-h2',
template: `
<h2>{{myText}}</h2>
`
})
export class h2Component {
@Input() myText:String;
}


app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';

import { AppComponent } from './app.component';
import { h1Component } from './h1.component';
import { h2Component } from './h2.component';

@NgModule({
imports: [
BrowserModule,
FormsModule,
],
declarations: [
AppComponent,
h1Component,
h2Component
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

タグ:Angular2
posted by ねこまんま at 23:28 | Comment(0) | TrackBack(0) | Angular | 更新情報をチェックする

Angular2でただ追加するだけのTODOリスト

Angular2でただTODOを1行ずつ追加するだけのTODOリスト。とりあえずngModelを入力フォームに設定したけど直接取得したい。

import { Component } from '@angular/core';

export class Hero {
id: number;
name: string;
}

const HEROES: Hero[] = [];

@Component({
selector: 'app-root',
styles: [`
input[type='button']{
background:#CCC;
}
input[type='text']{
border:1px solid #CCC;
}
`],
template:`
<h1>{{title}}</h1>
<ul>
<li *ngFor="let hero of heroes">
{{hero.id}} : {{hero.name}}
</li>
</ul>
<div>
<div>
<input type="text" [(ngModel)]="addText">
<input type="button" value="追加" (click)="onClick()">
</div>
</div>
`
})
export class AppComponent {
title = 'Tour of Heroes';
heroes = HEROES;
addText: string;
onClick(){
if(!this.addText)return false;
this.heroes.push({
id: this.heroes.length+1,
name: this.addText
});
this.addText='';
}
}
タグ:Angular2
posted by ねこまんま at 21:22 | Comment(0) | TrackBack(0) | Angular | 更新情報をチェックする

ng serveでローカルサーバーが立ち上がらない

Angular2の利用でng serveで開発環境が立ち上がるようにしたのに以下のエラーがでて動かなくなった。

getaddrinfo ENOTFOUND localhost
Error: getaddrinfo ENOTFOUND localhost
at errnoException (dns.js:27:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:78:26)


立ち上がる際に以下のようにオプションを指定してあげたらちゃんと立ち上がるようになりました。

ng serve --host 0.0.0.0 --port 4201 --live-reload-port 49153

posted by ねこまんま at 20:11 | Comment(0) | TrackBack(0) | Angular | 更新情報をチェックする

2016年12月16日

Angular2の利用

Angular2を触らなくなったのでとりあず環境構築から。

angular-cli



Angular2ではオフィシャルなビルドツールとしてangular-cliが提供されているのでこちらを利用して環境構築を構築するらしい。

まずはインストール

npm install -g angular-cli


これでngコマンドが使えるようになったのでng new アプリ名で簡単に環境を構築できる。

ng new myApp


Successfully initialized git.Installing packages for tooling via npm.と初期化に成功したようなので

以下のコマンドでアプリに移動してnpmのインストールを行う。

cd myApp
npm install


あとはng serveでサーバーを立ち上げれば、http://localhost:4200で表示を確認できる

ng serve


myApp/src/app/app.component.tsの内容を修正してリーロドするとブラウザに修正内容が反映されいるので環境の構築はひとまずこれでOKっぽい。

export class AppComponent {
title = 'app works!!!';
}



アップデート



上記のコードでインストールされた angular-cliは古いので以下のコマンドでアップデートすることができます。

npm uninstall -g angular-cli
npm cache clean
npm install -g @angular/cli@latest
タグ:Angular2
posted by ねこまんま at 14:48 | Comment(0) | TrackBack(0) | Angular | 更新情報をチェックする

npmのアップデート

npmが古いようなのでアップデート。

まずはバージョン確認

npm -v


2.15.9と言われたので最新にアップデート

npm update -g npm


もう一度バージョンを確認すると4.0.5になってるので無事アップデートできました。
posted by ねこまんま at 14:31 | Comment(0) | TrackBack(0) | node.js | 更新情報をチェックする

2016年12月06日

ES2015(ES6)のIterator

ES2015(ES6)ではIterableなオブジェクトというのが追加されている。

Iterableなオブジェクトはfor-of文で取得する事ができます、わかりやすいのが配列である。

for (let item of [1,2,3]) {
console.log(item);
}


他にもargumentsオブジェクトやnodeListなどいわゆる配列ライクなオブジェクトもIterableなオブジェクトとして定義されているfor-of文で取得する事ができます。

面白いところではStringオブジェクトなどもIterableなオブジェクトとして定義されておりfor-of文で取得する事ができます。

for (let item of 'abcde') {
console.log(item);
}


Iteratorとは?



Iterableなオブジェクトがそんな感じならIteratorとは何かというと、
Iterableなオブジェクトにnext()メソッドを付与して1個づつ取り出しができるようにしたオブジェクトです。
[Symbol.iterator]()を実行することでIteratorオブジェクトを作成できます。

const items = [1, 2, 3];
const iterator = items[Symbol.iterator]();
iterator.next();//Object {value: 1, done: false}
iterator.next();//Object {value: 2, done: false}
iterator.next();//Object {value: 2, done: false}
iterator.next();//{value: undefined, done: true}


取り出した際にvalueプロパティに値がdoneプロパティに出し切ったかのオブジェクトが出力され、出し切ったらdoneがtrueになります。
タグ:iterator ES6 ES2015
posted by ねこまんま at 13:14 | Comment(0) | TrackBack(0) | 関数/文法 | 更新情報をチェックする

2016年11月15日

Webpack2を試す

Webpack2を試す

まず、インストールできるバージョンを確認。

npm info webpack versions


今回はWebpack2の最新の2.1.0-beta.26を試します。

まずはパッケージJSONの作成

npm init -y


Webpack2の最新のインストールは

npm i -D webpack@beta


もしくはバージョンを指定したい場合は、

npm i -D webpack@2.1.0-beta.26


package.jsonと同じ階層に以下のwebpack.config.jsを作成

'use strict';

const webpack = require("webpack");

module.exports = {
context: __dirname + "/src",
entry: {
app: "./app.js",
},
output: {
path: __dirname + "/dist",
filename: "[name].bundle.js",
},
};


これでsrc/app.jsのファイルをdist/app.bundle.jsに書き出してくれる。

package.jsonのscriptsを以下のように変更し、

  "scripts": {
"webpack": "webpack -p"
},


コンソールから【npm run webpack】とコマンドを打つとdist/app.bundle.jsが書き出される。

ではimport機能を使ってみましょう、「npm i -D moment」とコマンドをうってapp.jsの内容を以下のように変更しておきます。

'use strict';
import moment from 'moment';
var rightNow = moment().format('MMMM Do YYYY, h:mm:ss a');
console.log( rightNow );


これでmomentの機能を利用できるようになります。

以下のようにするとentryの配列の順にファイルを結合して配列の名前のファイル(app.bundle.js)として書き出してくれます。

'use strict';

const webpack = require("webpack");

module.exports = {
context: __dirname + "/src",
entry: {
app: ["./home.js", "./events.js", "./vendor.js"],
},
output: {
path: __dirname + "/dist",
filename: "[name].bundle.js",
},
};


以下のようにすると結合したり個別に書き出したり設定できます。






Getting Started with Webpack 2 – Thinking in Code

タグ:WebPACK
posted by ねこまんま at 12:14 | Comment(0) | TrackBack(0) | Tool | 更新情報をチェックする

2016年10月18日

Reactのcreate-react-appコマンド

Facebook公式のcreate-react-appコマンドを試してみる。

まずはcreate-react-appコマンドのインストール

npm install -g create-react-app


以下のコマンドで初期設定が開始される

create-react-app hello-world


hello-worldディレクトリに移動し、npm startで開始する。

cd hello-world
npm start


http://localhost:3000/とかで立ち上がる

src/App.jsなんかに修正を加えると自動ビルドされブラウザがリロードされる。

ただ、実際の製品に反映させたい場合は以下のコマンドを実行しなくちゃいけない

npm run build

posted by ねこまんま at 16:43 | Comment(0) | TrackBack(0) | React | 更新情報をチェックする

2016年10月03日

Vue.js 2でcompiledメソッド

Vue.js 2ではLifecycleメソッドのcompiledメソッドが廃止され、変わりにmountedメソッドが追加されたもよう。続きを読む
posted by ねこまんま at 12:21 | Comment(0) | TrackBack(0) | vue.js | 更新情報をチェックする

2016年09月27日

vue.jsの基本

vue.jsを最初に触ってから、結構たったのでもう一度復習。続きを読む
タグ:vue.js
posted by ねこまんま at 17:37 | Comment(0) | TrackBack(0) | vue.js | 更新情報をチェックする

2016年07月12日

ES2016(ES7)のbind syntax

ES2016(ES7)のbind syntaxでは以下のようにbind()を記述できる、

::this.handleIncrement


Babelの場合以下のように変換を行う。

this.handleIncrement.bind(this);


続きを読む
タグ:ES2016 ES7
posted by ねこまんま at 17:38 | Comment(0) | TrackBack(0) | 関数/文法 | 更新情報をチェックする

React/ReduxのMiddleware

React/Reduxで非同期処理やアクションの制御はMiddlewareを介して行うのが良いらしい。続きを読む
posted by ねこまんま at 07:32 | Comment(0) | TrackBack(0) | React | 更新情報をチェックする

ES2015(ES6)の慣れるまで読みにくい記述

React/ReduxのMiddlewareで見かける以下の記述。

const logger = store => next => action => {
next(action);
}


Arrow Functionの特性を活かした感じの記述でBabelでは以下のように変換を行います。

var logger = function logger(store) {
return function (next) {
return function (action) {
console.log("before");
next(action);
console.log("after");
};
};
};
続きを読む
タグ:ES2015 ES6 BABEL
posted by ねこまんま at 07:21 | Comment(0) | TrackBack(0) | 関数/文法 | 更新情報をチェックする

2016年06月29日

react-router-reduxでTODOリスト

React+Redux でTODOリストで作ったTODOリストの一覧ページと追加ページを分離してreact-router-reduxで管理するサンプル。続きを読む
posted by ねこまんま at 19:09 | Comment(0) | TrackBack(0) | React | 更新情報をチェックする