আমি কৌনিক জাভাস্ক্রিপ্ট ব্যবহার করে ধারণার প্রমাণ নিয়ে কাজ করছি।
বিভিন্ন ব্রাউজারে (ফায়ারফক্স এবং ক্রোম) অ্যাংুলার জাভাস্ক্রিপ্ট কোড কীভাবে ডিবাগ করবেন?
আমি কৌনিক জাভাস্ক্রিপ্ট ব্যবহার করে ধারণার প্রমাণ নিয়ে কাজ করছি।
বিভিন্ন ব্রাউজারে (ফায়ারফক্স এবং ক্রোম) অ্যাংুলার জাভাস্ক্রিপ্ট কোড কীভাবে ডিবাগ করবেন?
উত্তর:
1. ক্রোম
ক্রোমে ডিবাগ অ্যাঙ্গুলারজেএস-এর জন্য আপনি AngularJS বাটারং ব্যবহার করতে পারেন । (প্লাগইনে সাম্প্রতিক পর্যালোচনাগুলি থেকে দেখে মনে হচ্ছে অ্যাঙ্গুলার জেএস বাটারং আর রক্ষণাবেক্ষণ করা হচ্ছে না ch ক্রোমের বিভিন্ন সংস্করণে পরীক্ষিত কাজ করে না)
বিবরণ এবং ডেমো জন্য লিঙ্ক এখানে:
এখান থেকে ক্রোম প্লাগইন ডাউনলোড করুন: ডিবাগ অ্যাঙ্গুলারজেএস-এর জন্য ক্রোম প্লাগইন
আপনি এই লিঙ্কটি উল্লেখ করতে পারেন: এনজি-বই: ডিবাগিং অ্যাঙ্গুলারজেএস
আপনি কৌণিক ডিবাগিংয়ের জন্য এনজি-পরিদর্শনও ব্যবহার করতে পারেন।
2. ফায়ারফক্স
জন্য ফায়ারফক্স সাহায্যে ফায়ারবাগকে আপনি কোড ডিবাগ করতে পারেন।
এই ফায়ারফক্স অ্যাড- অনগুলিও ব্যবহার করুন: অ্যাংসকোপ: ফায়ারফক্সের জন্য অ্যাড-অনস ( অ্যাঙ্গুলারজেএস টিম দ্বারা অফিসিয়াল এক্সটেনশন নয়)
৩. ডিবাগিং অ্যাঙ্গুলারজেএস : লিঙ্কটি পরীক্ষা করুন: ডিবাগিং অ্যাঙ্গুলারজেএস
ng-inspect
যদি Batarang আপনি মাথাব্যাথা প্রদান করা হয়।
আইএমএইচও, ভিজ্যুয়াল উপাদান সম্পর্কিত কোনও নির্দিষ্ট সুযোগের মূল্য অর্জন / সেট করা থেকে সবচেয়ে হতাশাব্যঞ্জক অভিজ্ঞতা আসে। আমি কেবল নিজের কোডটিতেই নয়, নিজেই কৌণিক.জেজেও অনেকগুলি ব্রেকপয়েন্ট করেছি, তবে কখনও কখনও এটি সর্বাধিক কার্যকর উপায় হয় না। যদিও নীচের পদ্ধতিগুলি খুব শক্তিশালী, তবে আপনি যদি প্রকৃতপক্ষে প্রযোজনা কোড ব্যবহার করেন তবে অবশ্যই এগুলি বুদ্ধিমানের সাথে ব্যবহার করুন!
অনেকগুলি নন-আইই ব্রাউজারে আপনি কোনও উপাদানকে ডান ক্লিক করে এবং "উপাদান পরিদর্শন করুন" ক্লিক করে একটি উপাদান নির্বাচন করতে পারেন। বিকল্প হিসাবে আপনি উদাহরণস্বরূপ Chrome এর এলিমেন্ট ট্যাবে যে কোনও উপাদানকে ক্লিক করতে পারেন। সর্বশেষ নির্বাচিত উপাদানটি $0
কনসোলে ভেরিয়েবলে সংরক্ষণ করা হবে ।
সেখানে কোনও নির্দেশনা রয়েছে যা কিনা বিচ্ছিন্ন সুযোগ তৈরি করে তার উপর নির্ভর করে আপনি স্কোপটি পুনরুদ্ধার করতে পারেন angular.element($0).scope()
বা angular.element($0).isolateScope()
( $($0).scope()
enabled সক্ষম থাকলে ব্যবহার করুন )। আপনি যখন বাটারংয়ের সর্বশেষতম সংস্করণটি ব্যবহার করছেন তখন এটিই পাবেন। আপনি যদি সরাসরি মানটি scope.$digest()
পরিবর্তন করে থাকেন তবে ইউআই-তে পরিবর্তনগুলি প্রতিবিম্বিত করতে ব্যবহার করতে ভুলবেন না।
ডিবাগিংয়ের জন্য অগত্যা নয়। scope.$eval(expression)
আপনি খুব সহজেই যখন আপনি এক্সপ্রেশনটির প্রত্যাশিত মান আছে কিনা তা দ্রুত পরীক্ষা করতে চান।
মধ্যে পার্থক্য scope.bla
এবং scope.$eval('bla')
সাবেক prototypically উত্তরাধিকারসূত্রে মান বিবেচনা না। পুরো ছবিটি পেতে নীচের স্নিপেটটি ব্যবহার করুন (আপনি সরাসরি মানটি পরিবর্তন করতে পারবেন না, তবে আপনি $eval
যেভাবেই ব্যবহার করতে পারেন !)
scopeCopy = function (scope) {
var a = {};
for (x in scope){
if (scope.hasOwnProperty(x) &&
x.substring(0,1) !== '$' &&
x !== 'this') {
a[x] = angular.copy(scope[x])
}
}
return a
};
scopeEval = function (scope) {
if (scope.$parent === null) {
return hoho(scope)
} else {
return angular.extend({}, haha(scope.$parent), hoho(scope))
}
};
এটি দিয়ে ব্যবহার করুন scopeEval($($0).scope())
।
আপনি ngModel
যখন কোনও নির্দেশনা লিখছেন তখন কখনও কখনও আপনি মানগুলি পর্যবেক্ষণ করতে পারেন । ব্যবহারের $($0).controller('ngModel')
এবং আপনার চেক করতে পাবেন $formatters
, $parsers
, $modelValue
, $viewValue
$render
এবং সবকিছু।
আপনি ব্যবহার করতে পারেন যে লগ আছে! এটি আপনার কনসোলটিকে এমনভাবে ব্যবহার করে যাতে আপনি এটি কাজ করতে চান!
আপনার কনসোলটি আপনাকে স্বাভাবিকভাবে যেভাবে দেখায় ত্রুটি / সতর্কতা / তথ্য প্রদর্শন করছে!
এটি> নথি ব্যবহার করুন
প্রশ্নের উত্তর দেওয়া সত্ত্বেও, এনজি-ইন্সপেক্টরকে একবার দেখে নেওয়া আকর্ষণীয় হতে পারে
এনজি-ইন্সপেক্টর ব্যবহার করে দেখুন। ফায়ারফক্সের অ্যাড- অননটি http://ng-inspector.org/ ওয়েবসাইট থেকে ডাউনলোড করুন । এটি মেনুতে ফায়ারফক্স অ্যাডে পাওয়া যায় না।
http://ng-inspector.org/ - ওয়েবসাইট
http://ng-inspector.org/ng-inspector.xpi - ফায়ারফক্স অ্যাড-অন
দুর্ভাগ্যক্রমে বেশিরভাগ অ্যাড-অন এবং ব্রাউজার এক্সটেনশানগুলি আপনাকে কেবল মান দেখায় তবে তারা আপনাকে স্কোপ ভেরিয়েবলগুলি সম্পাদনা করতে বা কৌণিক কার্যগুলি চালিত করতে দেয় না। আপনি যদি ব্রাউজার কনসোলে (সমস্ত ব্রাউজারে) $ স্কোপ ভেরিয়েবলগুলি পরিবর্তন করতে চান তবে আপনি jquery ব্যবহার করতে পারেন। আপনি যদি AngularJS এর আগে jQuery লোড করেন তবে কৌণিক.এলিমেন্টটি কোনও jQuery নির্বাচক পাস হতে পারে। সুতরাং আপনি এর সাথে একটি নিয়ামকের সুযোগ পরিদর্শন করতে পারেন
angular.element('[ng-controller="name of your controller"]').scope()
উদাহরণ: আপনার $ স্কোপ ভেরিয়েবলের মান পরিবর্তন করতে হবে এবং ফলাফলটি ব্রাউজারে দেখতে হবে তারপরে কেবল ব্রাউজার কনসোলে টাইপ করুন:
angular.element('[ng-controller="mycontroller"]').scope().var1 = "New Value";
angular.element('[ng-controller="mycontroller"]').scope().$apply();
আপনি অবিলম্বে আপনার ব্রাউজারে পরিবর্তনগুলি দেখতে পাবেন। আমরা প্রয়োগ () প্রয়োগ করার কারণটি হ'ল: বাইরের কৌণিক প্রসঙ্গ থেকে আপডেট হওয়া কোনও স্কোপ ভেরিয়েবল এটি বাধ্যতামূলকভাবে আপডেট করে না, স্কোপের মানগুলি আপডেট করে আপনাকে ডাইজেস্ট চক্রটি চালানো দরকার scope.$apply()
।
$ স্কোপ ভেরিয়েবল মান পর্যবেক্ষণের জন্য আপনাকে কেবল সেই ভেরিয়েবলটি কল করতে হবে।
উদাহরণ: আপনি Chrome বা ফায়ারফক্সে ওয়েব কনসোলে $ স্কোপ.ভয়ার ১ এর মান দেখতে চান কেবল টাইপ করুন:
angular.element('[ng-controller="mycontroller"]').scope().var1;
ফলাফলটি তাত্ক্ষণিকভাবে কনসোলে প্রদর্শিত হবে।
আপনি debugger
যেখানে এটির কল্পনা করতে চান সেখানে কল যুক্ত করুন ।
someFunction(){
debugger;
}
ইন console
আপনার ব্রাউজারের ওয়েব ডেভেলপার টুলস ট্যাব, ইস্যুangular.reloadWithDebugInfo();
আপনি যে পৃষ্ঠাটি ডিবাগ করতে চান এবং সেটিকে পুনরায় লোড করুন এবং আপনার ব্রাউজারে ডিবাগারটি প্রদর্শিত হবে appear
var rootEle = document.querySelector("html");
var ele = angular.element(rootEle);
সুযোগ () আমরা উপাদানটিতে স্কোপ () পদ্ধতি ব্যবহার করে উপাদান (বা এর পিতামাতার) থেকে $ সুযোগ আনতে পারি:
var scope = ele.scope();
প্রবেশক ()
var injector = ele.injector();
এই ইনজেক্টর দিয়ে আমরা তারপরে আমাদের অ্যাপ্লিকেশনের অভ্যন্তরের কোনও কৌণিক বস্তুর তত্ক্ষণাত পরিষেবা, অন্যান্য নিয়ন্ত্রক বা অন্য কোনও অবজেক্ট ইনস্ট্যান্ট করতে পারি
আপনি আপনার কোডে 'ডিবাগার' যুক্ত করতে পারেন এবং অ্যাপটি পুনরায় লোড করতে পারেন, যা সেখানে ব্রেকআপপয়েন্ট রেখে দেয় এবং আপনি 'স্টেপ ওভার' করতে পারেন, বা রান করতে পারেন।
var service = {
user_id: null,
getCurrentUser: function() {
debugger; // Set the debugger inside
// this function
return service.user_id;
}
আপনি বিকাশকারী সরঞ্জামগুলিতে নির্মিত ব্রাউজারগুলি ব্যবহার করে ডিবাগ করতে পারেন।
ব্রাউজারে বিকাশকারী সরঞ্জাম খুলুন এবং উত্স ট্যাবে যান।
আপনি কি সিটিআরএল + পি এবং অনুসন্ধান ফাইলের নাম ব্যবহার করে ডিবাগ করতে চান ফাইলটি খুলুন
কোডের বাম দিকে ক্লিক করে একটি লাইনে ব্রেক পয়েন্ট যুক্ত করুন।
পৃষ্ঠাটি রিফ্রেশ করুন.
ডিবাগিংয়ের জন্য প্রচুর প্লাগইন উপলব্ধ রয়েছে আপনি ক্রোম প্লাগইন ব্যবহারের জন্য উল্লেখ করতে পারেন ডিবাগ অ্যাঙ্গুলার অ্যাপ্লিকেশন "ক্রোমের জন্য ডিবাগার" প্লাগইন ব্যবহার করে
ভিসুয়াল স্টুডিও কোড (না ভিসুয়াল স্টুডিও) এর জন্য কি করতে Ctrl+ + Shift+ +P
অনুসন্ধান বারে ক্রোমের জন্য ডিবাগার টাইপ করুন, এটি ইনস্টল করুন এবং এটি সক্ষম করুন।
আপনার launch.json
ফাইলটিতে এই কনফিগারটি যুক্ত করুন:
{
"version": "0.1.0",
"configurations": [
{
"name": "Launch localhost with sourcemaps",
"type": "chrome",
"request": "launch",
"url": "http://localhost/mypage.html",
"webRoot": "${workspaceRoot}/app/files",
"sourceMaps": true
},
{
"name": "Launch index.html (without sourcemaps)",
"type": "chrome",
"request": "launch",
"file": "${workspaceRoot}/index.html"
},
]
}
এক্সটেনশনটি সংযুক্ত করার জন্য আপনাকে অবশ্যই ক্রোমকে দূরবর্তী ডিবাগিং সক্ষম করে চালু করতে হবে।
ক্রোম শর্টকাটটিতে ডান ক্লিক করুন, এবং বৈশিষ্ট্যগুলি নির্বাচন করুন "লক্ষ্য" ক্ষেত্রে, --remote-debugging-port = 9222 অথবা একটি কমান্ড প্রম্পটে, /chrome.exe --remote-debugging-port = 9222 চালান
একটি টার্মিনালে, ক্রিয়াকলাপ / অ্যাপ্লিকেশন / গুগল app ক্রোম.এপ / কনটেন্টস / ম্যাকোস / গুগল - ক্রোম - রেমোট-ডিবাগিং-পোর্ট = 9222
একটি টার্মিনালে, গুগল-ক্রোম --remote-ডিবাগিং-পোর্ট = 9222 চালু করুন
অ্যাড-অনগুলি যেহেতু আর কাজ করে না, তাই আমি খুঁজে পেয়েছি এমন সরঞ্জামগুলির সর্বাধিক সহায়ক সেটটি ভিজ্যুয়াল স্টুডিও / আইই ব্যবহার করছে কারণ আপনি আপনার জেএসে ব্রেকপয়েন্টগুলি সেট করতে পারেন এবং সেভাবে আপনার ডেটা পরীক্ষা করতে পারেন। অবশ্যই ক্রোম এবং ফায়ারফক্সের আরও সাধারণ ডিভাইস রয়েছে। এছাড়াও, ভাল ওল 'কনসোল.লগ () অত্যন্ত সহায়ক হয়েছে!
অ্যাংুলার 2 এবং উপরের অ্যাপ্লিকেশনগুলিকে ডিবাগ করার জন্য আপনি কৌনিক অগুরি একটি গুগল ক্রোম দেব সরঞ্জাম এক্সটেনশন ব্যবহার করতে পারেন ।