জাস্ট-ইন-টাইম (জিআইটি) বনাম অ্যাডুলার-এ-টাইম (এওটি) সংকলন ular


116

আমি এই ডকুমেন্টেশন উল্লেখ করছি এবং সংকলন ধারণা জুড়ে এসেছি। কেউ জেআইটি বা এওটি সংকলন ব্যবহার করতে পারে। যাইহোক, আমি এটি খুব সংক্ষিপ্ত পেয়েছি এবং বিশদে নিম্নলিখিত বিষয়গুলি জানতে হবে,

  • এই দুটি কৌশল মধ্যে পার্থক্য
  • কখন কী ব্যবহার করবেন সে সম্পর্কে সুপারিশ

উত্তর:


154

জেআইটি - টাইপস্ক্রিপ্ট এটি সম্পাদনের জন্য ঠিক সময়ে সংকলন করুন

  • ব্রাউজারে সংকলিত।
  • প্রতিটি ফাইল পৃথকভাবে সংকলিত।
  • আপনার কোড পরিবর্তন করার পরে এবং ব্রাউজার পৃষ্ঠাটি লোড করার আগে তৈরি করার দরকার নেই।
  • স্থানীয় উন্নয়নের জন্য উপযুক্ত।

এওটি - বিল্ড ফেজ চলাকালীন টাইপস্ক্রিপ্ট সংকলন করুন।

  • কমান্ড লাইনের (দ্রুততম) মাধ্যমে মেশিন নিজেই সংকলিত।
  • স্ক্রিপ্টগুলিতে এইচটিএমএল / সিএসএস ইনলাইন করে সমস্ত কোড একসাথে সংকলিত।
  • সংকলক স্থাপন করার দরকার নেই (কৌণিক আকারের অর্ধেক)।
  • আরও সুরক্ষিত, মূল উত্স প্রকাশ করা হয়নি।
  • উত্পাদন বিল্ড জন্য উপযুক্ত।

4
এছাড়াও, জাস্ট-ইন-টাইম সংকলন বিশেষত পুরানো অ্যান্ড্রয়েড ডিভাইসগুলিতে ব্যবহার করার সময় আমি খুব খারাপ পারফরম্যান্স পেয়েছি। এছাড়াও, প্রথম পৃষ্ঠার লোডে রেন্ডার-ফাঁকটি অনেক বড় (আপনার প্রকল্পের আকারের উপর নির্ভর করে 10 সেকেন্ড পর্যন্ত পুরানো Android ডিভাইসগুলিতে)।
ফেলিক্স হ্যাগস্পিল

29
টাইপস্ক্রিপ্ট ঠিক সময়ে সংকলিত হয় না, ব্রাউজার এটি করতে পারে না। উভয় ক্ষেত্রেই, টাইপস্ক্রিপ্ট বিল্ড প্রক্রিয়া চলাকালীন সংকলিত হয়।
রোবস্টে

4
@ রোবস্ট: এটি ঠিক আমাকে বিভ্রান্ত করেছে .. সময়ের আগে এবং ঠিক সময়ে যা সত্যই সংকলিত হয় .. (যদি টিজেএস অবিলম্বে সংকলিত হয়)। যখন আমি এক্সপ্লোরারটিতে একটি পৃষ্ঠার অনুরোধ করব তখন জাভাস্ক্রিপ্টটি ডাউনলোড হয়ে ব্রাউজারে কার্যকর করা হবে, টাইপডজেগুলির কোনওটি কি ব্রাউজারে আসার দরকার আছে ??? না, একেবারেই নয় ... তাই সময়ের আগে এবং ঠিক সময়ে কী সংকলিত হচ্ছে .. ?? এটি আসলে কৌণিক সংকলককে বোঝানো হয়েছে। এই লিঙ্কটি সমস্ত প্রশ্নের উত্তর দেবে: " কৌণিক.ই. //
ide

4
আমি কোনও বিশেষজ্ঞ নই তবে জেআইটি ব্যবহার করার সময় কৌনিক উত্সগুলি ব্রাউজারে প্রেরণ করা হয় এবং এটি অ্যাপ্লিকেশনটি সংকলন করবে। এটি আপনাকে গতিশীল স্টাফ রাখতে দেয় যা রানটাইমটিতে সংকলন করা দরকার। এওটি দিয়ে, সমস্ত কিছু প্রাক-সংকলিত তাই সার্ভার একটি সাধারণ জাভাস্ক্রিপ্ট ওয়েবসাইট প্রেরণ করছে। আপনি গতি সম্পাদন এবং লোডিংয়ের সময় অর্জন করেন।
রোবস্টে

