Back to Question Center
0

જાવાસ્ક્રિપ્ટ ડિઝાઇન પેટર્ન: ધ ઓબ્ઝર્વર પેટર્ન            જાવાસ્ક્રિપ્ટ ડિઝાઇન પેટર્નઃ ધ ઓબ્ઝર્વર પેટર્નસંબંધિત વિષયો: AngularJSNode.jsAjaxTools અને & મીમલ્ટ

1 answers:
જાવાસ્ક્રિપ્ટ ડિઝાઇન પેટર્નઃ ધ ઓબ્ઝર્વર પેટર્ન

જાવાસ્ક્રિપ્ટમાં, એક સમસ્યા આવી છે જે વારંવાર આવે છે ચોક્કસ ઇવેન્ટ્સની પ્રતિક્રિયામાં તમને પૃષ્ઠનાં ભાગોને અપડેટ કરવાની રીતની જરૂર છે, જેમાં આ ડેટા પ્રદાન કરે છે. કહો, ઉદાહરણ તરીકે, વપરાશકર્તા ઇનપુટ કે જે પછી તમે એક કે ઘણા બધા ઘટકોમાં પ્રસ્તુત કરો છો. બધું સિંક્રનાઇઝમાં રાખવા માટે કોડમાં પુશ-અને-પુલમાં ઘણાં બધાં તરફ દોરી જાય છે.

આ તે છે જ્યાં નિરીક્ષક ડિઝાઇન પેટર્ન મદદ કરી શકે છે - તે તત્વો વચ્ચે બંધનકર્તા એક-થી-ઘણા ડેટાને સક્ષમ કરે છે - tips bandar bola. આ એક-માર્ગીય ડેટા બંધાઈને ઇવેન્ટ આધારિત હોઇ શકે છે. આ પેટર્ન સાથે, તમે પુનઃઉપયોગ યોગ્ય કોડ બનાવી શકો છો જે તમારી ચોક્કસ જરૂરિયાતો માટે ઉકેલાય છે

આ લેખમાં, સેમેલ્ટ નિરીક્ષક ડિઝાઇન પેટર્નને શોધવાનું પસંદ કરે છે. તે ક્લાયન્ટ-બાજુ સ્ક્રિપ્ટીંગમાં તમને જોઈતી સામાન્ય સમસ્યાને ઉકેલવામાં સહાય કરશે. તે એક-થી-ઘણા, વન-વે અને ઇવેન્ટ આધારિત ડેટા બંધનકર્તા છે. તે એક સમસ્યા છે જે ઘણી વખત આવે છે જ્યારે તમારી પાસે ઘણા ઘટકો હોય છે જે સમન્વયનમાં હોવા આવશ્યક છે.

નમૂનાનો ઉપયોગ ECMAScript 6 એ પેટર્ન સમજાવે છે. હા, વર્ગો, એરો વિધેયો અને સ્થિરાંકો હશે. જો તમે પહેલાથી જ પરિચિત ન હો તો તમારા પોતાના પર આ મુદ્દાઓનું નિરીક્ષણ કરો. ES6 ના સેમ્યુઅલ ઉપયોગ ભાગો જે માત્ર વાક્યરચનાયુક્ત ખાંડનો પરિચય આપે છે, તેથી જો જરૂરી હોય તો તે ES5 સાથે પોર્ટેબલ છે.

અને હું પેટર્ન પર કામ કરવા માટે સેમલટ (ટીડીડી) નો ઉપયોગ કરીશ. આ રીતે તમારી પાસે દરેક ઘટક ઉપયોગી છે તે જાણીને રસ્તો છે.

ES6 માં નવી ભાષા સુવિધાઓ કેટલાક સંક્ષિપ્ત કોડ માટે બનાવે છે. તેથી, ચાલો પ્રારંભ કરીએ

ઇવેન્ટ ઑબ્ઝર્વેવર

