سوالات متداول


کامپایلر Closure چیست؟ چرا باید از آن استفاده کنم؟
کامپایلر Closure ابزاری برای افزایش سرعت دانلود و اجرای جاوا اسکریپت است. شما می‌توانید از کامپایلر Closure برای کاهش حجم فایل‌های جاوا اسکریپت و افزایش کارایی آنها استفاده کنید.
کامپایلر Closure چه تفاوتی با سایر فشرده‌سازهای جاوا اسکریپت موجود دارد؟

به طور کلی، کامپایلر Closure باید فشرده‌سازی کد را با سایر ابزارهای کوچک‌سازی کد مطابقت دهد یا از آن فراتر رود و زمان دانلود برنامه وب شما را بهبود بخشد. علاوه بر این، کامپایلر Closure می‌تواند به شما در یافتن خطاهای نحوی در طول توسعه (و نه در طول آزمایش) و شناسایی الگوهای کد دارای اشکال بالقوه کمک کند.

در حالت ساده، Closure Compiler باید بتواند بهتر از سایر ابزارها عمل کند زیرا از تحلیل‌های شبیه کامپایلر برای یافتن راه‌های اضافی برای به حداقل رساندن اندازه کد استفاده می‌کند. به عنوان مثال، Closure Compiler می‌تواند توابعی را که فقط در چند مورد استفاده می‌شوند، درون‌خطی کند، از نام متغیرها دوباره استفاده کند و عبارات ثابت را از قبل محاسبه کند.

در حالت پیشرفته، Closure Compiler همچنین می‌تواند از حاشیه‌نویسی‌های نوع اضافه شده شما برای یافتن اشکالاتی که تشخیص آنها دشوار است، استفاده کند.

آیا کامپایلر Closure می‌تواند جاوا اسکریپتی را که در HTML تعبیه شده است، کامپایل کند؟
خیر. کامپایلر Closure فقط روی فایل‌هایی کار می‌کند که فقط شامل جاوا اسکریپت باشند.
آیا می‌توانم از Closure Compiler به همراه سایر کوچک‌کننده‌های جاوا اسکریپت استفاده کنم؟

بله. کامپایلر Closure هر جاوا اسکریپت معتبری را می‌خواند و جاوا اسکریپت معتبری تولید می‌کند، بنابراین می‌توانید کامپایلر Closure را قبل یا بعد از اجرای فایل جاوا اسکریپت از طریق یک فشرده‌ساز دیگر، روی آن اعمال کنید.

به یاد داشته باشید که Closure Compiler و سایر minifierها ممکن است انتظاراتی در مورد کد ورودی داشته باشند. به عنوان مثال، minifier ای که نظرات را حذف می‌کند، ممکن است مجوزها یا اطلاعات حاشیه نویسی مورد نیاز ابزار دیگری را حذف کند.

