ক্রিয়ামূলক ভাষায় UI নিদর্শন


11

আমি ClojureScript দিয়ে ফিডিং শুরু করতে চাই, তবে আমি কিছু বিষয় নিয়ে অবাক হয়েছি। আমার সমস্যাটি হ'ল যখন আপনি কার্যকরীভাবে কাজ করার চেষ্টা করছেন তখন ব্যবহারকারীর ইন্টারঅ্যাকশন থেকে রাষ্ট্রীয় পরিবর্তনগুলি মোকাবিলা করার একটি ভাল উপায়।

আমাকে কয়েকটি উদাহরণ দিতে দিন। ব্রাউজারে চলমান অ্যাপ্লিকেশনগুলি আমার মনে রয়েছে তবে আমি মনে করি সমস্যাটি আরও সাধারণ। অবশ্যই কিছু পরিবর্তন হবে - কমপক্ষে DOM। তবে আমি কীভাবে অপ্রয়োজনীয় ডেটা স্ট্রাকচারের সাথে কাজ করতে বাকি কোডটি সংগঠিত করতে পারি তা জানতে চাই।

1) বলুন আমি কিছু ইভেন্ট কিছু ডিওএম অবজেক্টের সাথে সংযুক্ত করতে চাই। বেশিরভাগ কার্যকরী উপায়ে এটি করা শক্ত নয়: আপনি নোডটি তৈরি করার সময় আপনি বিভিন্ন ইভেন্ট হ্যান্ডলারের সাথে একটি হ্যাশ মানচিত্র সংযুক্ত করেন। তবে আপনি ইভেন্টের প্রতিনিধি যেখানে ব্যবহার করছেন সে ক্ষেত্রে বিবেচনা করুন। তারপরে আপনি যখন একটি নতুন নোড তৈরি করবেন, আপনি কিছু প্যারেন্ট নোডের সাথে ইভেন্ট হ্যান্ডলার সংযুক্ত করতে পারেন যা সম্ভবত ইতিমধ্যে বিদ্যমান। সুতরাং আপনাকে ইতিমধ্যে বিদ্যমান নোডের সাথে সম্পর্কিত হ্যাশটি পরিবর্তন করতে হবে।

2) বলুন আমি কোনও ইনপুট ফিল্ডের জন্য একটি স্ব-পরিপূর্ণ মডিউল ডিজাইন করছি। প্রতিবার ব্যবহারকারী কোনও কী চাপলে আমি পরামর্শগুলি পেতে কোনও সার্ভারে কল করতে পারি। এটা সহজ. তবে এখন ধরুন আমি এটি কিছুটা অনুকূল করতে চাই। যদি আমি সমস্ত ফলাফলের সাথে মিল খুঁজে পাই তবে সব ফলাফলের সাথে মিলে fooআবার জিজ্ঞাসা করার কোনও মানে নেই foobar; আমি শুধু প্রাক্তন ফিল্টার করতে পারেন। সুতরাং আমার একধরনের ক্যাশে তৈরি করা দরকার। এই ক্যাশে প্রতিবার ব্যবহারকারী নতুন শব্দ প্রবেশ করানো হবে যা পূর্বে প্রবেশ করা শব্দের সুপারস্টেট নয়। আবার: আমি কীভাবে মডেল করব? সর্বাধিক যুক্তিযুক্ত উপায়টি হ্যাশ ম্যাপের ফলাফলগুলিতে ম্যাপিংয়ের শব্দ বলে মনে হচ্ছে তবে এটি পরিবর্তনযোগ্য হওয়া উচিত।

আপনি কি এমন কিছু নিদর্শন প্রস্তাব করতে পারেন যা ব্যবহারকারীর ডিজাইনের সাথে ব্যবহারকারীর ইন্টারঅ্যাক্টের কারণে পরিবর্তনগুলি অন্তর্ভুক্ত করা আরও সহজ করে তুলবে?


4
"ফাংশনাল রিঅ্যাকটিভ প্রোগ্রামিং" অনুসন্ধান করুন।
ড্যান_ওয়াটারওয়ার্থ