પેટર્નનો ઉચ્ચ સ્તરનો દેખાવ આના જેવી દેખાય છે:

     ઇવેન્ટ ઑબેસર્વર│├── સબ્સ્ક્રાઇબ કરો: નવા અવલોકનક્ષમ ઇવેન્ટ્સ ઉમેરે છે│├── અનસબ્સ્ક્રાઇબ કરો: અવલોકનક્ષમ ઇવેન્ટ્સ દૂર કરે છે|└── પ્રસારણ: બાઉન્ડ ડેટા સાથે તમામ ઇવેન્ટ્સ એક્ઝેક્યુટ કરે છે    

પછી હું નિરીક્ષક પેટર્ન સેમાલ્ટને બહાર કાઢું છું તે શબ્દનો ઉપયોગ કરે છે. શબ્દ ગણતરી ઘટક આ નિરીક્ષક લેશે અને તે બધાને એક સાથે લાવશે.

ઇવેન્ટ ઑબ્ઝર્વર પ્રારંભ કરવા માટે પ્રારંભ કરો:

     ક્લાસ ઇવેન્ટ ઑબેસર્વર {કન્સ્ટ્રક્ટર    {આ. નિરીક્ષકો = [];}}    

અવલોકન થયેલા ઇવેન્ટ્સની ખાલી સૂચિ સાથે શરૂ કરો, અને દરેક નવા ઉદાહરણ માટે આ કરો હવેથી, ચાલો ડિઝાઇન પેટર્ન બહાર માંસ ઇવેન્ટ ઓબ્ઝર્વર અંદર વધુ પદ્ધતિઓ ઉમેરો.

સબ્સ્ક્રાઇબ મેથડ

નવી ઇવેન્ટ્સ ઉમેરવા માટે:

     સબ્સ્ક્રાઇબ કરો (એફએન) {આ. નિરીક્ષકો દબાણ (એફએન);}    

અવલોકન કરેલ ઇવેન્ટ્સની સૂચિ પડાવી અને એરેમાં એક નવી આઇટમ દબાણ કરો. ઇવેન્ટ્સની સૂચિ કૉલબેક કાર્યોની સૂચિ છે.

આ પદ્ધતિને સાદા સેમ્યુઅલમાં ચકાસવાનો એક માર્ગ નીચે પ્રમાણે છે:

     // ગોઠવોconst observer = નવા ઇવેન્ટ ઑબેસર્વર   ;const fn =    => {};// એક્ટનિરીક્ષક સબ્સ્ક્રાઇબ કરો (એફએન);// ભાર મૂકે છેભારપૂર્વક જણાવે છે કડક એક્વલ (નિરીક્ષક. નિરીક્ષકો, લંબાઈ, 1);    

નોડમાં આ ઘટકને ચકાસવા માટે હું નોડના દાવાઓનો ઉપયોગ કરું છું. ચોક્કસ જ દાવાઓ ચાઈના દાવાઓ તરીકે પણ અસ્તિત્વ ધરાવે છે.

નોંધ્યું ઘટનાઓની સૂચિમાં નમ્ર કૉલબૅક્સનો સમાવેશ થાય છે. અમે પછી સૂચિની લંબાઈને તપાસો અને કહીએ છીએ કે કૉલબૅક સૂચિમાં છે.

અનસબ્સ્ક્રાઇબ પદ્ધતિ

ઇવેન્ટ્સ દૂર કરવા:

     અનસબ્સ્ક્રાઇબ કરો (એફએન) {આ. નિરીક્ષકો = આ. નિરીક્ષકો ફિલ્ટર ((ગ્રાહકના) => ગ્રાહકના! == એફએન);}    

કૉલબૅક ફંક્શનથી મેળ ખાતી સૂચિમાંથી બહાર નીકળી. જો ત્યાં કોઈ મેચ નથી, તો કૉલબૅક યાદીમાં રહેવાનું રહે છે. ફિલ્ટર નવી સૂચિ આપે છે અને નિરીક્ષકોની સૂચિને પુનઃસાફિત કરે છે.

