الجمع بين الكائنات. كيفية دمج ملفات Javascript في WordPress في ملف واحد يجمع ملفات js متعددة في ملف واحد

31.08.2020

يؤدي هذا الإجراء إلى تقليل عدد الطلبات المقدمة إلى الخادم، وبالتالي تسريع الموقع. وينطبق هذا بشكل خاص على HTTP1.1 والصفحات التي تتطلب أكثر من 20 طلبًا. بالإضافة إلى ذلك، فإنه يضيف نقاطًا في الاختبار (وهو الأمر الأكثر أهمية بالنسبة للكثيرين).

كيفية دمج ملفات Javascript في WordPress في ملف واحد - طريقة بدون مكون إضافي

بشكل عام، هناك مكونات إضافية لهذه المهمة، ولكن في التعليقات على تلك المكونات الإضافية هناك الكثير من المراجعات بروح "لا تعمل".

إذا قمت بذلك "يدويًا بالكامل"، فسيتعين عليك أخذ جميع أكوام التعليمات البرمجية يدويًا ونسخها في ملف واحد. لا ينصح بهذه الطريقة لما لها من عيوب كثيرة مثل:

1.) من الصعب العثور على اسم واصف ملف جافا سكريبت، وهذا على عكس ملفات CSS حيث يمكننا العثور على اسم واصف سمة المعرف. يعد هذا المقبض مهمًا لأننا نحتاج إليه لإلغاء تسجيل البرامج النصية بعد اكتمال عملية الدمج.

2.) قلة المرونة. إذا كان هناك إضافة أو طرح لملف جافا سكريبت، فيجب علينا إعادة دمج هذا الملف يدويًا.

3.) من المستحيل ضمان عدم تعارض أجزاء التعليمات البرمجية المجمعة. يتعلق هذا بتسلسل استدعاءات الوظائف ونطاقات متغيرات جافا سكريبت.

كيفية دمج ملفات Javascript في WordPress في ملف واحد - تلقائيًا

لدمج ملفات جافا سكريبت تلقائيًا في WordPress، تحتاج أولاً إلى جمع المسارات إلى ملفات جافا سكريبت مع أسماء مقابضها (على غرار الطريقة اليدوية، تلقائيا فقط).

يمكننا العثور على جميع المعلومات حول ملفات جافا سكريبت التي تم تحميلها إليها صفحة ووردبريسفي كائن WP_Scripts.

يتم تخزين هذا الكائن في المتغير $wp_scripts ويتم استدعاؤه في أقسام القالب مثل wp_head وwp_print_scripts (wp_enqueue_scripts) وwp_footer وinit. فيما يلي بعض الحالات الأكثر شيوعًا.

مرة واحدة. في الرأس (العلامة) يمكننا تحديد ذلك باستخدام الخطاف wp_head.

اثنان.

في التذييل (قبل العلامة) يمكننا تحديد ذلك باستخدام الخطاف wp_footer.

افتح ملف jobs.php للتحرير، الموجود في مجلد السمات المستخدم، وأضف الكود هناك:
الكود: add_action("wp_head"، "show_head_scripts"، 9999)؛

add_action("wp_footer"، "show_footer_scripts"، 9999)؛
// تظهر في الأعلى، قبل فتح الجسم
الدالة show_head_scripts())(
عالمي $wp_scripts;
}
صدى ""; print_r($wp_scripts->done); صدى "";
الدالة show_footer_scripts())(
الدالة show_head_scripts())(
عالمي $wp_scripts;
}

نفتح الآن الصفحة وننظر إلى مصدرها ونرى قوائم المسارات إلى ملفات JS (في أعلى وأسفل الصفحة).

دمج ملفات جافا سكريبت في ملف واحد في ووردبريس

للدمج، تحتاج إلى جمع المسارات إلى الملفات التي يمكن اكتشافها تلقائيًا قبل عرض المحتوى. الخطاف wp_enqueue_scripts مناسب لهذا الغرض. هناك بعض العيوب لهذا (الموصوفة أدناه)، ولكن هذه هي الخدعة الوحيدة التي يمكننا استخدامها تلقائيًا.

