webpackを使ったjsのモジュール化を勉強中なのですが以下のような内容で躓きました。
js
1//モジュール化前 2 3let positionX; 4let positionY; 5let color; 6 7const setStyle = () => { 8 positionX = generatePositionX(); 9 positionY = generatePositionY(); 10 color = color(); 11} 12 13const generatePositionX = () => { 14 ... 15} 16 17const generatePositionY = () => { 18 ... 19} 20 21const color = () => { 22 ... 23} 24 25setStyle(); 26. 27. 28. 29 30
以下モジュール化を試みた
js
1// ./app.js 2 3import { setStyle } from './modules/setStyle'; 4 5setStyle(); 6
js
1// ./modules/generatePosisiton.js 2 3export const generatePositionX = () => { 4 ... 5} 6 7export const generatePositionY = () => { 8 ... 9} 10
js
1// ./modules/color.js 2 3export const color = () => { 4 ... 5} 6
js
1// ./modules/setStyle.js 2 3import { generatePositionX, generatePositionY } from './modules/generatePosition'; 4import { color } from './modules/color'; 5 6export const setStyle = () => { 7 positionX = generatePositionX(); 8 positionY = generatePositionY(); 9 color = color(); 10} 11
この結果、バンドルは成功するのですが実行時に、setStyle()でpositionX...が定義されていないというエラーになります。
こういった、変数を他の関数によって更新するという関数をモジュール化する場合にはどのようなデザインパターンになるのでしょうか。
自分で考えると、setStyle()の引数にそれぞれ入力するという方法しか思いつかず、これが良い方法とは思えません。
また、setStyle.jsのように他のモジュールからモジュールに対してimportする方法は適していると言えますか?
回答1件
あなたの回答
tips
プレビュー