ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Postlar arxiv
1 419
ืฉืื ืืชื ืืืืืื ืืฉืืง ืขื ืืงืื ืืืืชื ืงืืืกื ืืืืงืก ืืงืืฉืืจ:
https://codesandbox.io/s/damp-rain-q71w55?file=/src/App.js
ืืฉื ืืืฅ ืขื ืืืคืชืืจ ืืืืฉ ืื ืื ื ืจืืืื ืฉืงืืืื ื ืืืืขืืช render ืจืง ืืืคืจืืืื ืฉืืืืช ืืฉืชื ื (ืฉื ื ืคืจืืืื, ืืื ืืืื ืืช ืืชืืกืคืช ืืืงืกื ืืืฉื ื ืงืืื ืชืืกืคืช).
ืืชืืื ืืืช ืืืืืืช ืืืชืจ, ืืฉืฉืืืจื ืขื ืืืืช References ืืืืื ืืืกืื ืืื ืืคืงืืื, ืจื ืืจืื ืืขืื ืืืืื ืื, ืืื ืืงื ืืื ืชืืื ืืฉืืืจ ืขื ืืงืื ืฉืืื ืขืงืื ืื ืืืจื ืงืืืช ืขืืืื ืื ืืืฉืจืช.
1 419
# ืืืชืืื ืจืืืืงืก ืืืืืข ืฉืืืืข ืืืฉืจืช
ืื ืื ื ืืืืืื ืืจืืืืงืก ืฉืื ืืืืืข ืฉืืืจ ืืืืืืงื ืืื ืืงื ืืืื ืืขืืื ืืืื ืืืช ืืช ืื ืืืคืืืงืฆืื. ืืฉืืฉ ืื ืืืืข ืฉืฉืืืจ ืืฆื ืืฉืจืช, ืื ื ืืืื ืชืืื ืืฉืืืฃ ืืช ื JSON ืฉื ืื ืืืืืข, ืืืืฆืื dispatch ืฉืืืืืฃ ืืช ืืกืืืื ืืืคืืืงืฆืื ืืื ืฉืงืืืืชื ืืืฉืจืช ืืืื ืืชืขืืื.
ืืืืกืจืื ืืืืฉื ืืืืช ืืื ืฉืืืจื "ืืชืงื ืช" JSON ืืืฉ ืืืฉืจืช, ืื ืืงืืืคืื ื ืืืช ืืจืื ืืจื ืืืืฉ, ืื ืื ืืืืง ืฉืืื ืืืืืข ืื ืืฉืชื ื. ื JavaScript ืืฉืื ื ืืืืืฃ ืืช ืื ืืกืืืื ืืืืืืงื ืืืฉ, ืื ืื ืืื, ืขืืืื ืืืืคืชื ืืช ื References ืืืื ืจืืืงื ืื ืืืื ืืืืืช ืฉืื ืืื ืฉืื ืื.
ืืคืืกื ืื ืื ื ืจืืฆื ืืืจืืืช ืืืฉื ืงืฆืช ืืืชืจ ืืชืืืืืช ืืฉืืืื ืฉืื ืืืื ืืืฉืจืช, ืชืื ืฉืืืืฉ ื JSON Patch, ืืื ืืขืืื ืจืง ืืช ืืืืงืื ืืืืืืงื ื State ืฉืืืืช ืืฉืชื ื, ืืื ืืืืืช ืืกืืื ืืฉืืืจ ืขื ืขืงืืืืช ืืจืืช ื References ืืื ืขืืืื ืื ืืืฉืจืช.
## ืืงืื ืขื ืืืขืื
ืืชืืื ืืช ืฉืื ื ืืืื ืืืืื ืงืื ืจืืืืงืก ืฉืืืืข ืืขืืื ืืช ืืกืืืื ืฉืื ืืจื action:
export const slice = createSlice({
name: 'items',
initialState,
reducers: {
reset: (state, action) => {
return action.payload;
},
},
})
ืืกืืืื ืืื ืืกื ืืื ืืขืจื ืฉื 4 ืคืจืืืื, ืืืฉืืื ืฉืืืื ืงื ืืฉืืง ืขื ืืงืื ืื ืืื ืฉืจืช ืืฆืจืชื ืคืื ืงืฆืื ืฉืืืืฆืจืช ืืืจืกื ืืืฉื ืฉื ืืกืืืื ืขื ืืื ืฉืื ืื ืืืงืกื ืฉื ืืื ืืคืจืืืื:
const initialItems = [
{ id: 1, text: 'first item' },
{ id: 2, text: 'second item' },
{ id: 3, text: 'third item' },
{ id: 4, text: 'fourth item' },
];
function randomizeItems() {
const item = _.sample(initialItems);
return initialItems.map(i => (
i.id === item.id ? { ...i, text: `${i.text} ${_.random(10)}`} : {...i }
));
}
ืืฉ ืงืืืคืื ื ืื ืฉืืืืขืช ืืืฆืื ืคืจืื ืืืจืฉืืื, ืืขืื ืงืืืคืื ื ืื ืฉืืฆืืื ืืช ืื ื-4:
const Item = React.memo(({ id }) => {
console.count(`Item ${id}`);
const me = useSelector(state => state.items.find(i => i.id === id));
if (!me) {
return <p>Missing item {JSON.stringify(id)}</p>
}
return (<p>{me.id} - {me.text}</p>);
});
function Main() {
const items = useSelector(state => state.items);
const dispatch = useDispatch();
return (
<>
<button onClick={() => dispatch(slice.actions.reset({ items: randomizeItems() }))}>Randomize</button>
{items.map(i => <Item id={i.id} key={i.id} />)}
</>
)
}
ืขืืฉืื ืืืื ื ืจืื ืื ืงืืจื ืืื:
1. ืืฉืืืืฆืื ืขื ืืคืชืืจ Randomize ืื ืื ื ืืืจืืืื ืืืืืงื ืกืืืื ืืืฉ ืฉืืืจืื ื-4 ืคืจืืืื ืืืฉืื ืืืืจื. ืืืชื ืืืจ ืืื ืงืืจื ืื ืืืืชื ืืคืขืื JSON.parse ืขื ืืืืืงื ืฉืืืืข ืืืฉืจืช.
2. ืืืื ืฉืืคืจืืืื ืืืฉืื, ืื useSelector ืืชืื Item ืืืงื ืืช ืืืืืข ืืืืฉ ืืืจื ืืจ ืืช ืขืฆืื ืืืืฉ. ืจืืืงื ืืคืขืื ืืช render ืื ืืื ืืืื ืฉืืชืืฆืื ืฉื useSelector ืฉืื ื ืืื ืฉืืืชื ืงืืื - ืืคืืื ืืฉืืืืืจ ืขื ืคืจืืืื ืฉืื ืืฉืชื ื ืืืขืจื.
ืืชื ืืืืืื ืืฉืืง ืขื ืืงืื ืืืืคืชืืจ ืืงืืืกื ืืืืงืก ืืงืืฉืืจ:
https://codesandbox.io/s/damp-rain-q71w55?file=/src/App.js
## ืืื ืืฆืืฆื ืจื ืืจืื
ืืจืืข ืฉืื ื ืืืื ืฉื render-ืื ืืืืืชืจืื ืืืืขื ืืืื ืฉืจืืืืงืก ืืืืืฃ ืืช ืื ืืืืืืงืืื ืืืืฉืื, ืื ื ืืืื ืืชืงื ืืช ืืืขืื ืืจืื ืฉื Redux. ืืกืคืจืื rfc6902 ืืืืขืช ืืืืืช ืืืืืื ืืื ืฉื ื ืืืืืงืื JSON ืืืฉื ืืช ืืืืืงื ืืื ืืื "ืืืืืข" ืืฉื ื, ืืฆืืจื ืฉืืื Mutable. ืืฉืื ื ืฉื ืืช ืืงืื ืืื ืืชืื immer ืื ืืืืืคื ืจืง ืืืืงืื ืฉืืืืช ืืฉืชื ื ืืืืืืงื ืืกืืืื. ืื ื ืืืกืืฃ ืืกืืืืก ืืช ืืคืื ืงืฆืื:
resetWithDiff: (state, action) =>{
applyPatch(state, createPatch(state, action.payload));
},
ืืืืืื ืืช ืฉืชื ืืคืื ืงืฆืืืช applyPatch ื createPatch ื rfc6902:
import {applyPatch, createPatch} from 'rfc6902'
ืืืืกืืฃ ืืคืชืืจ ืืืคืืืงืฆืื ืฉืืฉืื dispatch ืขื ืืคืขืืื ืืืืฉื:
function Main() {
const items = useSelector(state => state.items);
const dispatch = useDispatch();
return (
<>
<button onClick={() => dispatch(slice.actions.reset({ items: randomizeItems() }))}>Randomize</button>
<button onClick={() => dispatch(slice.actions.resetWithDiff({ items: randomizeItems() }))}>Randomize With Diff</button>
{items.map(i => <Item id={i.id} key={i.id} />)}
</>
)
}1 419
# ืกืืงืืจ ืืื - ืืืจืืช ืื ืื ืฉืื ืขืืื
ืืฉืืชื ืฉืื ื ืืื ื ืืช ืืคืืฆ'ืจ ืืื ืงื ืืขืืื, ืืื ืืื ืฉืงืืจื ืืจืื ืคืขืืื ืืืขืจืืืช ืชืืื ื, ืืฉืคืืฆ'ืจ ืืืฉ ืคืืืฉ ืงืื ืงืืื ืืื ืขืืื ืืืืืฃ ืืช ืืงืื ืืืืืื ืื ืื ืฆืคืืืื. ืื ืงืจื ืขื ืคืืฆ'ืจ ืืืจืืช ืื ืื ืืชืฉืืื ืืจืืฉ.
ืืื ืื ืื ืฉื ืื ืื ืืชืฉืืื ืืจืืฉ ืืืืจ ืฉืืชื ืืืืืื ืืงื ืืช ืื ืื ืืชืงืืคื ืืืืืจืชืื, ืคืฉืื ืืฉืืืื ืืจืืฉ ืขื ืื ืืืืืฉืื ืืื ืื ืฆืจืื ืืฉืื ืคืขื ืืืืืฉ. ืืื ืื ืฉืื ืืืืืื ืืืขืืช ืืืคืขืืื ืื ืื ื ืงืื ืื ืื ืื ืืืืืฉืืื ืืื ืืืจื ืืืืฉ ืืืืื ืฉืืืงื ืื ื ืืืชืจ ืืื ืืกืืื ืืช ืืงืืจืก ืืจืืฆืื ืืืืจืื. ืืืฆื ืฉื ืืืจืื ืื ืื ื ืืฉืื ืืจืืฉ ืขื ืืืืฉืืื ืื ื ืจืืฆื ืฉืืืืืฉืืื ืืืื ืืฆืืจืคื ืืชืงืืคืช ืืื ืื ืืงืืื ืฉืื, ืืืืืจ ืื ืืื ืฉืงื ื ืื ืื ืืฉืืืฉื ืืืืฉืื, ืืื ืืืจื ืืืืฉ ืงื ื ืขืื ืืืืฉืืื ืืฆืคื ืฉืืืืืฉืืื ืื ืืกืคืื ืืชืืืื ืืืจืืข ืฉืืฉืืืฉื ืืืืฉืื ืืจืืฉืื ืื ื ืืืจื (ืืื ืืจืืข ืฉืืื ืงืื ื ืืืชื). ืื ืืฆื ืืืฉ ืฉืงืืื ืื ื ืืจืฉื ื ืืืชืืืื ืืืชื.
ืืคืื ืงืฆืื ืฉืืืคืื ืืขืืืื ืคืจืื ืืฉืชืืฉ ืืืจื ืจืืืฉื ื ืจืืชื ืืืงืืจ ืื:
def subscribe(duration)
self.subscription_end_date = (Time.zone.now + duration)
end
ืืื ืืจืืข ืฉืื ืื ื ืืืกืืคืื ืืคืฉืจืืช ืืืฉืชืืฉ "ืืืืจืื" ืื ืื ืืฉ ืืฉื ืืช ืืช ืืคืื ืงืฆืื. ืฆืจืื ืืืืืง ืื ืืืืชื ืืฉืชืืฉ ืืฉ ืืืจ ืื ืื ืงืืื, ืืื ืื ืืืืจืื ืืช ืืื ืื. ืงื? ืื ืืืืจื. ืื ืืื ืื ืืกืืื ืืจืืฉืื ืขื ืืืขืืช:
def subscribe(duration)
self.subscription_end_date = ((subscription_end_date || Time.zone.now) + duration)
end
ืื ืืืืงืืช ืืืืืื ืืืืืงืืช ืืืขืจืืช ืฉืืจืฆืชื ืื ืขืื ืขื ืืืขืื, ืืืืื ืื ืืืงื ืืื. ืืืืงืืช ืขืืืจืืช ืืืืืงืช ืืฆืืื ืฉืืคืฉืจ ืืืฉืื ืขืืืื, ืืื ืืืืื ื ืืืื ืืืืคืืข ืืืืืจืื ืฉืื ืื ื ืื ืืืฉืืื ืขืืืื. ืืคืืืช ืขื ืฉืื ืืืืขืื.
ืืืงืจื ืฉืื ื ืืืื ืืชืืื ืืฉืืฉืชืืฉ ืฉืืืจ ืืื ืื ืื ืื ืืขืืจ ืื ืกื ืืจืืืฉ ืื ืื ืืืฉ. ืืืฆื ืืื ื subscription_end_date ืืื ืชืืจืื ืืขืืจ, ื"ืชืืกืคืช" ืืืื ืืื ืื ืืฆืืจืคืช ืืืืขื ืืืงืืจื ืื ืืื ืื ืคื ืชืืงืฃ, ืื ืฉืื ืืืจื ืชืฉืืื ืืืืชื ืืฉืชืืฉ ืขืืืื ืืื ืื ืื ืืชืืงืฃ.
ืืืื ืืจืื ืืืืื, ืื ืืื ืืืจื ืฉืจืืืื ืืช ืืืขืื ืืคืืชืจืื ืืื ืคืฉืื ืืืคืื ืืืงืจื ืื ืืกืฃ. ืืงืื ื Ruby ืืชืืงืื ืืื:
def subscribe(duration)
existing_subscription_period = if subscription_end_date.present? && Time.zone.now < subscription_end_date
subscription_end_date
else
Time.zone.now
end
self.subscription_end_date = (existing_subscription_period + duration)
end
ืืืื ืชืืื ืืคืืกืืื ืืืื ืื ื ืืืืืจ ืฉืื ืืชื ื ืชืงืืื ืืืืจืื ืืืชืจ ืฉืื ืขืืืืื ืืื ืฉืืชื ืืืฉืืื ืฉืฆืจืืืื ืืขืืื, ืืืงืฉื ืื ืชืงืื ืืื ืืขืืื ื ืืืืคืก ืฆืืจ ืงืฉืจ. ืื ืื ื ืขืืืื ืืจืืงืืฉืืื ืื Rewrite ืืื ืืื ืืื ื ืกืืจ ืืช ืื ืืืขืืืช.1 419
# ืืืื ืืืืชื: ืืืจืืขื mousedown ื mouseup ื JavaScript ืื ืชืืื ืืชืืืืื
ืื ื ืืืื ืืืื ืืคืจืกื ืคื ืืขืืืช ืฉื ืชืงืืชื ืืื ืฉืขืืืจื ืืฆืืชื ืืืคื ืฉื ืคืืชืจืื. ืืฆืขืจื ืืคืขืืื ืื ืื ื ื ืชืงืืื ืืืืืื ืฉืืื ืืื ืคืืชืจืื ืืช ืืคืื, ืืฉืคืฉืื ืฆืจืื ืืืืืจ ืืืืืชืจ. ืืื ืืืืืชื ืืืื ืขื ืืืจืืขื mousedown ื mouseup ื JavaScript.
ืืชืืื ืืช ืืืจื ื ืืงืื ืขืืฉื ืืืจ ืืืื ืคืฉืื - ืื ืคืขื ืฉืืืฉืื ืืืืฅ ืขื ืืคืชืืจ ืฉื ืืขืืืจ ืืื ืืฆืืื ืืช ืืืงืกื down, ืืืฉืขืืืืื ืืช ืืืคืชืืจ ืืื ืืฉื ื ืืช ืืืงืกื ื up. ืืคืฉืจ ืืฉืืง ืขื ืืงืื ืืงืืืคื ืืงืืฉืืจ ืืื:
https://codepen.io/ynonp/pen/vYrrRPz?editors=1010
ืื ืืจืืืช ืืืชื ืืืืืข ืืื:
<iframe height="300" style="width: 100%;" scrolling="no" title="Untitled" src="https://codepen.io/ynonp/embed/vYrrRPz?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/ynonp/pen/vYrrRPz">
Untitled</a> by Ynon Perek (<a href="https://codepen.io/ynonp">@ynonp</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
ืืื ืืกืชืืจ ืฉืืืื ืงื ืืฉืืืจ ืืช ืืื ืื ืื: ืคืฉืื ืืืืฆืื ืขื ืืคืชืืจ ืืขืืืจ ืืฉืืืื ืืื ืขื ืืืื ื, ืืฉื ืคืชื ืืชืคืจืื-ืืคืชืืจ-ืืื ื ืืืืฆืื ืขื Escape ืืื ืืกืืืจ ืืืชื, ืืืืืื ืงืฆืช ืืช ืืขืืืจ ืื ืขืืืจืื ืืืืื ืืืจ ืืื ืขืืืืื ืืช ืืืคืชืืจืื. ืื ืชืฉืืงื ืขื ืื ืืืื ืชืืฆืื ืืคืืื ืฉืืืืช ืืืชืจ ืงืืืช ืืฉืื.
ืงืื ืืืื ืืืืฉื ืื ืื ื ืขืืืจ ืืืฉืชืืฉ ื Pointer Events.
ืื ืงืืื ืืืฉืืื - ืงืฉื ืืืืืช ืืฉืืฉืชืืฉ ืืคืกืืง ืืืืืฅ ืขื ืืขืืืจ. ืืคื ืืคืืฆ'ืจ ืฉืืชื ืืื ืื ืชืฆืืจืื ืืืฆืื ืคืืชืจืื ืืื ืืืชืจ, ืืืืืื ืื ื ื ืชืงืืชื ืืื ืืฉืชืืงื ืชื ืื ืื ืื ืฉื Resize ืืืคืืคื, ืฉื ืืคืฉืจ ืืืืืช ืืฉืกืื ืืขืืืจ "ืืืฆื" ืืืืืจ ื Resize ืืืืคืกืืง ืืช ืืคืขืืื, ืื ืืชืคืืก ืืืจืืขื Mouse Move ืืืืืืง ืืื ืืืจืืข ืืื ืืืื ืืคืชืืจืื ืขืืืื ืืืืฆืื. ืขืืืจ ืืฉืืืืช ืืืจืืช ืชืฆืืจืื ืืืฆืื ืืขืงืคืื ืืืจืื, ืืื ืืืืคื ืืืื ืื ืชืื ื ืขื ืืชืืื ืืื ืืืจืืขื mousedown ื mouseup.
1 419
# ืืืื ื ืืืืืื ืจ: ืืืืคืกืงืจืืคื ืืงืื ื
ืืฉืืืข ืฉืขืืจ ืืืขืชื ืืืื ืงืืจืก ืจืืืงื ืืืืื ืืืจื, ืืฉืื ืืืื ืฉืืื "ืืืืืืืืช ืืืื ืืืืืคืกืงืจืืคื ื ืืื?". ืืืืคืกืงืจืืคื ืืืจ ืืืื ืืคื ืืขืืืื ืืืืืจืช, ืืฉืคื ืฉืืืื ืจืืฆืื ืืืืืจ ืื ืืืฉ ืืืืช ืืืืืช ืืืืื ืฉื ืืชืื ืชื ืืื ืืคืจืืืงืืื ืฉืขืืืจื JavaScript ื ืงื ืืืจ ืืื ื ืืืคืฆืื.
ืืืชืจืื ืืช ืฉื ืืืืคืกืงืจืืคื ืจืืื, ืืื ืืื ืืฉืืื ืืืืืืืืช ืฉืขืืืืช ืืื ืืืชืจ, ืงื ืืืชืจ ืืืฆืื ืืช ืื ืืืชืืืกืืืืช ืืคืื ืงืฆืื ืื ืืืืงื ืืกืืืืช ืื ืืืืคืืฉ ืืื ืื ืจืง ืืคื ืฉื, ืืืื ืงื ืืืชืจ ืืฉื ืืช ืฉืืืช, ืืืืื ืืืจืื ืืืงืื ืืืงืื ืืืฉื ืืช ืืืฉืงืื. ืืช ืจืื ืืืชืจืื ืืช ืื ืื ื ืืงืืืื ืืฉืจ ืืืงืืคืกื, ืืื ืฉื ืฆืืจื ืืืชืืืฅ ืืืชืจ ืืื. ืื ืฆืจืื ืืืืืืจ ืืืคืืก ืืื ืืืจ, ืืื ืืืืืช ื Type Inference ืฉื ืืืืคืกืงืจืืคื ืืืกืืช ืื ืฆืจืื ืืืืืืจ ืืืชืจ ืืื ืืืคืืกืื ืืืื ืื ืื ืชืืกืคืช ืืฉืืขืืชืืช ืืงืื.
ืืืื ืืืช ืืฉ ืืจืืื ืืืืืช ืืืชืจ ืืคืืืช ืืืฉืชืืฉ ืืืืืคืกืงืจืืคื ืืืคืขืืื ืืืื ืืืืจืืช ืื ืืกืคืืง ืืืื ืขื ืืฉืคื ืื ืื ื ืืืฆืืื ืืช ืขืฆืื ื ืืชืืืฆืื ืืืชืจ ืืื ืฉืฆืจืื ืื ืืืชืืื ืืืืจืืช ืืืคืืกืื ืขื ืืืจืืช ืื ืื ืื ืจืืืช ืืกืคืืง. ืืืืขืืช ืืฉืืืื ืฉื ืืืืคืกืงืจืืคื ืืืืืืช ืื ืื ืืืืื ืืื ืื ื ื ืืฆื ืืช ืขืฆืื ื ืืืืื ืืื ืจื ื"ืชืืงืื" ืงืื ืืืจืืช ืฉืืื ืืืืคืกืงืจืืคื ืืื ืืื ืชืงืื ืืืืจื.
ืืืื ืืืืฉื ืืงืจืื ืืฉืขื ืขืฉืจ ืืืืงืจ ืืขืืืจ ืืืืื ืจ ืฉื ืฉืขื ืขื ืืืืคืกืงืจืืคื ืืืืจื ืืืืืจ ืืช ืืฆืืืื ืืืืืื ืืืชืจ ืฉื ืืฉืคื, ืืืขืืืจ ืืื ืืืฆืื ืืจืืื ืืืืืช ืืคืชืืจ ืืขืืืช ืืื ืืืกืื ืืื ืคืืชืื. ืืืืืื ืจ ืืืื ืืขื ืืื ืื ืื ืื ืขืืืชื ืืขืืื ืืืืืคืกืงืจืืคื, ืืื ืื ืขืืืชื ืื ืืจืืฆืื ืืงืื ืืืคืื ืืฉืืืืฉ ืืื ืืืชืจ. ืืืืื ืืฉืขื ื ืืืจ ืขื:
1. ืืื ืืืื ืืืืืจ ืืืืืคืกืงืจืืคื, ืงืฆืช ืขื ืืืืกืืืจืื ืฉืื ืืื ืืืืคืกืงืจืืคื ื ืืชื ืช ืื ื ืืืคืชืืื.
2. ืืื ืืงืืช ืืืชืืืช ืืืคืืกืื ืืฆืืจื ืื ืจืืช ืืืชืจ, ืืืืื ืขื ืืืืืืืช ืืฉืืืืฉ ืืืืชื ืืื ืืงืืช.
3. ืืื ืืฉืื ืืืืคืกืงืจืืคื ืืคืจืืืงืืื ืืืื ืงืืืฅ ืืืืืจืืช tsconfig
ืชืจืืืฉื ืืืคืฉื ืืืื ืขื ืฉืืืืช ืขื ืืืืคืกืงืจืืคื ืื ืืืืืืืช ืฉื ืืืจืื ืฉืืชื ืื ืืืืืื ืืื ืืืชืื ืืื ื ืืฉืื ืืจืืืช ืืืขืืืจ.
ืคืจืืื ื ืืกืคืื ืืืจืฉืื ืืืฃ ืืืืืื ืจ ืืงืืฉืืจ: https://www.tocode.co.il/workshops/122.
ื ืชืจืื ืืืืืฉื ืืืืงืจ,
ืื ืื
1 419
# ืืื ืืฆืืชื ืืช ืื
ืืฉืืืื ืืงืจื ืืงืื ืฉื axios ื ืชืงืืชื ืืงืื ืืื ืขืืืจ ืืืช ืืืืืงืืช:
// from: https://github.com/axios/axios/blob/v1.x/test/specs/promise.spec.js#L10
it('should provide succinct object to then', function (done) {
let response;
axios('/foo').then(function (r) {
response = r;
});
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: '{"hello":"world"}'
});
setTimeout(function () {
expect(typeof response).toEqual('object');
expect(response.data.hello).toEqual('world');
expect(response.status).toEqual(200);
expect(response.headers['content-type']).toEqual('application/json');
expect(response.config.url).toEqual('/foo');
done();
}, 100);
});
});
ืื ืืืืืจืื ืฉืจืช ืคืืงืืืื ืืืืชืืืื ืืช ืคืจืื ืืชืฉืืื ืืคืืงืืืืืช ืฉืืื ืืฉืื, ืฉืืืืื ืืงืฉืช ืจืฉืช ืขื axios ืืื ืืืืื 100 ืืืื ืฉื ืืืช ืืืืืงืื ืืช ืืืืืงื ืืชืฉืืื. ืืื ืืื ืืืืืช ืืืืงื 100 ืืืื ืฉื ืืืช? ืืคื ืืื ืืืืื ืืืฉืื ืืื ืืงืืืื 46a9639. ืื ืืืืืงืืช ืขื ืืืชื ืงืืืื ืืฉืชืืฉื ื setTimeout ืขื ืืื ืืืชื ื ืฉื 0, ืืื ืืืงื ืื ืจืื ื ืืฉืื ืืื ืคืขื ืืืืืชื ืงืืืื ืื ืืืืืงืืช ืฉืืืื setTimeout ืขืื ืืืื ืืืชื ื 100 ืืืื ืฉื ืืืช.
ืืื ืฉืืื ืืืชืจ ืืขื ืืื ืช ืืื ืืื ืืืื ืืืฉืชืืฉ ื setTimeout ืฉื. ืืจื ืืช ืืืชื ืืืืงื ืืคืฉืจ ืืชืงื ืืฆืืจื ืืืชืจ ืืขืืื ืืืืฆืขืืช ืืืืช ืืงืื ืืืงืื ืืืชืืื (ืืืืืจ ืืืจื ื then). ืืงืืฆืืจ ืืืงืื:
it('should provide succinct object to then', function (done) {
axios('/foo').then(function (response) {
expect(typeof response).toEqual('object');
expect(response.data.hello).toEqual('world');
expect(response.status).toEqual(200);
expect(response.headers['content-type']).toEqual('application/json');
expect(response.config.url).toEqual('/foo');
done();
});
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: '{"hello":"world"}'
});
});
});
ืืชืฉืืื ืืืขืชื ืืื ืฉืฉืื ืื ืืื ื ืืื ืืื ืืืชืจ ืืคืืื - ืืืื ืืคืงืืืืช ืื ืขืืฉืืช ืืืืืง ืืช ืื ืฉืื ื ืืืฉื ืฉืื ืขืืฉืืช, ืืืื ื setTimeout ืืื ืฉื ืืกืืื ืืกืืืืช, ืืืื ืืืื ื ืืืงืืจื ืขื ื setTimeout ืืืคื ืืืงืจื ืงืฆื ืฉืื ื ืื ืจืืื ืขืืฉืื. ืืืชืจ ืงื ืืกืืจ ืืช ืืืขืื ืืืืชื ืืื ื ืื ืืฆืืชื ืืช ืืงืื.
ืืื ืืฉ ืฉืชื ืืขืืืช ืืืืฉื ืืืืช:
1. ืื ืื ืืืื ื ืฉืื ืืฆืืชื ืืช ืืืืืงื ืืฉ ืกืืื ืืงืืจืืช (ืื ืืืชื ืกืืื), ืื ืื ื ืื ืืืืข ืื ืืื ืืื ืืฆืืื ืืืฆืื ืืืชื ืื ืืฉืืืจ ืขืืื ืจืง ืืืกืืฃ "ืงืกื ืืคื" ืืงืื. ืขืืฉืื ืื ืืชืื ืชืช ืืืฉื ืฉืชืืืข ืืฆืืืช ืชืจืื ืฉื setTimeout ืืื ื ืืฆื ืืื ืืืืืงืืช ืืชืขืชืืง ืืืชื ืื, ืืื ืืืืจื ืืื ืืืื ื ื ืืื ืืืืืื ืฉืืืช ืืืจื ืื ืืื ื ืืขืฉืืช ืืืจืื ืืืจืืช ืฉืืืื ืืื ืืืจ ืืืื ืื.
2. ืืฉืื ื ื ืฉืืจ ืืืืชื ืืื ืื ืฉื ืงืื ืื ื ืื ื ืืชื ืืขืฆืื ืืช ืืืืคืฆืื ืื ืกืืช ืจืขืืื ืืช ืืืฉืื ืืืืืื ืืื.
ืืฉืืชื ืจืืืื ืงืื ืื ืืืืื ื ืืื ืืขื ืืืืฉืืจ ืืืืชื ืืื ื ืื "ืืื ืืฆืืชื ืืืชื". ืื ืฆืจืื ืืฉืืช ืืื ืกืืช ืืืฆืื ืืช ืืืืืื ืืืกืืืืช ืืืืจืื, ืืื ืืกืืฃ ืืืจื ืฉืืืฆืืื (ืื ืื ืื ืืืฆืืื), ืืืชืจ ืืจืฆืื ืืืจืื ืงืื ืืืืฉ ืืื ืฉืืืื ืืื ืืืชืจ.1 419
# ืืืื ืื ื ืฉืืจ?
ืจืื ืืืื ืืืชืืืช ืงืื ืื ืื ื ืืืคืฉืื ืืื ืืืจืื ืืืืจืื ืืขืืื: ืืืื ืกืคืจืืืช ืงืื ืชืขืืืจ ืื ืืืชืงืื ืืืชืจ ืืืจ, ืืื ืืชืงื ืืช ืืืื, ืืื ืืืชืื ืงืื "ื ืงื" ืฉืืืืืง ืืขืื ืืืืจื ืืื.
ืืื ืืงื ืงืื ืฉืื ืฉืื ืืคืขืืื ืฉืืืืื ืืื ืืฉืืืจ ืืืจืื ืืืืื ื, ืจืง ืืฉืืื ืืจืืืช ืืื ืื ื ืฉืืจ: ืืื ืื ื ืืืจื ืืงืื ืืื ืื ืืขืืื? ืืื ืื ื "ืื ืงื" ืืช ืืืื ืฉืืฆืืชื? ืืืื ืคืืฆ'ืจ ืื ื ืฆืจืื ืืืืกืืฃ ืืืขืจืืช ืืื ืฉืื ืืืืืื ืืืืื?
ืืืืจื ืืื ืืื ืฉื ืืื ืืืชืจ ืืืืื ืืืฉืืืจ ืงืื, ืื ืืืื ืื ื ืื ืืืชืจ ืงื ืืืชืื ืงืื ืืฆืื ืืืืืื ืข ื Code Smells ืฉืืืืืืื ืืืืืื ืืืืืจืื ืืืืช.
1 419
# ืกืืืื ืื ืืืจืืืื ืืื ืขื shift
ืืคืงืืื shift ื bash "ืืืืื" ืืช ืืืจืืืื ืืื ืืงืื ืืื ืฉืืืื, ืื ืฉ
$1 ื ืืืง, $2 ืืืคื ื $1, $3 ืืืคื ื $2 ืืื ืืืื. ืืกืงืจืืคื ืืื ืืฆืื ืืืืืช ืฉืืืืฉ ืคืฉืืื ื shift ืฉืคืฉืื ืืืคืืกื ืืช ืฉื ื ืืืจืืืื ืืื ืืจืืฉืื ืื ืฉืงืืืื:
#!/bin/bash
echo $1
shift
echo $1
ืืจืืง ืคืฉืื ืขื shift ืืื ืืืืืฉ ืืืืื ืืฆืืจื ืจืงืืจืกืืืืช ืืกืงืจืืคื bash. ืืืืืื ืื ืื ื ืจืืฆื ืืืืคืืก ืืช ืื ืืืจืืืื ืืื ืฉืืกืงืจืืคื ืงืืื ืื ื ืืืื ืืืืคืืก ืืื, ืืืคืขืื shift ืืื ืืืคืขืื ืืช ืืืชื ืืกืงืจืืคื ืืฆืืจื ืจืงืืจืกืืืืช:
#!/bin/bash
[[ $# == 0 ]] && exit 0
echo $1
shift
exec $0 "$@"
ืื ืืืืจื ืืืืชืจืช - ืื ืื ื ืจืืฆื ืืกืืื ืืช ืื ืืืจืืืื ืืื ืฉืืกืงืจืืคื ืงืืื ืื ื ืืืื ืื ืกืืช ืฉืื ืืจืงืืจืกืื, ืืืคืขื ืื ื ืืขืืืจ ื shift ืืช ืืืกืคืจ 2, ืื ืฉืืืจื ืื ืืืืื ืืช ืืืจืืืื ืืื ืืฉื ื ืืงืืืืช:
#!/bin/bash
if [[ $# == 1 ]]
then
echo $1
exit 0
fi
(( sum = $1 + $2 ))
shift 2
exec $0 $sum "$@"
ืืืืจืืช ืฉืจืงืืจืกืืืช ืืกืงืจืืคืืื ืืืืืืช ืืืืืช ืจืขืืื ืืขื ืืื, ืืื ืืฉืืืืฉืื ืืืืืชืืื ืืืืืขืืืื ื shift ืืื ืืคืืขื ืื ืคืจืืืจืื. ื ืชืืื ื ืืชืืื ืืช ืืืื:
while getopts "c:o:l" opt; do
case $opt in
c)
COUNT=$OPTARG;;
o)
OUTFILE=$OPTARG;;
l)
PADDING=1;;
esac
done
shift $((OPTIND-1))
ืืชืืื ืืช ืืฉืชืืฉื ื getopts ืืื ืืคืขื ื ืืช ืื ืืืจืืืื ืืื ืฉืืชืืืืื ืืืื ืืกืื, ืืืื ืืช ืืคืจืืืจืื ืฉ"ืชืคืกื" ืขืจืืื ืืืจืืื (ืืืงืจื ืฉืื ื c ื o), ืืื "ืืืืื" ืืช ืื ืืืจืืืื ืืื ืืื ืืืืคืืจ ืืื ืืื ืฉืคืืขื ืื ืขื ืืื getopts ืื ืฉืืืฉื ืืงืื ืืืื ืืขืืื ืขื $1, $2 ืืื ืืืื.
ื .ื. ืืืจืืช ืฉืจืงืืจืกืืืช ืื ืืืฃ, ืฉืืื ืืืืืจ ืฉื bash ืืคืฉืจ ืืจืืฅ ืขื ืื ืืืจืืืื ืืื ืขื ืืืืืช for ืคืฉืืื - ืจืง ืฆืจืื ืืืืชืจ ืขื ื in. ืืืืืื ืืืฉืื ืกืืื ืฉื ืื ืืืจืืืื ืืื ืืืื ืคืฉืื:
#!/bin/bash
for arg
do
(( sum += arg ))
done
echo $sum1 419
# ืงืจืืื ืขื read ื Pipe ื Bash
ืืคืงืืื read ืงืืจืืช ืฉืืจื ืืืงืื ืืกืื ืืจืื, ืฉืืืจืช ืืืชื ืืืืืื (ืขื ืชื ืืืคืจืื ืืืฉืชื ื
IFS) ืืฉืืืจืช ืืช ืืชืืฆืื ืืืฉืชื ื ืืื ืื ืืืชืจ ืฉืืช ืฉืื ืืื ืืงืืืช ืืืคืขืื.
ืืื ืืงืื ืืื ืงืืจื ืืช ืืฉืืจื ืืจืืฉืื ื ืืืงืืืฅ /etc/shells ืืฉืืืจ ืืืชื ืืืฉืชื ื ืืฉื first_line:
read first_line < /etc/shells
ืืืงืื ืืื ืงืืจื ืจืง ืืช ืืืืื ืืจืืฉืื ื ืืืืชื ืงืืืฅ ืืฉืืืจ ืืืชื ืืืฉืชื ื first_word:
read first_word rest < /etc/shells
ืงื ืืฉืืื ืฉืืืชื ืืืืช ืฉื read ืืฉืืืื | ืืื ื ืืื ืืืืืืืืืช, ืืื ืื ืืืื read. ืื ืคืขื ืฉืื ืื ื ืืคืขืืืื ืคืงืืืืช ืืชืื Pipeline, ืืืฉ ืคืืชื ืชืช-ืืขืืคืช (Sub Shell) ืืืืฆืข ืืช ืืคืงืืืืช ืืชืืื. ืืืขืื ืืื ืฉืืฉืชื ืื ืฉืืืืืจืื ืืืืชื Sub Shell ืืืืืงื ืืฉื Sub Shell ืืกืชืืื, ืืืืืจ ืืืฆืืื ืื Pipeline. ืืคืงืืื ืืืืช ืืืืืื ืื ืืืงืืช ืืช ืืืืื ืืจืืฉืื ื ืืืคืื ืฉื wc /etc/shells ืืชืื ืืืฉืชื ื lines:
wc /etc/shells | read lines
ืืืืืจ ืืื ืื, ืืื ืืืฉืชื ื ื ืฉืืจ ืืชืื Sub Shell ืื ืืืง ืืื ืฉืืฉืืจื ื ืืืจืช. ืืฉืืื ืฉ read ืชืืื ืืฉืืืจ ืืฉืชื ื ื Shell ืื ืืืื ืฉืื ืืื ืืืืืช ืืืืืช ืืืคืขืืช ืืื ื, ืืืืืจ ืื ืืฆื ืืืื ืฉื ืกืืื Pipe. ืืืฆื ืืื ืื ื ืฆืจืื ืืืฉืชืืฉ ืืคืงืืืช <() ืืื ืืืจืืฅ ืคืงืืื ืืืฉืืืจ ืืช ืืคืื ืฉืื ืืชืื File Handle, ืืื ืืขืืจืช ืืคื ืืืช ืงืื ืจืืืื ืื ื ืืืื ืืืขืืืจ ืืช ืืฉืืจื ืืจืืฉืื ื ืืืืชื File Handle ื read:
read lines words chars rest < <(wc /etc/passwd)1 419
# ืืืืื ืืืืืืื ืืืืชืจ
ืืืืื ื ืฉืืืื ืืืืื ืืืืืืื ืืืืชืจ ืืฉืืชืคืช ืืจืื ืืื ืฉืื ืืืจืื ืชืืืื ืืืืืื. ืืืฃ ืืืฉืื ืฉืื ืจืง ืืกื ืืื ืืืื ืืืชื ืืืืืจืื ืืืืช ืืืคื ืืืจ ืืืืืฃ ืืขืืื, ืฉืื ืืืจื ืืืคื ืืื ืืืืื ืืขืกืงื ืฉืื ืืขืกืงืื ืืื ืืืจืืืื ืื ืฉืงืืจืก ืืืืืจ ืืื ืงืื ืชืืืืจืื ืฉืืื ืืขืืืจ ืืื ื ืจืืืื ืก ืืื ื ืืชื ืื ืืช ืืืืื ืืืืืื ืืืืชืจ ืืขืืื ืขื ืืื.
ืืืืื ื ืืืืช ืืกืืืช ืืืชื ื ืืฉื ื ืืงืืืืช:
1. ืืชืืืืช ืืืืืื, ืืฉืืื ืื ื ืขืืืื ืืช ืืืืื ืืืืื ืขื ืื ืืืืืจ, ืืืืืื ืืืื ืืืืื ืืื ืจืง ืืืืื. ืื ืืืงืืื ืืืืื ืืืืื ืืืจืื ืฉืื ืืื ืืืฉื ืืื, ืืืื ืจืื ืืืืคืื ืฉืืชื ื ืคืฉืื ืื ืืืื ืจืืืื ืืืื ืืืชืืืืื.
2. ืืืืฉื ืืืืืื ืืฉืื ืื ื ืืืจ ืื ืืชืืืืื ืืืืื ืขื ืื ืืืืืจ, ืคืขืจื ืืจืืืช ืืืจืืื ืืืืืื ืืืฉ ืืืืงืืจืชืืืช, ืืงืฉื ืืจืืืช ืืช ืืืขืืืืช ืฉื ืืืชื ืืืกืืจืื.
ืื ืงืฆืช ืืื ืืืคืืก ืืืืจืืืช - ืชืืื ืืืื ืืื ืื ืืช ืืจืื ืขื ืืืจืื ืงืฆืช ืืืชืจ ืืืืื ืืืืคื ืฉืืชื ื ืืฆื. ืืื ืืฆืืข ืืื ืืื ืืืงืฉืื ืืื ืฉืื ืฉืื ืื ื ืืืื ืื ืืืชื ืืืืืืื ืืืืืช ืืืงืืจืชืืื ืืืคืืื, ืื ืืืฉ ืืืงืืจืช ืืื ืืืคืฉืจ ืื ื ืืืืฉื ืืืืืช ืื ืืช ืืืขืืืืช ืฉืื ื ืืืืืื ืืื. ืืื ืืืคืฉ ืืืืจื ืืืืื ืืืืื, ืืืคืฉ ืขืื ืืงืืจืืช ืืืืื ืืื, ืืืฉืื ืืช ืืืืจืื ืืืืืื ืืื ืืงืืจ ืื ืืืง ืืืชืืืื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