كيف يتم ذلك (وصف منطق الكود):

1.) يتم نسخ مقبض ملف جافا سكريبت وفقًا لتبعيته بحيث يمكن تشغيله بدون أخطاء بعد الدمج. يمكننا القيام بذلك عن طريق استدعاء الأسلوب all_deps على كائن WP_Scripts($wp_scripts->all_deps($wp_scripts->queue));

2.) استرجاع التعليمات البرمجية في ملفات جافا سكريبت (باستخدام file_get_contents) والدمج مع الآخرين. بما في ذلك البرنامج النصي للترجمة wp_localize_script (إن وجد). يمكن العثور على هذا البرنامج النصي في $ wp_scripts-> المسجل ["handle"] -> الإضافي ["data"]

3.) اكتب الكود المدمج في ملف (باستخدام file_put_contents) وقم بتحميله باستخدام وظيفة wp_enqueue_scripts.

4.) قم بإلغاء تسجيل جميع البرامج النصية/المقابض التي تم دمجها، ويتم ذلك بعد إكمال العملية الموضحة في الفقرة السابقة (إذا قمنا بإلغاء تسجيل برنامج نصي، فسيتم أيضًا إلغاء تسجيل البرنامج النصي التابع له).

لجعل المحرك يقوم بكل هذه المهام، قم بلصق الكود التالي في ملف jobs.php:

الكود: add_action("wp_enqueue_scripts"، "merge_all_scripts"، 9999)؛
الدالة merge_all_scripts()
{
الدالة show_head_scripts())(

/*
#1. إعادة ترتيب المقابض بناءً على تبعيتها،
سيتم حفظ النتيجة في خاصية to_do ($wp_scripts->to_do)
*/
$wp_scripts->all_deps($wp_scripts->queue);

// موقع الملف الجديد: E:xampp\htdocs\wordpresswp-content\theme\wdc\merged-script.js
$merged_file_location = get_stylesheet_directory() . الدليل_الفاصل. "merged-script.js";

$merged_script = "";

// قم بتكرار ملفات جافا سكريبت واحفظها في المتغير $merged_script
foreach($wp_scripts->to_do كمقبض $)
{
/*
تنظيف عنوان URL، على سبيل المثال wp-content/themes/wdc/main.js?v=1.2.4
أصبح wp-content/themes/wdc/main.js
*/
$src = strtok($wp_scripts->registered[$handle]->src, "؟");

/**
#2. الجمع بين ملف جافا سكريبت.
*/
// إذا كان src هو عنوان URL http / https
إذا (strpos($src, "http") !== خطأ)
{
// احصل على عنوان URL لموقعنا، على سبيل المثال: http://webdevzoom.com/wordpress
$site_url = site_url();

/*
إذا كنا على خادم محلي، فقم بتغيير عنوان url إلى المسار النسبي،
على سبيل المثال http://webdevzoom.com/wordpress/wp-content/plugins/wpnewsman/css/menuicon.css
أصبح: /wp-content/plugins/wpnewsman/css/menuicon.css،
هذا لإعادة استخدام طلب HTTP

إذا لم يكن الأمر كذلك، على سبيل المثال. https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css،
ثم اتركه كما هو (سوف نتخطاه)
*/
إذا (strpos($src, $site_url)!== خطأ)
$js_file_path = str_replace($site_url, "", $src);
آخر
$js_file_path = $src;

/*
لكي نتمكن من استخدام وظيفة file_get_contents، نحتاج إلى إزالة الشرطة المائلة،
على سبيل المثال /wp-content/plugins/wpnewsman/css/menuicon.css
أصبح wp-content/plugins/wpnewsman/css/menuicon.css
*/
$js_file_path = ltrim($js_file_path, "/");
}
آخر
{
$js_file_path = ltrim($src, "/");
}

// تحقق من وجود ملف الطقس ثم ادمجه
إذا (ملف_موجود($js_file_path))
{
// #3. تحقق من وجود wp_localize_script
$localize = "";
إذا (@key_exists("data"، $wp_scripts->مسجل[$handle]->extra)) (
$localize = $obj->extra["data"] . "؛"؛
}
$merged_script .= $localize . file_get_contents($js_file_path) . "؛"؛
}
}

// اكتب البرنامج النصي المدمج في دليل السمة الحالي
file_put_contents($merged_file_location, $merged_script);

// #4. قم بتحميل عنوان URL للملف المدمج
wp_enqueue_script("merged-script", get_stylesheet_directory_uri() . "/merged-script.js");

// 5. إلغاء تسجيل المقابض
foreach($wp_scripts->to_do كمقبض $)
{
wp_deregister_script($handle);
}
}