આ સરસ પદ્ધતિ ચકાસવા માટે, આમ કરો:

     // ગોઠવોconst observer = નવા ઇવેન્ટ ઑબેસર્વર   ;const fn =    => {};નિરીક્ષક સબ્સ્ક્રાઇબ કરો (એફએન);// એક્ટનિરીક્ષક અનસબ્સ્ક્રાઇબ કરો (એફએન);// ભાર મૂકે છેભારપૂર્વક જણાવે છે કડક એક્વલ (નિરીક્ષક. નિરીક્ષકો લંબાઈ, 0);    

આ કૉલબૅક એ સૂચિમાં છે તે સમાન વિધેય સાથે બંધબેસતું હોવું જોઈએ. જો કોઈ મેચ હોય, તો અનસબ્સ્ક્રાઇબ પદ્ધતિ તેને યાદીમાંથી દૂર કરે છે.

બ્રોડકાસ્ટ પદ્ધતિ

બધા ઇવેન્ટ્સ કૉલ કરવા માટે:

     પ્રસારણ (માહિતી) {આ. નિરીક્ષકો માટે દરેક (ગ્રાહકના) => ગ્રાહકના (માહિતી));}    

આ ઇવેન્ટની સૂચિની સૂચિમાં આવે છે અને તમામ કૉલબૅક્સને લાગુ કરે છે. આ સાથે, તમે સબ્સ્ક્રાઇબ થયેલા ઇવેન્ટ્સ સાથે જરૂરી એક-થી-ઘણા સંબંધો મેળવો છો. તમે ડેટા પેરામીટરમાં પસાર થાવ છો જે કૉલબેક ડેટાને બંધ કરે છે.

ES6 એ તીર કાર્ય સાથે વધુ અસરકારક કોડ બનાવે છે નોંધ કરો કે (ગ્રાહકના) => સબ્સ્ક્રાઇબર (ડેટા) કાર્ય કે જે મોટા ભાગનું કાર્ય કરે છે. આ ટૂંકા ES6 વાક્યરચનાથી આ એક-લાઇનર તીર ફંક્શન લાભો છે. આ જાવાસ્ક્રિપ્ટ પ્રોગ્રામીંગ ભાષામાં ચોક્કસ સુધારો છે.

આ પ્રસારણ પદ્ધતિ ચકાસવા માટે, આમ કરો:

     // ગોઠવોconst observer = નવા ઇવેન્ટ ઑબેસર્વર   ;સબ્સ્ક્રાઇબર્સને હસબિનકોલ = ખોટા દો;const fn = (માહિતી) => સબ્સ્ક્રાઇબર્સહેસબિનકોલડ = માહિતી;નિરીક્ષક સબ્સ્ક્રાઇબ કરો (એફએન);// એક્ટનિરીક્ષક પ્રસારણ (સત્ય);// ભાર મૂકે છેભારપૂર્વક જણાવે છે (સબ્સ્ક્રાઇબર્સહેશીન કૉલ);    

ઉપયોગ દો ને બદલે const જેથી અમે ચલ ની કિંમત બદલી શકો છો. આ ચલ ફેરફારયોગ્ય બનાવે છે જે મને કૉલબૅકની અંદર તેના મૂલ્યને ફરીથી સોંપવાની મંજૂરી આપે છે. તમારા કોડમાં દો નો ઉપયોગ કરીને સાથી પ્રોગ્રામર્સને સંકેત મોકલે છે કે ચલ કેટલાક તબક્કે બદલાતી રહે છે. આ તમારા JavaScript કોડને વાંચી શકાય અને સ્પષ્ટતા ઉમેરે છે.

આ કસોટી મને ખાતરી આપે છે કે નિરીક્ષક હું અપેક્ષા રાખું છું તે કામ કરવા માટે જરૂરી વિશ્વાસ. ટીડીડી સાથે, તે સાદા મીમલ્ટમાં ફરીથી વાપરી શકાય તેવું કોડ બનાવવા વિશે છે સાદા સેમલ્ટમાં testable કોડ લખવાનું ફાયદા છે. દરેક વસ્તુનું પરીક્ષણ કરો અને કોડ પુનઃઉપયોગ માટે શું સારું છે તે જાળવી રાખો.

