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


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

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

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

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

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

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

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

چگونه می توانم جاوا اسکریپتی را که Closure Compiler تولید می کند اشکال زدایی کنم؟
اگر کد کامپایل شده شما خطاهایی ایجاد می کند یا رفتار غیرمنتظره ای از خود نشان می دهد، می توانید از Source Maps برای رفع اشکال استفاده کنید. نقشه منبع یک نقشه بین کد کامپایل شده و کد منبع اصلی فراهم می کند تا ابزار توسعه دهنده مرورگر بتواند کد منبع اصلی شما را به جای کد کامپایل شده به شما نشان دهد. برای اینکه Closure Compiler یک نقشه منبع تولید کند، پرچم --create_source_map را در خط فرمان ارسال کنید. به عنوان مثال:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
سپس، اگر از مرورگری استفاده می‌کنید که از Source Maps پشتیبانی می‌کند (مانند کروم یا فایرفاکس)، می‌توانید نقاط شکست را دقیقاً مانند کدهای کامپایل نشده تعیین کنید و ابزارهای توسعه‌دهنده مرورگر خط مربوطه را نشان می‌دهند. کد در منبع اصلی برای اطلاعات بیشتر درباره ابزارهای برنامه‌نویس Chrome، از جمله اطلاعات مربوط به نقشه‌های منبع، به اشکال‌زدایی جاوا اسکریپت مراجعه کنید.
آیا کامپایلر بین سرعت اجرای برنامه من و اندازه کد بارگیری تطبیقی ​​ایجاد می کند؟
آره. هر کامپایلری که بهینه‌سازی می‌شود، معاوضه‌هایی ایجاد می‌کند. برخی از بهینه‌سازی‌های اندازه، سربار سرعت کمی را معرفی می‌کنند. با این حال، توسعه دهندگان Closure Compiler مراقب بوده اند تا زمان اجرا اضافی قابل توجهی را معرفی نکنند. برخی از بهینه سازی های کامپایلر حتی زمان اجرا را کاهش می دهند (به سوال بعدی مراجعه کنید).
آیا کامپایلر برای سرعت بهینه سازی می کند؟
در بیشتر موارد کد کوچکتر کد سریعتر است، زیرا زمان دانلود معمولاً مهمترین عامل سرعت در برنامه های وب است. بهینه‌سازی‌هایی که افزونگی‌ها را کاهش می‌دهند، زمان اجرای کد را نیز افزایش می‌دهند.
آیا محدودیتی در اندازه فایل های قابل کامپایل وجود دارد؟
وب سرویس کامپایل حداکثر اندازه فایل را دارد، اما برنامه کامپایلر مستقل اینطور نیست.
آیا کامپایلر بسته شدن برای همه پلتفرم ها در دسترس است؟
کامپایلر به زبان جاوا نوشته شده است، بنابراین می تواند در هر جایی که جاوا اجرا شود اجرا شود.
آیا کامپایلر می تواند هر جاوا اسکریپت قانونی را پردازش کند؟
اغلب. برخی از ساختارهای جاوا اسکریپت، از جمله eval() و with() می‌توانند مفروضاتی را که تبدیل‌های کامپایلر بر اساس آن‌ها انجام شده‌اند، باطل کنند.
برای استفاده از Closure Compiler چقدر باید درباره توسعه وب بدانم؟
Closure Compiler ابزاری برای توسعه جاوا اسکریپت است، بنابراین برای استفاده از کامپایلر باید بدانید که چگونه در جاوا اسکریپت برنامه نویسی کنید. اما هر کسی که از جاوا اسکریپت استفاده می کند می تواند از استفاده از Closure Compiler بهره مند شود.
چگونه کامپایلر بسته با کتابخانه بسته کار می کند؟
کامپایلر بسته شدن، بررسی ها و بهینه سازی های ویژه ای را برای کدهایی که از کتابخانه بسته استفاده می کنند، فراهم می کند. علاوه بر این، سرویس Closure Compiler می تواند به طور خودکار فایل های Closure Library را شامل شود. Finding Your Way around Closure نحوی را برای اعلام قسمت هایی از Closure که به آن نیاز دارید توضیح می دهد. برای اطلاعات در مورد استفاده از کتابخانه بسته شدن با API به مرجع API مراجعه کنید. برای استفاده از کتابخانه بسته با برنامه کامپایلر بسته، ابتدا باید کتابخانه بسته را دانلود کنید . پشتیبانی از کتابخانه بسته به طور پیش فرض در برنامه کامپایلر فعال است.
کد من کار نمی کند یا کامپایلر هنگام کامپایل با ADVANCED_OPTIMIZATIONS خطاهایی ایجاد می کند. چرا؟
استفاده از حالت Advanced معمولاً به مقداری آماده سازی و تغییرات کد نیاز دارد. Advanced Compilation and Externs توضیح می دهد که چگونه مطمئن شوید کد شما با ADVANCED_OPTIMIZATIONS کار می کند.
چرا فیدهای خط تصادفی در اسکریپت های کامپایل شده وجود دارد؟
کامپایلر Closure به طور عمدی هر 500 کاراکتر یا بیشتر شکسته های خط اضافه می کند. فایروال ها و پراکسی ها گاهی اوقات فایل های جاوا اسکریپت بزرگ با خطوط بسیار طولانی را خراب یا نادیده می گیرند. افزودن خط شکستن هر 500 کاراکتر از این مشکل جلوگیری می کند. حذف خطوط شکسته تاثیری بر معنای اسکریپت ندارد. تأثیر روی اندازه کد کم است و کامپایلر جای شکست خط را بهینه می کند تا جریمه اندازه کد در هنگام gzip شدن فایل ها کمتر شود.
من اعلامیه های حق چاپ یا متن مجوز منبع باز دارم که باید در کد منبع من ظاهر شود. چگونه می توانم از کامپایلر بسته شدن این متن جلوگیری کنم؟
Closure Compiler از تگ @license پشتیبانی می کند. برای حفظ نظر در خروجی کامپایلر، تگ @license را به هر نظر JSDoc اضافه کنید. برای اطلاعات بیشتر به Annotating JavaScript for Close Compiler مراجعه کنید.