التحقق من نجاح عملية الدمج

انتقل إلى صفحة المدونة، وافتح المصدر وابحث عن ملف merged-script.js المتصل فيه

ثم تأكد من عدم وجود أخطاء في البرنامج النصي المدمج عن طريق فتح "أدوات المطور" في متصفحك (اضغط على F12 في جوجل كروم) وحدد علامة التبويب وحدة التحكم.

تعرض وحدة التحكم نص الخطأ وتشير إلى الموقع الذي حدث فيه الخطأ. إذا لم تكن هناك كلمات بذيئة في ملف merged-script.js، فكل شيء على ما يرام.

التحقق من وظائف البرامج النصية الأخرى التي لم تشارك في عملية الدمج.

المقال الأصلي باللغة الإنجليزية الذي قرأته قطتك هناك.

77

أحاول تحسين أداء الموقع من خلال دمج وضغط ملفات CSS وJS. سؤالي يتعلق أكثر بالخطوات (المحددة) حول كيفية تحقيق ذلك، نظرًا للموقف الفعلي الذي واجهته (على الرغم من أن هذا يجب أن يكون شائعًا بالنسبة للمطورين الآخرين أيضًا).

بالنسبة لإصدار منتج، أرغب في دمج 3 ملفات CSS في ملف واحد وضغطها باستخدام YUI Compressor، على سبيل المثال. ولكن بعد ذلك سأحتاج إلى تحديث جميع الصفحات التي تحتاج إلى تلك الملفات الثلاثة لربطها بـ CSS الذي تم تغييره حديثًا. يبدو هذا عرضة للخطأ (على سبيل المثال، تقوم بحذف وإضافة بعض الأسطر إلى العديد من الملفات). أي نهج آخر أقل خطورة؟ نفس المشكلة بالنسبة لملفات JS.

  • 13 إجابة
  • فرز:

    نشاط

12

يمكنك تشغيله في مهمة النمل ومن ثم تضمينه في رسائلك/خطافات الالتزام المسبق إذا كنت تستخدم svn/git.

تحديث: أستخدم حاليًا النخر مع CONCAT، والتقليل من أهمية المساهمات وتشويهها. يمكنك استخدامه مع مراقب ليقوم بإنشاء ملفات مصغرة جديدة فيه خلفيةفي كل مرة يتغير المصدر. لا يقوم uglify contrib بتقسيم سجلات وحدة التحكم فحسب، بل يزيل أيضًا الوظائف والخصائص غير المستخدمة.

19

سأحتاج إلى تحديث جميع الصفحات التي تحتاج إلى هذه الملفات الثلاثة لربطها بـ CSS الذي تم جذره حديثًا.

أولاً، أود أن أقول إنه يجب أن يكون لديك لقب عام. لذلك ليست هناك حاجة لتغيير جميع الرؤوس عند الضرورة. ممارسة جيدة- لها عنوان واحد أو 2-3. وبما أن صفحتك مطلوبة، يمكنك تغيير عنوانك. لذا، عندما تريد توسيع تطبيق الويب الخاص بك، فسيكون ذلك أقل خطورة ومملًا.