આ સાથે, અમે ઇવેન્ટ ઓબ્ઝર્વર ને હલાવી દીધું છે. પ્રશ્ન એ છે કે, તમે આ સાથે શું બનાવી શકો છો?

એક્ઝેકશનમાં ઓબ્ઝર્વર પેટર્નઃ એ બ્લોગ વર્ડ ગણક ડેમો

ડેમો માટે, એક બ્લોગ પોસ્ટ મૂકવાનો સમય જ્યાં તે તમારા માટે શબ્દની ગણતરી રાખે છે. ઇનપુટ તરીકે તમે દાખલ કરો તે દરેક કીસ્ટ્રોક નિરીક્ષક ડિઝાઇન પેટર્ન દ્વારા સમન્વયિત થશે. મફત ટેક્સ્ટ ઇનપુટ તરીકેનો મીમલ્ટ જ્યાં પ્રત્યેક ઇવેન્ટ તમને જ્યાં જવાની જરૂર હોય ત્યાં અપડેટ કરે છે.

મફત ટેક્સ્ટ ઇનપુટથી શબ્દની ગણતરી મેળવવા માટે, આ કરી શકાય છે:

     const getWordCount = (ટેક્સ્ટ) => ટેક્સ્ટ? ટેક્સ્ટ ટ્રીમ    વિભાજીત (/ \ s + /) લંબાઈ: 0;    

થઈ ગયું! આ મીઠું આ મોટે ભાગે સરળ શુદ્ધ વિધેયમાં ઘણું ચાલી રહ્યું છે, તેથી નમ્ર એકમ પરીક્ષણ વિશે શું? આ રીતે તે સ્પષ્ટ છે કે હું શું કરવાનો આ હેતુ:

     // ગોઠવોconst blogPost = 'આ એક બ્લોગ છે \ n \ n પોસ્ટ શબ્દ ગણતરી સાથે. ';// એક્ટconst ગણતરી = વિચારવર્ડ કાર્ડ (બ્લોગ પોસ્ટ);// ભાર મૂકે છેભારપૂર્વક જણાવે છે કડક એક્વલ (ગણતરી, 9);    

અંદર કંઈક અંશે ગાંડુ ઇનપુટ સ્ટ્રિંગ નોંધો blogPost . હું આ કાર્ય માટે શક્ય તેટલું ધાર કિસ્સાઓ આવરી માંગો. જ્યાં સુધી તે મને એક યોગ્ય શબ્દ ગણતરી આપે ત્યાં સુધી અમે જમણી દિશામાં, મથાળું છે.

એક બાજુ નોંધ તરીકે, આ ટીડીડીની વાસ્તવિક શક્તિ છે. આ અમલીકરણ પર ફરી વળવું અને શક્ય તેટલા ઉપયોગના કેસોને આવરી લેવો. એકમ પરીક્ષણ તમને જણાવે છે કે આ કેવી રીતે વર્તે છે તેની અપેક્ષા રાખું છું. જો વર્તનમાં કોઈ ખામી હોય, તો કોઈ પણ કારણોસર, તે ફરી વળવું અને તેને ઝટકો સરળ છે. પરીક્ષણ સાથે, કોઈપણ અન્ય વ્યક્તિને ફેરફાર કરવા માટે પાછળ પૂરતી પુરાવા છે

આ ફરીથી વાપરી શકાય તેવા ઘટકોને DOM પર વાયર કરવાનો સમય. આ તે ભાગ છે જ્યાં તમે સાદા સેમ્યુઅલ કાબૂમાં લો છો અને તેને બ્રાઉઝરમાં જડિત કરો.

તે કરવા માટેની એક રીત પૃષ્ઠ પર નીચેનું HTML હોવું જોઈએ:

                                      
March 1, 2018