sugawara takanori
designer & programmer
Farmnote
Farmnote
STUDIO
Ajaxより先に非同期通信でUIが作れていたり
OSやブラウザが違ってもほぼ同じ見た目なので
レイアウトの崩れが起きにくく楽だった。
様々な表現の母体になるもジョブズさんに死刑宣告
現在のUI実装の祖となる偉大な設計にも関わらず
設計思想のあまりの飛躍とVistaのパフォーマンスの悪さで
今ひとつ流行らなかった
日本だとVue.jsに押されてますが、英語圏では圧倒的シェア
ホットリロードで開発できるの最高でした
バージョンアップが活発でパッケージが
軒並みゾンビ化するので、最後に頼れるのは自分
描画内容が同じなのはFlashと同じ
ホットリロードで開発できるはRNと同じ
仮想Domっぽい仕組みはReactと同じ
Reduxなどでは行えない
変数レベルでObservableな管理が可能
const store = {
state = {
foo: 1,
name: '何か'
},
update(cb) {
this.state = cb(this.state);
}
};
const {Provider, Consumer} = React.createContext(store.state);
const Foo = () => (
<Consumer>
{({foo, name}) => (
<div>
<p>Foo is {foo}</p>
<div>{name}</div>
</div>
)}
</Consumer>
);
const App = () => (
<Provider value={store.state}>
<Foo />
</Provider>
);
const {Provider, Consumer} = React.createContext(store.state);
const Foo = () => (
<Consumer>
{ store => (
<div>
<p>Foo is {store.foo}</p>
<div>{store.name}</div>
</div>
)}
</Consumer>
);
const App = () => (
<Provider value={store.state}>
<Foo />
</Provider>
);
Text
変数レベルでは変更検知できない
const store = {
state = {
foo: 1,
name: '何か'
},
update(cb) {
this.state = cb(this.state);
}
};
class Bloc {
final _fooControlelr = StreamController<String>();
get foo => _fooControlelr.stream;
Sink<String> updateFoo => _fooControlelr.sink;
final _nameControlelr = StreamController<String>();
get name => _nameControlelr.stream;
Sink<String> updateName => _nameControlelr.sink;
Bloc() {
updateFoo.add('foo');
updateName.add('何か')
}
}
Reduxなどでは行えない
変数レベルでObservableな管理が可能
class Foo extends StatelessWidget {
@override
build(context) {
final bloc = BlocProvider.of(context);
return Column( children: [
StreamBuilder<String>(
stream: bloc.foo,
builder(context, snapshot) => Text('Foo is ${snapshot.data}')
)
StreamBuilder<String>(
stream: bloc.name,
builder(context, snapshot) => Text('Foo is ${snapshot.data}')
)
]
);
}
}
class App extends StatelessWidget {
@override
build(context) {
return BlocProvider(
child: Foo()
);
}
}
Flutter | React | Vue |
---|---|---|
StatelessWidget | SFC | SFC |
StateFullWidget | 普通のコンポーネント | 普通のコンポーネント |
InheritedWidget | Context | Provide/Inject |
Redux | Redux | |
ScopedModel | MobX | VueX |
BloC | ない | ない |
Angularはよくわかってないので書けませんでした
By sugawara takanori