لم تذكر بيئة التطوير الخاصة بك. يمكنك أن ترى أن هناك العديد من أدوات الضغط المدرجة لبيئات مختلفة. وأنت تستخدم أداة جيدةأي ضاغط YUI.

6

لا أرى أنك تذكر نظامًا لإدارة المحتوى (Wordpress، Joomla، Drupal، وما إلى ذلك) ولكن إذا كنت تستخدم أي نظام إدارة محتوى شائع، فستتوفر لديه جميع المكونات الإضافية/الوحدات النمطية ( خيارات مجانية)، مما سيؤدي إلى تصغير ملفات CSS وJS الخاصة بك وتخزينها مؤقتًا.

يمنحك استخدام مكون إضافي القدرة على الاحتفاظ بالإصدارات غير المضغوطة متاحة للتحرير، وبعد ذلك عندما تقوم بإجراء تغييرات، يقوم المكون الإضافي تلقائيًا بدمج تغييراتك وإعادة ضغط الملف. فقط تأكد من اختيار مكون إضافي يسمح لك باستبعاد الملفات (مثل ملف js مخصص) إذا أدى إلى كسر أي شيء.

لقد حاولت في الماضي الاحتفاظ بهذه الملفات يدويًا ويتحول الأمر دائمًا إلى كابوس للصيانة. حظا سعيدا، آمل أن يكون هذا ساعد.

3

إذا كنت تقوم بالمعالجة المسبقة للملفات التي تخدمها، فمن المحتمل أنك ستحتاج إلى إعداد نظام بناء مناسب (مثل Makefile). بهذه الطريقة يكون لديك الملفات الأصلية دون تكرار، وكلما قمت بإجراء تغييرات، يمكنك تشغيل "make" وتحديث جميع الملفات التي تم إنشاؤها تلقائيًا. إذا كان لديك بالفعل نظام بناء مثبت، فتعرف على كيفية عمله واستخدامه. إذا لم يكن الأمر كذلك، فأنت بحاجة إلى إضافته.

لذا اكتشف أولاً كيفية دمج ملفاتك وتصغيرها سطر الأوامر(راجع وثائق YUICompressor). قم بتعيين دليل للمواد التي يتم إنشاؤها تلقائيًا، منفصلاً عن المواد التي تعمل عليها ولكن يمكن الوصول إليها من خلال خادم الويب، وقم بالإخراج هناك، مثل gen/scripts/combination.js. ضع الأوامر التي استخدمتها في ملف Makefile وكرر "إجراء" في كل مرة تقوم فيها بإجراء تغيير وتريد أن يسري مفعوله. ثم قم بتحديث الرؤوس في الملفات الأخرى للإشارة إلى الملفات المدمجة والملفات الصغيرة.

5

بالنسبة للأشخاص الذين يريدون شيئًا أكثر خفة الوزن ومرونة، قمت بإنشاء js.sh اليوم لحل هذه المشكلة. إنها أداة سطر أوامر بسيطة تستهدف ملفات JS، والتي يمكن تعديلها بسهولة للتعامل مع ملفات CSS. المزايا:

  • يمكن تخصيصه بسهولة ليستخدمه العديد من المطورين في المشروع
  • يجمع ملفات JS بالترتيب المحدد في script_order.txt
  • قم بضغطها باستخدام برنامج Closure Compiler من Google
  • يفصل JS إلى< 25kb куски где возможно, так как iPhone не будет кэшировать что-либо большее, чем 25kb.
  • يخلق صغيرة ملف PHPمع العلامات التي يمكنك تضمينها عند الاقتضاء
  • الاستخدام: js.sh -u اسمك

يمكن أن يستخدم بعض التحسينات، ولكنه أفضل لحالة الاستخدام الخاصة بي من جميع الحلول الأخرى التي رأيتها حتى الآن.

4

الخطوة الأولى للتحسين هي تقليل الملفات. (أوصي بشدة بـ GULP للتصغير والتحسين. فهو حل بسيط لساعات طويلة، ويتم ضغط التثبيت وجميع الملفات في وقت واحد. ويدعم جميع CSS، وJS، وsass، وما إلى ذلك.)