چگونه می‌توانم جاوا اسکریپتی را که کامپایلر Closure تولید می‌کند، اشکال‌زدایی کنم؟
اگر کد کامپایل شده شما خطا می‌دهد یا رفتار غیرمنتظره‌ای از خود نشان می‌دهد، می‌توانید از Source Mapها برای اشکال‌زدایی مشکل استفاده کنید. یک Source Map، نگاشتی بین کد کامپایل شده و کد منبع اصلی ایجاد می‌کند تا ابزارهای توسعه‌دهنده مرورگر بتوانند کد منبع اصلی شما را به جای کد کامپایل شده به شما نشان دهند. برای اینکه Closure Compiler یک Source Map تولید کند، پرچم --create_source_map را در خط فرمان وارد کنید. به عنوان مثال:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
سپس، اگر از مرورگری استفاده می‌کنید که از نقشه‌های منبع پشتیبانی می‌کند (مانند کروم یا فایرفاکس)، می‌توانید نقاط توقف را درست مانند کد کامپایل نشده تنظیم کنید و ابزارهای توسعه‌دهنده مرورگر، خط کد مربوطه را در منبع اصلی نشان می‌دهند. برای اطلاعات بیشتر در مورد ابزارهای توسعه‌دهنده کروم، از جمله اطلاعات مربوط به نقشه‌های منبع، به بخش اشکال‌زدایی جاوا اسکریپت مراجعه کنید.
آیا کامپایلر بین سرعت اجرای برنامه من و حجم کد دانلود، مصالحه‌ای انجام می‌دهد؟
بله. هر کامپایلر بهینه‌ساز، بده‌بستان‌هایی دارد. برخی از بهینه‌سازی‌های اندازه، سربارهای سرعت کمی ایجاد می‌کنند. با این حال، توسعه‌دهندگان کامپایلر Closure مراقب بوده‌اند که زمان اجرای اضافی قابل توجهی ایجاد نکنند. برخی از بهینه‌سازی‌های کامپایلر حتی زمان اجرا را کاهش می‌دهند (به سوال بعدی مراجعه کنید).
آیا کامپایلر برای سرعت بهینه سازی می کند؟
در بیشتر موارد، کد کوچکتر، کد سریعتری است، زیرا زمان دانلود معمولاً مهمترین عامل سرعت در برنامه‌های وب است. بهینه‌سازی‌هایی که افزونگی را کاهش می‌دهند، زمان اجرای کد را نیز افزایش می‌دهند.
آیا محدودیتی در اندازه فایل‌هایی که می‌توانند کامپایل شوند وجود دارد؟
سرویس وب کامپایل دارای حداکثر اندازه فایل است، اما برنامه کامپایلر مستقل این حداکثر اندازه را ندارد.
آیا کامپایلر Closure برای همه پلتفرم‌ها در دسترس است؟
این کامپایلر با زبان جاوا نوشته شده است، بنابراین می‌تواند در هر جایی که جاوا اجرا می‌شود، اجرا شود.
آیا کامپایلر می‌تواند هر جاوا اسکریپت قانونی را پردازش کند؟
اکثراً. برخی از ساختارهای جاوا اسکریپت، از جمله eval() و with() ، می‌توانند فرضیاتی را که تبدیل‌های کامپایلر بر اساس آنها انجام می‌شوند، نامعتبر کنند.
برای استفاده از کامپایلر Closure چقدر باید در مورد توسعه وب بدانم؟
کامپایلر Closure ابزاری برای توسعه جاوا اسکریپت است، بنابراین برای استفاده از کامپایلر باید برنامه‌نویسی جاوا اسکریپت را بلد باشید. اما هر کسی که از جاوا اسکریپت استفاده می‌کند می‌تواند از استفاده از کامپایلر Closure بهره‌مند شود.
کامپایلر Closure چگونه با کتابخانه Closure کار می‌کند؟
کامپایلر Closure بررسی‌ها و بهینه‌سازی‌های ویژه‌ای را برای کدی که از کتابخانه Closure استفاده می‌کند، ارائه می‌دهد. علاوه بر این، سرویس کامپایلر Closure می‌تواند به طور خودکار فایل‌های کتابخانه Closure را نیز شامل کند. «یافتن راه خود در Closure» ، سینتکس لازم برای تعریف بخش‌هایی از Closure که نیاز دارید را شرح می‌دهد. برای اطلاعات بیشتر در مورد استفاده از کتابخانه Closure با API، به مرجع API مراجعه کنید. برای استفاده از کتابخانه Closure با برنامه کامپایلر Closure، ابتدا باید کتابخانه Closure را دانلود کنید . پشتیبانی از کتابخانه Closure به طور پیش‌فرض در برنامه کامپایلر فعال است.
کد من از کار می‌افتد یا کامپایلر هنگام کامپایل با ADVANCED_OPTIMIZATIONS خطایی تولید می‌کند. چرا؟
استفاده از حالت پیشرفته معمولاً نیاز به مقداری آماده‌سازی و تغییر کد دارد. Advanced Compilation and Externs توضیح می‌دهد که چگونه مطمئن شوید کد شما با ADVANCED_OPTIMIZATIONS کار می‌کند.
چرا در اسکریپت‌های کامپایل‌شده، فیدهای خط تصادفی وجود دارد؟
کامپایلر Closure عمداً هر ۵۰۰ کاراکتر یا بیشتر، یک خط فاصله اضافه می‌کند. فایروال‌ها و پروکسی‌ها گاهی اوقات فایل‌های بزرگ جاوا اسکریپت با خطوط بسیار طولانی را خراب می‌کنند یا نادیده می‌گیرند. اضافه کردن خط فاصله هر ۵۰۰ کاراکتر از این مشکل جلوگیری می‌کند. تأثیر آن بر اندازه کد کم است و کامپایلر محل قرارگیری خط فاصله را بهینه می‌کند تا وقتی فایل‌ها با gzip فشرده می‌شوند، جریمه اندازه کد حتی کمتر شود. همچنین به شماره ۴۱۰۶ مراجعه کنید.
من متن‌هایی با عنوان «اعلان‌های حق نشر» یا «مجوز متن‌باز» دارم که باید در کد منبع من نمایش داده شوند. چگونه می‌توانم کاری کنم که کامپایلر Closure این متن را حذف نکند؟
کامپایلر Closure از تگ @license به JSDoc پشتیبانی می‌کند. برای حفظ کامنت در خروجی کامپایلر، تگ @license را به هر کامنت JSDoc اضافه کنید. برای اطلاعات بیشتر به بخش حاشیه‌نویسی جاوا اسکریپت برای کامپایلر Closure مراجعه کنید.