4
@ লুকাসফোলার আপনার ব্রাউজারটি জাভাস্ক্রিপ্ট সংকলন করবে, টাইপস্ক্রিপ্ট নয়। এজন্য আপনার এখনও ng build
টিএসকে

66

যদিও এর কিছু উত্তর রয়েছে তবে আমি আমার কিছু অনুসন্ধানও যুক্ত করতে চাই, কারণ আসলে যা ছিল তা সব ক্ষেত্রেই সংকলিত হচ্ছেTS ->> JSরূপান্তর ঘটে যাওয়ায় আমি সত্যিই বিভ্রান্ত ছিলাম । আমি জেফের ব্লগ থেকে রেফারেন্স হিসাবে কিছুটা নিচ্ছি ।

জেআইটি

TSকোড ডেভেলপার দ্বারা লিখিত কম্পাইল করা হয় JSকোড। এখন, এই সংকলিত jsকোডটি আবার ব্রাউজারের মাধ্যমে সংকলিত হয়েছে যাতে htmlব্যবহারকারীর ক্রিয়া অনুসারে গতিময়ভাবে রেন্ডার করা যায় এবং সেই অনুসারে angular (উপাদানগুলির জন্য পরিবর্তনগুলি সনাক্তকরণ, নির্ভরতা ইনজেকশন) এর কোডগুলি রানটাইমেও উত্পন্ন হয়।