أو حل المدرسة القديمة:

1) بشكل عام، كعملية تحسين، لتحسين أداء الموقع، حاول دمج كل ملفات CSS في ملف واحد وضغط الملف باستخدام البوصلة. بهذه الطريقة سيتم استبدال طلباتك المتعددة لـ CSS الثابتة بطلب واحد.

2) مشكلة JS المتعددة، والتي يمكنك حلها باستخدام CDN (أو المكتبات المستضافة من Google) بحيث تنتقل الطلبات إلى خادم مختلف عن خادمك. بهذه الطريقة، لا ينتظر الخادم اكتمال الطلب السابق قبل إرسال الطلب التالي.

3) إذا كان لديك جافا سكريبت مخزن محليًا، فقم بإخفاء كل ملف باستخدام البرنامج الإضافي Brackets "Compress JavaScript". إنها في الأساس نقرة واحدة لضغط JavaScript. بين قوسين - محرر مجانيلـ CSS وJS، ولكن يمكن استخدامها لـ PHP واللغات الأخرى. هناك العديد من المكونات الإضافية للاختيار من بينها لكل من مطوري الواجهة الأمامية والجهات الخارجية. بشكل عام، "نقرة واحدة" لتنفيذ كل هذه الأوامر (التي لا تزال متعددة). راجع للشغل، حلت الأقواس محل برنامج Dreamweaver الباهظ الثمن؛)

3) حاول استخدام أدوات مثل Sass وCompass وأقل لتقليل CSS.

ملاحظة: حتى بدون استخدام المزج أو المتغيرات، سيتم ضغط CSS الخاص بك (ببساطة باستخدام CSS خالص وسيقوم أمر "look" الخاص بـ Compass بضغطه نيابةً عنك).

نأمل أن يساعد هذا!

1

في مشروعي السيمفوني أفعل شيئًا كهذا