এটি একেবারে একই জিনিস নয়, তবে (সাইড-এফেক্ট ফ্রি) এক্সএসএলটি টেমপ্লেটগুলি যা কোনও ব্যবহারকারী দ্বারা প্রবর্তিত DOM ইভেন্টের সাথে মেলে আমরা স্যাকসন-সিইতে একই ধরণের সমস্যার মুখোমুখি। আমি এটি দেখতে যেভাবে দেখতে চাই তা হ'ল এক্সএসএলটি নয় বরং ব্যবহারকারী রাষ্ট্রের পরিবর্তনের সূত্রপাত করছে that's কীটি ব্যবহারকারীর ইন্টারঅ্যাকশন পরিচালনা করে এবং তারপরে রাষ্ট্রের পরিবর্তনগুলি বাকী অংশ থেকে খুব আলাদা তা নিশ্চিত করা।
pgfearo

@pgfearo আপনার কীভাবে কোডটি সংগঠিত করবেন এমন কোনও পরামর্শ রয়েছে যাতে ব্যবহারকারীর ইন্টারঅ্যাকশনটি বাকী অংশ থেকে যথেষ্ট আলাদা রাখা যায়?
আন্দ্রেয়া

কার্যকরী প্রোগ্রামিং রাষ্ট্রহীন হওয়ায় আপনি যখন কার্যকরীভাবে কাজ করছেন তখন রাষ্ট্র পরিবর্তনগুলির সাথে মোকাবিলা করার ভাল উপায় নেই ।
ওল্ড প্রো

3
@ ওল্ড প্রো: এটি সম্পূর্ণ সঠিক নয়। ফাংশনাল প্রোগ্রামিংয়ের সময় আপনি পার্শ্ব-প্রভাবের পরিবর্তে ফাংশন অ্যাপ্লিকেশন ব্যবহার করে একটি গণনা সংজ্ঞায়িত করেন, শেষ পর্যন্ত আপনাকে কোথাও গণনার ফলাফল সংরক্ষণ করতে হবে। এফপির ফোকাস হ'ল রাষ্ট্রের ব্যবহারকে সর্বনিম্ন সীমাবদ্ধ করার দিকে, যেখানে অত্যাবশ্যক প্রোগ্রামিংয়ে রাষ্ট্রকে ক্রমবর্ধমানভাবে রূপান্তর করা (পার্শ্ব প্রতিক্রিয়া দ্বারা) একটি গণনা সংজ্ঞায়নের প্রাথমিক সরঞ্জাম tool
জর্জিও

উত্তর:


3

মন্তব্যে উল্লিখিত হিসাবে আপনার "ফাংশনাল রিঅ্যাকটিভ প্রোগ্রামিং" সন্ধান করা উচিত এবং আপনার http: //prog21 . دادgum.com/archives.html এ কিছু পোস্ট পড়া উচিত । আরও সুনির্দিষ্টভাবে আপনার সম্ভবত " আপনার প্রযুক্তির প্রেমে পড়ে যাবেন না ", " প্রোগ্রামটি লিখুন আপনি কীভাবে প্রোগ্রাম করবেন তা শিখুন ", " ফাংশনাল প্রোগ্রামিং কাজ করে না (এবং এটি সম্পর্কে কী করা উচিত) ", এবং সম্ভবত একটি পড়া উচিত কিছু অন্যান্য।

সম্পূর্ণরূপে পরিবর্তন এবং পার্শ্ব-প্রতিক্রিয়া এড়ানো কার্যত অসম্ভব। এমনকি হাস্কেল প্রোগ্রামাররা কিছুক্ষণের জন্য unsafePerformIOনির্দিষ্ট কিছু কাজ করার জন্য খাঁটি কার্যকরী, পার্শ্ব-প্রতিক্রিয়া মুক্ত, স্ট্যাটিকালি টাইপ করা দৃষ্টান্তটি ভেঙে ফেলতে ব্যবহার করবে । আপনি যদি এই প্রকল্পটিকে বিশুদ্ধভাবে একাডেমিক অনুশীলন হিসাবে চালাচ্ছেন তবে ঠিক এগিয়ে যান এবং যতটা সম্ভব পার্শ্ব প্রতিক্রিয়া এবং পার্শ্ব-প্রতিক্রিয়াগুলি এড়িয়ে যান তবে আপনি যদি একটি সময়সীমার মধ্যে ব্যবহারযোগ্য পণ্য গড়ার চেষ্টা করছেন তবে কোনও প্যাটার্ন আপনাকে রক্ষা করতে যাচ্ছে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.