(ব্রাউজার সংকলকটি হ'ল অ্যাপ্লিকেশনটির নির্দেশাবলী এবং উপাদানগুলি, যার সাথে তাদের সম্পর্কিত HTML এবং CSS ব্যবহার করে এবং উপাদানগুলির কারখানাগুলি তাদের সমস্ত দৃশ্যের তৈরি যুক্তির সাথে দ্রুত স্ট্যাম্প আউট তৈরি করে))

যখন একটি কৌণিক 2 অ্যাপ্লিকেশনটি ব্রাউজারে বুটস্ট্র্যাপ হয়, তখন জেআইটি সংকলক রানটাইমের সময় অ্যাপ্লিকেশনটির উপাদানগুলি বিশ্লেষণ করতে এবং মেমরিতে কোড উত্পন্ন করতে প্রচুর কাজ করে work পৃষ্ঠাটি রিফ্রেশ হয়ে গেলে, সমস্ত কাজ যা করা হয়েছে তা ফেলে দেওয়া হয়, এবং জেআইটি সংকলক আবার কাজটি করে।

এওটি

TSকোড ডেভেলপার দ্বারা লিখিত কম্পাইল করা হয় JSকোড, এই js ইতিমধ্যে পাশাপাশি কৌণিক জন্য কম্পাইল করা হয়েছে । এখন, এই সংকলিত js কোডটি আবার ব্রাউজার দ্বারা সংকলিত হয়েছে যাতে htmlরেন্ডার করা যায়। তবে, এখানে ধরাটি হ'ল এর বৈশিষ্ট্যগুলি angularইতিমধ্যে AOTসংকলক দ্বারা যত্ন নেওয়া হয়েছে এবং তাই ব্রাউজারটি উপাদান তৈরি, পরিবর্তন সনাক্তকরণ, নির্ভরতা ইনজেকশন সম্পর্কে খুব বেশি চিন্তা করতে হবে না । তাহলে আমাদের আছে :

দ্রুত রেন্ডারিং

এওটি দিয়ে ব্রাউজারটি অ্যাপ্লিকেশনটির একটি প্রাক-সংকলিত সংস্করণ ডাউনলোড করে। ব্রাউজারটি এক্সিকিউটেবল কোড লোড করে যাতে এটি অ্যাপ্লিকেশনটি প্রথমে সংকলনের অপেক্ষা না করে অবিলম্বে অ্যাপ্লিকেশনটি রেন্ডার করতে পারে।

কম অ্যাসিনক্রোনাস অনুরোধ

সংকলকটি সেই অ্যাপ্লিকেশন জাভাস্ক্রিপ্টের মধ্যে বহিরাগত এইচটিএমএল টেমপ্লেট এবং সিএসএস স্টাইল শীটগুলিকে ইনলাইন করে, সেই উত্স ফাইলগুলির জন্য পৃথক অ্যাজাক্স অনুরোধগুলি সরিয়ে দেয়।

ছোট কৌণিক ফ্রেমওয়ার্ক ডাউনলোডের আকার

অ্যাপ্লিকেশনটি ইতিমধ্যে সংকলিত হয়ে থাকলে কৌনিক সংকলকটি ডাউনলোড করার দরকার নেই। সংকলক মোটামুটি আঙ্গুলের প্রায় অর্ধেক, তাই এটি বাদ দিয়ে নাটকীয়ভাবে অ্যাপ্লিকেশন পেলোড হ্রাস করে।

আগে টেমপ্লেট ত্রুটিগুলি সনাক্ত করুন

এওটি সংকলক ব্যবহারকারীদের দেখার আগে বিল্ড স্টেপ চলাকালীন টেমপ্লেট বাঁধার ত্রুটিগুলি সনাক্ত করে এবং প্রতিবেদন করে।

ভাল নিরাপত্তা

এওটি এইচটিএমএল টেম্পলেট এবং উপাদানগুলিকে ক্লায়েন্টের কাছে সরবরাহ করার আগেই জাভাস্ক্রিপ্ট ফাইলগুলিতে সংকলন করে। পড়ার মতো কোনও টেমপ্লেট নেই এবং ঝুঁকিপূর্ণ ক্লায়েন্ট-সাইড এইচটিএমএল বা জাভাস্ক্রিপ্ট মূল্যায়ন নেই, ইনজেকশন আক্রমণের সুযোগ কম রয়েছে।


বাকী পার্থক্য ইতোমধ্যে বেনিয়ামিন, নিসার এবং গৌরাঙ্গের বুলেট পয়েন্টগুলিতে coveredাকা রয়েছে।

আমার সঠিক নির্দ্বিধায়


5
ধন্যবাদ আপনার উত্তরটি পড়ার পরে আমি শেষ পর্যন্ত বুঝতে পারি এবং আমি সেগুলি অনেকগুলি পড়েছি।
মারিও সুবোটিক

24

বেনিয়ামিন ও নিসার এখানে কয়েকটি ভাল বিষয় উল্লেখ করেছেন। আমি এটি যোগ করতে হবে।

তাত্ত্বিকভাবে, এওটি উত্পাদনের উদ্দেশ্যে জেআইটির চেয়ে আকর্ষণীয় বিকল্প দেখায় তবে আমার সন্দেহ ছিল যে এওটি আসলেই এটির মূল্যবান কিনা!

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

এখানে চিত্র বর্ণনা লিখুন


20

জেআইটি (জাস্ট-ইন-টাইম সংকলন)

জাস্ট-ইন-টাইম (জেআইটি) এমন এক ধরণের সংকলন যা রানটাইমের সময় ব্রাউজারে আপনার অ্যাপ্লিকেশনটি সংকলন করে।

ng build
ng serve

এখানে চিত্র বর্ণনা লিখুন

এওটি (সময়ের সংকলন)

এগিয়ে যাওয়ার সময় (এওটি) এমন এক ধরণের সংকলন যা আপনার অ্যাপ্লিকেশনটি নির্মাণের সময় সংকলন করে।

ng build --aot
ng serve --aot

এখানে চিত্র বর্ণনা লিখুন


4
এই 2 পরিসংখ্যান মধ্যে পার্থক্য কি? ইন্ট্রো দরকার নেই?
মিঃ এএফ

সুতরাং মূলত এগিয়ে যাওয়ার সময়টি অ্যাডেড-অফ-রানটাইমের মতো।
আলী কাহেই

@ মিঃ এএফ কেবল লক্ষ্য করেছেন যে এখনও চিত্রগুলি একই রকম are
টিয়াগো মার্টিনস পেরেস

চিত্রগুলি দেখতে একই রকম তবে ভিন্ন। দ্বিতীয় চিত্রটিতে, সংকলনটি বিল্ড টাইমে ঘটেছিল, যা উল্লম্ব লাইন দ্বারা নির্দেশিত যা বিল্ড এবং রানটাইম ধাপগুলি পৃথক করে।
মাউিজা

19

জিটি (জাস্ট ইন টাইম) সংকলন

নামটি নিজেই কাজটি বর্ণনা করে, এটি ব্রাউজারে পৃষ্ঠাটি লোড করার সময় কোডটি সংকলন করে। ব্রাউজারটি সংকলকটি ডাউনলোড করে অ্যাপ্লিকেশন কোড তৈরি করবে এবং এটি রেন্ডার করবে।

এটি উন্নয়নের পরিবেশের জন্য ভাল হবে।

এওটি (সময়ের আগে) সংকলন

এটি অ্যাপ্লিকেশন তৈরির সময় সমস্ত কোড সংকলন করে। সুতরাং ব্রাউজারটি সংকলকটি ডাউনলোড করতে এবং কোডটি সংকলন করতে চায় না। এই পদ্ধতিতে ব্রাউজার সহজেই কেবল ইতিমধ্যে সংকলিত কোড লোড করে অ্যাপ্লিকেশনটি রেন্ডার করতে পারে।

উত্পাদন পরিবেশে ব্যবহার করা যেতে পারে

আমরা নীচের হিসাবে জিআইটি এবং এওটি সংকলন তুলনা করতে পারি

এখানে চিত্র বর্ণনা লিখুন


4
এর অর্থ কি জিট অ্যাপ্লিকেশনটি প্রথমবারের সাথে দ্রুত লোড হবে তবে এর পরে এওটি অ্যাপ্লিকেশনটি সর্বদা দ্রুত লোড হবে?
জে কেএল

কখনই না। জিটিটি এওটি

জোটের চেয়ে এওটি ধীর গতির কারণ এটি রানটাইম মেনে চলে না। আপনাকে জিট এবং আউট শিরোনামগুলি পরিবর্তন করতে হবে
মিঃ এএফ

14

দিনের শেষে, এওটি (এগিয়ে যাওয়ার সময়) এবং জেআইটি (জাস্ট-ইন-টাইম) একই কাজ করে। তারা উভয়ই আপনার কৌণিক কোডটি সংকলন করে যাতে এটি কোনও স্থানীয় পরিবেশে (ব্রাউজার ওরফে) চালাতে পারে। মূল পার্থক্যটি হ'ল সংকলনটি ঘটে। এওটি দিয়ে ব্রাউজারে অ্যাপ ডাউনলোড হওয়ার আগে আপনার কোড সংকলিত হবে। জেআইটি দিয়ে আপনার কোডটি ব্রাউজারে রানটাইম সময়ে সংকলিত হয়।

এখানে তুলনা করা হয়: এখানে চিত্র বর্ণনা লিখুন

এওটির সুবিধা:

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

4

আসলে একটি মাত্র কৌনিক সংকলক রয়েছে। এওটি এবং জেআইটির মধ্যে পার্থক্য সময় ও সরঞ্জামকরণের বিষয়। এওটি দিয়ে, সংকলকটি একবার লাইব্রেরির একটি সেট ব্যবহার করে নির্মাণের সময় চলে; জেআইটি-র সাথে এটি প্রতিটি ব্যবহারকারীর জন্য রানটাইমগুলিতে লাইব্রেরির বিভিন্ন সেট ব্যবহার করে প্রতিবার সঞ্চালিত হয়।


2

কৌণিক প্রকল্পের বিকাশের সময় আমরা জেআইটি সংকলক ব্যবহার করি। এই সংকলনে (টিএস থেকে জেএস রূপান্তর) অ্যাপ্লিকেশনটির রানটাইম চলাকালীন ঘটে। অ্যাপ্লিকেশন স্থাপনের জন্য অ্যাপ্লিকেশন কোড তৈরি করার সময় যেখানে এওটি ব্যবহার করা হয়, সেই সময় আমরা এনজি বিল্ড - প্রড কমান্ড ব্যবহার করে আমাদের অ্যাপ্লিকেশন কোডটি তৈরি করি যা ওয়েবপ্যাক নামে একটি ফোল্ডার জেনারেট করে, ওয়েবপ্যাকে সমস্ত ফাইলের বান্ডেল থাকে (এইচটিএমএল সংযুক্ত জাভাস্ক্রিপ্ট ফর্ম্যাটে), সিএসএস এবং টাইপস্ক্রিপ্ট)।

উত্পাদনের জন্য উত্পন্ন ওয়েবপ্যাক ফোল্ডারটির আকার বিকাশের পরিবেশের জন্য তৈরি ফোল্ডারের তুলনায় অনেক কম (কমান্ড ব্যবহার করে ... এনজি বিল্ড), কারণ এতে ওয়েবপ্যাক ফোল্ডারের অভ্যন্তরে সংকলক নেই, এটি অ্যাপ্লিকেশনটির কার্যকারিতা উন্নত করে ।

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