(#layout.html.twig #) (% أنماط الكتلة %) (% if app.environment == "prod" %) (% else %) (% endif %) (% endblock %) (# some-view.html .twig #) (% Extends "AppMainBundle::layout.html.twig" %) (% أنماط الكتلة %) ((parent() )) (% if app.environment != "prod" %) (% else %) (%endblock%)

عندما يكون إصدار DEV جاهزًا للإنتاج الذي أستخدمه

يجمع محتويات اثنين أو أكثر من كائنات JavaScript المحددة. تتم كتابة نتيجة الاتحاد إلى أول هذه الكائنات (سيتم إرجاعها أيضًا بواسطة الوظيفة بعد تنفيذها). الدالة لها استخدامين:

يجمع محتويات الكائنات هدف, كائن1,.., كائنN، ووضع النتيجة في كائن هدف.

ميزات الاستخدام

إذا قمت بتحديد كائنين أو أكثر، فستكون النتيجة اتحادهم. في حالة تحديد كائن واحد فقط، ستضيف الدالة Extend() محتوياتها إلى الكائن $(jQuery) العام. بهذه الطريقة، يمكنك توسيع إمكانيات المكتبة عن طريق إضافة وظائفك الخاصة إلى مساحة الاسم الخاصة بها. يمكن أن يكون هذا مفيدًا عند كتابة المكونات الإضافية.

لنتذكر أنه نتيجة لدمج الكائنات، سيتم تغيير أولها (سيتم إرجاعها أيضًا كنتيجة للدالة Extend()). إذا كنت لا تريد تغيير أي من الكائنات المحددة، فيمكنك تعيينها كمعلمة هدفكائن فارغ:

كائن var = $.extend (( ) , object1, object2) ;

النسخ العودي (العميق).

عند دمج الكائنات، تتم الكتابة فوق الحقول المطابقة:

var object1 = (Apple: 0, Cherry: 97);

var object2 = (apple: 5, durian: 100);

$.extend(object1, object2);

ومع ذلك، إذا قمت بتحديد true باعتباره المعلمة الأولى، فسيتم إجراء نسخة عميقة، حيث سيتم تطبيق إجراء الدمج على الكائنات الداخلية (بدلاً من إعادة الكتابة كما في الحالة السابقة):

var object1 = (تفاحة: 0، موز: (الوزن: 52، السعر: 100)، كرز: 97)؛

var object2 = ( الموز: ( السعر: 200 ) , الدوريان: 100 ) ; $.extend(true, object1, object2);/* النتيجة: ( تفاحة:0، موز:(الوزن:52، السعر:200)، دوريان:100، كرز:97، ); */ يقوم الأسلوب Object.assis() بنسخ كافة الخصائص الخاصة القابلة للإحصاء من واحد أو أكثركائنات المصدر

إلى أ

الكائن المستهدف

. يقوم بإرجاع الكائن الهدف.

يتم تخزين مصدر هذا المثال التفاعلي في مستودع GitHub. إذا كنت ترغب في المساهمة في مشروع الأمثلة التفاعلية، فيرجى استنساخ https://github.com/mdn/interactive-examples وإرسال طلب سحب إلينا.

Syntax Object.assis(target,...sources) Parameters target الكائن الهدف - ما الذي سيتم تطبيق خصائص المصادر عليه، والذي يتم إرجاعه بعد تعديله.

مصادر الكائن (الكائنات) المصدر - الكائنات التي تحتوي على الخصائص التي تريد تطبيقها. قيمة الإرجاع الكائن المستهدف.وصف تتم الكتابة فوق الخصائص الموجودة في الكائن الهدف بواسطة الخصائص الموجودة في المصادر إذا كانت تحتوي على نفس المفتاح. خصائص "المصادر اللاحقة" تحل محل الخصائص السابقة.ينسخ الأسلوب Object.assis() فقط لا تعد ولا تحصىو

ملك

خصائص من كائن المصدر إلى كائن الهدف. يستخدم [] على المصدر و [] على الهدف، لذلك سيتم استدعاء الحروف والمحددات. لذلك

يعين

الخصائص، مقابل نسخ أو تحديد خصائص جديدة. قد يجعله هذا غير مناسب لدمج خصائص جديدة في نموذج أولي إذا كانت مصادر الدمج تحتوي على حروف.

لنسخ تعريفات الخاصية (بما في ذلك إمكانية تعدادها) إلى نماذج أولية، استخدم Object.getOwnPropertyDescriptor() وObject.defineProperty() بدلاً من ذلك.

يتم نسخ كل من خصائص السلسلة والرمز.

اختبار الوظيفة () ("استخدام صارم"؛ Let obj1 = ( a: 0 , b: ( c: 0)); Let obj2 = Object.assis((), obj1); console.log(JSON.stringify(obj2) ); // ( "a": 0, "b": ( "c": 0)) obj1.a = 1; 0)) console.log(JSON.stringify(obj2)); // ("a": 0, "b": ("c": 0)) obj2.a = 2 ; obj1)); // ( "a": 1, "b": ( "c": 0)) console.log(JSON.stringify(obj2)); : 0)) obj2.b.c = 3; console.log(JSON.stringify(obj1)); // ( "a": 1, "b": ( " c": 3)) console.log(JSON.stringify (obj2)); // ( "a": 2, "b": ( "c": 3)) // Deep Clone obj1 = ( a: 0 , b: ( c: 0)); .parse(JSON.stringify(obj1)); obj1.a = 4; console.log(JSON.stringify(obj3)); ( "a": 0, "b": ( "c": 0)) ) test ()؛

دمج الكائنات const o1 = ( a: 1 ); ثابت o2 = ( ب: 2 ); ثابت o3 = ( ج: 3 ); const obj = Object.assis(o1, o2, o3); console.log(obj); // ( أ: 1، ب: 2، ج: 3 ) console.log(o1); // ( a: 1, b: 2, c: 3 )، تم تغيير الكائن الهدف نفسه. دمج الكائنات ذات الخصائص نفسها const o1 = ( a: 1, b: 1, c: 1 ); const o2 = ( ب: 2, ج: 2 ); ثابت o3 = ( ج: 3 ); const obj = Object.assis((), o1, o2, o3); console.log(obj); // ( أ: 1، ب: 2، ج: 3 )

تتم الكتابة فوق الخصائص بواسطة كائنات أخرى لها نفس الخصائص لاحقًا بترتيب المعلمات.

نسخ الخصائص المكتوبة بالرمز const o1 = ( a: 1 ); ثابت o2 = ( : 2 ); const obj = Object.assis((), o1, o2); console.log(obj); // ( a: 1, : 2 ) (راجع الخطأ 1207182 في Firefox) Object.getOwnPropertySymbols(obj); // لا يمكن نسخ الخصائص الموجودة في سلسلة النموذج الأولي والخصائص غير القابلة للإحصاء const obj = Object.create(( foo: 1 ), ( // foo موجود في سلسلة النموذج الأولي لـ obj. bar: ( value: 2 // bar is خاصية غير قابلة للتعداد )، baz: ( القيمة: 3، قابلة للتعداد: صحيح // baz هي خاصية قابلة للتعداد. ) )); 3 ) سيتم تغليف العناصر الأولية بالكائنات const v1 = "abc"; const v3 = 10; const obj = Object.assi(()) , v1, null, v2, undefine, v3, v4); سيتم تغليفه، وسيتم تجاهل القيمة الفارغة وغير المحددة. // ملاحظة، يمكن أن تحتوي مغلفات السلسلة فقط على خصائص قابلة للتعداد console.log(obj); : "c" ) ستؤدي الاستثناءات إلى مقاطعة مهمة النسخ المستمرة const target = Object.defineProperty((), "foo", ( value: 1 , writable: false )); // target.foo هو كائن خاصية للقراءة فقط. assi(target, ( bar: 2), ( foo2: 3, foo: 3, foo3: 3), ( baz: 4 )) ; // TypeError: "foo" للقراءة فقط // يتم طرح الاستثناء عند التعيين target.foo console.log(target.bar); // 2، تم نسخ المصدر الأول بنجاح. console.log(target.foo2); // 3، تم نسخ الخاصية الأولى للمصدر الثاني بنجاح. console.log(target.foo); // 1، تم طرح الاستثناء هنا. console.log(target.foo3); // غير محدد، انتهت طريقة التعيين، ولن يتم نسخ foo3. console.log(target.baz); //غير محدد الثالثولن يتم نسخ المصدر سواء. نسخ أدوات الوصول const obj = ( foo: 1, get bar() ( return 2; )); Let Copy = Object.assis((), obj); console.log(نسخ); // ( foo: 1, bar: 2 ) // قيمة Copy.bar هي القيمة المرجعة لـ obj.bar"s getter". // هذه وظيفة تعيين تقوم بنسخ الواصفات الكاملة function CompleteAssign(target, ...sources) (sources.forEach(source => ( Let descriptors = Object.keys(source).reduce((descriptors, key) => ( descriptors = Object.getOwnPropertyDescriptor(source, key); return descriptors;, ()); // بشكل افتراضي، يقوم Object.عيّن بنسخ الرموز القابلة للعد أيضًا Object.getOwnPropertySymbols(source).forEach(sym => (let descriptor = Object .getOwnPropertyDescriptor(source,sym); console.log(نسخ); // ( foo:1, get bar() ( return 2 ) ) Polyfill

لا يدعم هذا polyfill خصائص الرمز، نظرًا لأن ES5 لا يحتوي على رموز على أي حال:

إذا (typeof Object.assi !== "function") ( // يجب أن يكون قابلاً للكتابة: صحيح، قابل للتعداد: خطأ، قابل للتكوين: صحيح Object.defineProperty(Object, "assistant", ( value: function sign(target, varArgs) ( // .طول الوظيفة هو 2 "استخدام صارم"؛ الهدف)؛ لـ (مؤشر فار = 1؛ مؤشر< arguments.length; index++) { var nextSource = arguments; if (nextSource !== null && nextSource !== undefined) { for (var nextKey in nextSource) { // Avoid bugs when hasOwnProperty is shadowed if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to = nextSource; } } } } return to; }, writable: true, configurable: true }); }

تحديد مواصفة
أحدث مسودة ECMAScript (ECMA-262)
تعريف "Object.sign" في تلك المواصفات.
توافق المتصفح

يتم إنشاء جدول التوافق الموجود في هذه الصفحة من البيانات المنظمة. إذا كنت ترغب في المساهمة في البيانات، يرجى مراجعة https://github.com/mdn/browser-compat-data وإرسال طلب سحب إلينا.

تحديث بيانات التوافق على GitHub

خادم سطح المكتب المحمول Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome لنظام Android Firefox لنظام Android Opera لنظام Android Safari على iOS Samsung Internet Node.jsتعيين
دعم كروم الكامل 45حافة الدعم الكامل 12فايرفوكس الدعم الكامل 34IE لا يوجد دعمأوبرا الدعم الكامل 32سفاري الدعم الكامل 9WebView Android الدعم الكامل 45دعم كروم أندرويد الكامل 45فايرفوكس أندرويد الدعم الكامل 34أوبرا أندرويد الدعم الكامل 32دعم Safari iOS الكامل 9سامسونج الإنترنت أندرويد الدعم الكامل 5.0دعم كامل لـNodejs 4.0.0
الأسطورة الدعم الكامل الدعم الكامل لا يوجد دعم لا يوجد دعم

مدة القراءة: 2 دقيقة.

تم النشر بتاريخ 20/04/2017

مرحبًا! نواصل تحليل المكونات الإضافية الأكثر إثارة للاهتمام والأكثر فائدة لموقع WordPress! ستتعلم اليوم كيفية الجمع بين ملفات CSS وJS لتحسين موقع الويب الخاص بك. افتراضيًا، يتم عرض جميع ملفات CSS وJS بشكل منفصل، مما يؤدي إلى تحميل الموقع. يمكنك دمج هذه الملفات في ملف واحد لجعل تحميل الموقع أسرع. البرنامج المساعد بسيط جدا ومفيد! يمكنك تثبيت المكون الإضافي مباشرةً من لوحة إدارة WordPress. انتقل إلى الصفحة:الإضافات - إضافة جديد


، أدخل اسم المكون الإضافي في نموذج البحث، ثم اضغط على Enter، وقم بتثبيت المكون الإضافي وتنشيطه.

- استخدم البوصلة، حدد المربع هنا لتمكين المكون الإضافي.

- مسار مترجم البوصلة، يشار هنا إلى مسار مترجم الملف.

- مسار مترجم Sass (مطلوب فقط لتنسيق .sass - وليس .scss)، المسار (العنوان) لملفات CSS.

- مسار برنامج التحويل البرمجي لـ CoffeeScript، مسار البرامج النصية.

– ضغط الأنماط وتحسين الأنماط.

- ضغط البرامج النصية وتحسين البرامج النصية.

- سمة غير متزامنة على علامة البرنامج النصي للتذييل، وتحميل البرامج النصية بشكل غير متزامن.

- الموارد المراد استبعادها، هنا يمكنك استبعاد نصوص أو أنماط معينة.

– تفعيل السجل، تمكين تسجيل ملف السجل.

– وضع التطوير، إذا قمت بتمكين هذه المعلمة، فسيتم حذف ذاكرة التخزين المؤقت في كل مرة يتم فيها إعادة تحميل الصفحة.

- حفظ، حفظ التغييرات.


- إفراغ ذاكرة التخزين المؤقت لـ AssetsMinify، انقر فوق علامة التبويب هذه لحذف ذاكرة التخزين المؤقت يدويًا. كل شيء جاهز!بعد حفظ الإعدادات، سيتم دمج كافة البرامج النصية والأنماط الموجودة على موقعك في ملف واحد. يشير هذا إلى البرامج النصية والأنماط التي يتم عرضها