Jinsi ya kuchanganya faili za Javascript kwenye WordPress kuwa faili moja. Kuchanganya vitu Jinsi ya kuchanganya faili za js kuwa moja

Hatua hii inapunguza idadi ya maombi kwa seva, na hivyo kuharakisha tovuti. Hii ni kweli hasa kwa HTTP1.1 na kurasa zinazohitaji zaidi ya maombi 20. Kwa kuongeza, hii inaongeza pointi katika mtihani (ambayo kwa wengi ni jambo muhimu zaidi).

Jinsi ya Kuchanganya Faili za Javascript katika WordPress kuwa Faili Moja - Njia ya Hakuna-Plugin

Kwa ujumla, kuna programu-jalizi za kazi hii, lakini katika maoni kwa programu-jalizi hizo kuna hakiki nyingi kwa roho ya "haifanyi kazi."

Ikiwa utafanya hivyo "kabisa kwa mikono", basi utalazimika kuchukua piles zote za msimbo kwa mikono na kuziiga kwenye faili moja. Njia hii haipendekezi, kwani ina shida nyingi:

1.) Ni vigumu kupata jina la kifafanuzi la faili ya javascript, hii ni tofauti na faili za CSS ambapo tunaweza kupata jina la maelezo ya sifa ya kitambulisho. Ncha hii ni muhimu kwa sababu tunaihitaji ili kubatilisha usajili wa hati baada ya mchakato wa kuunganisha kukamilika.

2.) Ukosefu wa kubadilika. Iwapo kuna nyongeza au utoaji wa faili ya javascript, inabidi tuunganishe tena faili hiyo sisi wenyewe.

3.) Haiwezekani kuhakikisha kwamba vipande vya msimbo vilivyounganishwa havitapingana. Hii inahusiana na mlolongo wa simu za kukokotoa na wigo tofauti wa javascript.

Jinsi ya Kuchanganya Faili za Javascript katika WordPress kuwa Faili Moja - Moja kwa moja

Ili kuunganisha kiotomatiki faili za javascript katika WordPress, kwanza unahitaji kukusanya njia za faili za javascript pamoja na majina ya vipini vyake (sawa na njia ya mwongozo, kiotomatiki pekee).

Tunaweza kupata maelezo yote kuhusu faili za javascript zilizopakiwa kwenye ukurasa wa WordPress katika kitu cha WP_Scripts.

Kipengee hiki kimehifadhiwa katika tofauti ya $wp_scripts na inaitwa katika sehemu za violezo kama vile wp_head, wp_print_scripts (wp_enqueue_scripts), wp_footer, init. Hapa kuna kesi kadhaa za kawaida.

Mara moja. Katika kichwa (lebo) tunaweza kufafanua hii kwa kutumia ndoano ya wp_head.

Mbili. Kwenye kijachini (kabla ya lebo) tunaweza kufafanua hii kwa kutumia ndoano ya wp_footer.

Fungua faili ya function.php kwa uhariri, iliyoko kwenye folda ya mandhari inayotumika, na uongeze msimbo hapo:

Msimbo: add_action("wp_head", "show_head_scripts", 9999);
add_action("wp_footer", "show_footer_scripts", 9999);

// Kuonekana juu, kabla ya kufungua mwili
kazi show_head_scripts())(
kimataifa $wp_scripts;
mwangwi ""; print_r($wp_scripts->mefanywa); mwangwi "";
}
// Kuonekana chini, baada ya basement
kazi show_footer_scripts())(
kimataifa $wp_scripts;
mwangwi ""; print_r($wp_scripts->mefanywa); mwangwi "";
}

Sasa tunafungua ukurasa, angalia chanzo chake na uone kuna orodha za njia za faili za JS (juu na chini ya ukurasa).

Kuchanganya faili za javascript kuwa faili moja katika WordPress

Ili kuunganisha, unahitaji kukusanya njia za faili ambazo zinaweza kutambuliwa kiotomatiki kabla ya maudhui kuonyeshwa. Ndoano ya wp_enqueue_scripts inafaa kwa hili. Kuna baadhi ya hasara kwa hili (ilivyoelezwa hapa chini), lakini hii ndiyo hila pekee tunaweza kutumia moja kwa moja.

Jinsi hii inafanywa (maelezo ya mantiki ya nambari):

1.) Ncha ya faili ya javascript inakiliwa kulingana na utegemezi wake ili baada ya kuunganisha inaweza kukimbia bila makosa. Tunaweza kufanya hivi kwa kupiga njia ya all_deps kwenye kitu cha WP_Scripts($wp_scripts->all_deps($wp_scripts->foleni));

2.) Kurejesha msimbo katika faili za javascript (kwa kutumia file_get_contents) na kuunganishwa na zingine. Ikiwa ni pamoja na hati ya ujanibishaji wp_localize_script (ikiwa inapatikana). Hati hii inaweza kupatikana katika $ wp_scripts-> iliyosajiliwa ["kushughulikia"] -> ziada ["data"]

3.) Andika msimbo uliounganishwa kwenye faili (kwa kutumia file_put_contents) na uipakie kwa kutumia kazi ya wp_enqueue_scripts.

4.) Batilisha usajili wa maandishi/vipini vyote ambavyo vimeunganishwa, hii inafanywa baada ya kukamilisha mchakato ulioelezwa katika aya iliyotangulia (ikiwa tunaondoa hati, basi hati yake tegemezi pia haitasajiliwa).

Ili kufanya injini ifanye kazi hizi zote, bandika msimbo ufuatao kwenye faili ya function.php:

Msimbo: add_action("wp_enqueue_scripts", "merge_all_scripts", 9999);
kazi merge_all_scripts()
{
kimataifa $wp_scripts;

/*
#1. Panga upya vipini kulingana na utegemezi wake,
Matokeo yatahifadhiwa katika to_do mali ($wp_scripts->to_do)
*/
$wp_scripts->all_deps($wp_scripts->foleni);

// Eneo jipya la faili: E:xampp\htdocs\wordpresswp-content\theme\wdc\merged-script.js
$merged_file_location = get_stylesheet_directory() . DIRECTORY_SEPARATOR . "meged-script.js";

$merged_script = "";

// Pindua faili za javascript na uhifadhi kwa $merged_script kutofautisha
foreach($wp_scripts->to_do as $handle)
{
/*
Safisha url, kwa mfano wp-content/themes/wdc/main.js?v=1.2.4
kuwa wp-content/themes/wdc/main.js
*/
$src = strtok($wp_scripts->imesajiliwa[$handle]->src, "?");

/**
#2. Unganisha faili ya javascript.
*/
// Ikiwa src ni url http / https
ikiwa (strpos($src, "http") !== si kweli)
{
// Pata url ya tovuti yetu, kwa mfano: http://webdevzoom.com/wordpress
$site_url = site_url();

/*
Ikiwa tuko kwenye seva ya ndani, basi badilisha url hadi njia ya jamaa,
k.m. http://webdevzoom.com/wordpress/wp-content/plugins/wpnewsman/css/menuicon.css
kuwa: /wp-content/plugins/wpnewsman/css/menuicon.css,
hii ni kwa ajili ya kupunguza Ombi la HTTP

Ikiwa sivyo, k.m. https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css,
kisha uondoke kama ilivyo (tutairuka)
*/
ikiwa (strpos($src, $site_url) !== si kweli)
$js_file_path = str_replace($site_url, "", $src);
mwingine
$js_file_path = $src;

/*
Ili kuweza kutumia faili_get_contents kazi tunahitaji kuondoa kufyeka,
k.m. /wp-content/plugins/wpnewsman/css/menuicon.css
kuwa wp-content/plugins/wpnewsman/css/menuicon.css
*/
$js_file_path = ltrim($js_file_path, "/");
}
mwingine
{
$js_file_path = ltrim($src, "/");
}

// Angalia faili ya hali ya hewa ipo kisha unganisha
ikiwa (file_exists($js_file_path))
{
// #3. Angalia wp_localize_script
$localize = "";
ikiwa (@key_exists("data", $wp_scripts->imesajiliwa[$handle]->ziada)) (
$localize = $obj->extra["data"] . ";";
}
$merged_script .= $localize . file_get_contents($js_file_path) . ";";
}
}

// andika hati iliyounganishwa kwenye saraka ya mada ya sasa
file_put_contents($merged_file_location, $merged_script);

// #4. Pakia URL ya faili iliyounganishwa
wp_enqueue_script("merged-script", get_stylesheet_directory_uri() . "/merged-script.js");

// 5. Futa vishikizo vya usajili
foreach($wp_scripts->to_do as $handle)
{
wp_deregister_script($ handle);
}
}

Kuangalia kama muunganisho umefaulu

Nenda kwenye ukurasa wa blogu, fungua chanzo na utafute faili iliyounganishwa iliyounganishwa-script.js ndani yake

Kisha hakikisha kuwa hakuna makosa katika hati iliyounganishwa kwa kufungua "zana za wasanidi programu" za kivinjari chako (bonyeza F12 kwenye Google Chrome) na uchague kichupo cha Console.

Dashibodi huonyesha maandishi ya hitilafu na kurejelea mahali ilipotokea. Ikiwa hakuna maneno ya laana kwenye faili iliyounganishwa-script.js, basi kila kitu ni sawa.

Angalia utendakazi wa hati zingine ambazo hazikushiriki katika muunganisho.

Makala asilia kwa kiingereza wewe paka ulisoma hapo.

Inachanganya maudhui ya vitu viwili au zaidi vilivyobainishwa vya JavaScript. Matokeo ya muungano imeandikwa kwa kwanza ya vitu hivi (pia itarejeshwa na kazi baada ya utekelezaji wake). Kitendaji kina matumizi mawili:

huchanganya yaliyomo ya vitu lengo, kitu 1,.., kituN, kuweka matokeo kwenye kitu lengo.

Makala ya matumizi

Ikiwa unataja vitu viwili au zaidi, matokeo yatakuwa muungano wao. Iwapo utabainisha kitu kimoja tu, kitendakazi cha extend() kitaongeza yaliyomo kwenye kitu cha kimataifa $(jQuery). Kwa njia hii, unaweza kupanua uwezo wa maktaba kwa kuongeza vitendaji vyako kwenye nafasi yake ya majina. Hii inaweza kuwa muhimu wakati wa kuandika programu-jalizi.

Hebu tukumbuke kwamba kama matokeo ya kuunganisha vitu, ya kwanza yao itabadilishwa (pia itarejeshwa kama matokeo ya kupanua () kazi). Ikiwa hutaki kitu chochote kati ya vilivyoainishwa kibadilishwe, unaweza kuweka kama kigezo lengo kitu tupu:

var object = $.extend (( ) , object1, object2) ;

Kunakili kwa kujirudia (kwa kina).

Wakati wa kuunganisha vitu, sehemu zinazolingana hufutwa:

var object1 = (apple: 0, cherry: 97); var object2 = (apple: 5, durian: 100); $.panua(kitu1, kitu2); /* Matokeo yatakuwa kama ifuatavyo: ( apple:5, cherry:97, durian:100); */

Kwa chaguo-msingi, extend() hufanya muungano usio na kina wa vitu, ikimaanisha kuwa ikiwa vina vitu vingine ndani yao, extend() itazifuta kama katika kesi iliyopita:

var object1 = (apple: 0, ndizi: (uzito: 52, bei: 100), cherry: 97); var object2 = ( ndizi: ( bei: 200 ) , durian: 100 ; $.panua(kitu1, kitu2); /* Matokeo: ( apple:0, ndizi:(bei:200), durian:100, cherry:97, ); */

Walakini, ikiwa utataja kweli kama parameta ya kwanza, basi nakala ya kina itafanywa, ambayo utaratibu wa kuunganisha utatumika kwa vitu vya ndani (badala ya kuandika tena kama katika kesi ya awali):

var object1 = (apple: 0, ndizi: (uzito: 52, bei: 100), cherry: 97); var object2 = ( ndizi: ( bei: 200 ) , durian: 100 ; $.panua(kweli, kitu1, kitu2); /* Matokeo: ( apple:0, banana:(uzito:52, bei:200), durian:100, cherry:97, ); */

77

Ninajaribu kuboresha utendakazi wa tovuti kwa kujumuisha na kubana faili za CSS na JS. Swali langu linahusiana zaidi na hatua (maalum) za jinsi ya kufanikisha hili, kwa kuzingatia hali halisi niliyokutana nayo (ingawa hii inapaswa kuwa ya kawaida kwa watengenezaji wengine pia).

Kwa toleo la bidhaa, ningependa kuchanganya faili 3 za CSS kuwa moja na kuzikandamiza kwa kutumia, kwa mfano, YUI Compressor. Lakini basi nitahitaji kusasisha kurasa zote zinazohitaji faili hizo 3 ili kuunganishwa na CSS mpya iliyobadilishwa. Hii inaonekana kuwa na makosa (kwa mfano, unafuta na kuongeza mistari kwenye faili nyingi). Njia nyingine yoyote isiyo na hatari? Shida sawa kwa faili za JS.

  • 13 majibu
  • Kupanga:

    Shughuli

12

Unaweza kuiendesha katika kazi ya mchwa na kwa hivyo kuijumuisha kwenye ujumbe wako / ndoano za kujitolea ikiwa unatumia svn/git.

HABARI HII: Kwa sasa ninatumia grunt na CONCAT, kupunguza na kuharibu michango. Unaweza kuitumia pamoja na mtazamaji ili kuifanya iunde faili ndogo ndogo chinichini wakati wowote chanzo kinabadilika. ugify contrib sio tu hugawanya kumbukumbu za kiweko, lakini pia huondoa kazi na mali ambazo hazijatumiwa.

19

Nitahitaji kusasisha kurasa zote zinazohitaji faili hizi 3 ili kuunganishwa na CSS iliyozinduliwa upya.

Kwanza, ningesema kwamba unapaswa kuwa na jina la jumla. Kwa hivyo hakuna haja ya kubadilisha vichwa vyote inapobidi. Mazoezi mazuri ni kuwa na kichwa kimoja au 2-3. Kwa kuwa ukurasa wako unahitajika, unaweza kubadilisha kichwa chako. Kwa hivyo unapotaka kupanua programu yako ya wavuti, itakuwa chini ya hatari na ya kuchosha.

Hujataja mazingira yako ya maendeleo. Unaweza kuona kwamba kuna zana nyingi za kubana zilizoorodheshwa kwa mazingira tofauti. Na unatumia zana nzuri yaani YUI Compressor.

6

Sioni ukitaja mfumo wa usimamizi wa yaliyomo (Wordpress, Joomla, Drupal, n.k.) lakini ikiwa unatumia CMS yoyote maarufu, wana programu-jalizi/moduli zote zinazopatikana (chaguo za bure) ambazo zitapunguza na kuweka akiba ya css yako na. js.

Kutumia programu-jalizi hukupa uwezo wa kuweka matoleo ambayo hayajabanwa yanapatikana kwa ajili ya kuhaririwa, na kisha unapofanya mabadiliko, programu-jalizi hujumuisha kiotomatiki mabadiliko yako na kusisitiza faili tena. Hakikisha tu kwamba umechagua programu-jalizi ambayo itakuruhusu kuwatenga faili (kama faili maalum ya js) ikiwa itavunja chochote.

Nimejaribu hapo awali kuweka faili hizi kwa mikono na kila wakati inabadilika kuwa ndoto ya matengenezo. Bahati nzuri, natumai hii ilisaidia.

3

Ikiwa unafanya usindikaji wa awali wa faili unazohudumia, labda utataka kusanidi mfumo sahihi wa ujenzi (kama vile Makefile). Kwa njia hii una faili asili bila kurudia, na wakati wowote unapofanya mabadiliko, unaendesha "fanya" na usasishe faili zote zinazozalishwa kiotomatiki. Ikiwa tayari una mfumo wa kujenga umewekwa, jifunze jinsi inavyofanya kazi na kuitumia. Ikiwa sivyo, unahitaji kuiongeza.

Kwa hivyo, kwanza tambua jinsi ya kuchanganya na kupunguza faili zako kutoka kwa mstari wa amri (katika nyaraka za YUICmpressor). Teua saraka kwa nyenzo zinazozalishwa kiotomatiki, tofauti na nyenzo unazofanyia kazi lakini zinazoweza kufikiwa na seva ya wavuti, na towe hapo, kwa mfano gen/scripts/combination.js. Weka amri ulizotumia kwenye Makefile na urudie "tengeneza" kila wakati ulipofanya mabadiliko na kutaka yatekeleze. Kisha sasisha vichwa katika faili zingine ili kuelekeza kwa pamoja na faili ndogo.

5

Kwa watu wanaotaka kitu chepesi zaidi na rahisi kubadilika, nimeunda js.sh leo kutatua tatizo hili. Ni zana rahisi ya mstari wa amri inayolenga faili za JS, ambazo zinaweza kubadilishwa kwa urahisi ili kutunza faili za CSS. Manufaa:

  • Inaweza kubinafsishwa kwa urahisi kwa matumizi ya watengenezaji wengi kwenye mradi
  • Inachanganya faili za JS kwa mpangilio uliobainishwa katika script_order.txt
  • zikandamize na Kikusanyaji cha Kufunga cha Google
  • Hutenganisha JS kuwa< 25kb куски где возможно, так как iPhone не будет кэшировать что-либо большее, чем 25kb.
  • Huunda faili ndogo ya PHP yenye vitambulisho ambavyo unaweza kujumuisha inapofaa
  • Matumizi: js.sh -u yourname

Inaweza kutumia maboresho kadhaa, lakini ni bora kwa kesi yangu ya utumiaji kuliko suluhisho zingine zote ambazo nimeona hadi sasa.

4

Hatua ya kwanza ya uboreshaji ni kupunguza faili. (Ninapendekeza sana GULP kwa uboreshaji na uboreshaji. Ni suluhisho rahisi kwa saa, usakinishaji na faili zote zinabanwa mara moja. Inaauni CSS, JS, less, sass, nk.)

AU Suluhisho la shule ya zamani:

1) Kwa ujumla, kama mchakato wa uboreshaji, kuboresha utendaji wa tovuti, jaribu kuunganisha CSS zote kwenye faili moja na ukandamiza faili kwa kutumia Compass. Kwa njia hii maombi yako mengi ya CSS tuli yatabadilishwa na moja.

2) Tatizo la JS nyingi, ambalo unaweza kutatua kwa kutumia CDN (au Maktaba zinazopangishwa na Google) ili maombi yaende kwa seva tofauti na yako. Kwa njia hii, seva haisubiri ombi la awali likamilike kabla ya kutuma lingine.

3) Ikiwa una JavaScript yako iliyohifadhiwa ndani, ficha kila faili kwa kutumia programu-jalizi ya Mabano "Compress JavaScript". Kimsingi ni mbofyo mmoja kukandamiza JavsScript. Mabano ni kihariri cha bure cha CSS na JS, lakini kinaweza kutumika kwa PHP na lugha zingine. Kuna programu-jalizi nyingi za kuchagua kwa wasanidi wa mbele na wa wahusika wengine. Kwa ujumla, "bonyeza moja" kutekeleza amri hizi zote (bado nyingi). Btw, mabano yalibadilisha Dreamweaver yangu ghali sana;)

3) Jaribu kutumia zana kama vile Sass, Dira, kidogo ili kupunguza CSS.

Kumbuka: Hata bila kutumia mchanganyiko au vigeu, CSS yako itabanwa (kwa kutumia tu CSS safi na amri ya Compass ya "kuangalia" itakukandamiza).

Natumai hii inasaidia!

1

Katika mradi wangu wa symphony mimi hufanya kitu kama hiki

(#layout.html.twig #) (% block styles %) (% if app.environment == "prod" %) (% else %) (% endif %) (% endblock %) (# some-view.html .twig #) (% huongeza "AppMainBundle::layout.html.twig" %) (% block styles %) (( parent() )) (% if app.environment != "prod" %) (% else %) (%endblock%)

Wakati toleo la DEV liko tayari kwa uzalishaji ninaotumia

Njia ya Object.assign() inakili sifa zote zinazoweza kuhesabika kutoka kwa moja au zaidi vitu vya chanzo kwa a kitu lengwa. Inarudisha kitu kinacholengwa.

Chanzo cha mfano huu wa mwingiliano huhifadhiwa kwenye hazina ya GitHub. Iwapo ungependa kuchangia mradi wa mifano shirikishi, tafadhali unganisha https://github.com/mdn/interactive-examples na ututumie ombi la kuvuta.

Syntax Object.assign(target , ... sources) Vigezo vinalenga Kitu lengwa - nini cha kutumia sifa za vyanzo, ambacho hurejeshwa baada ya kurekebishwa. sources Kitu/vitu chanzo - vitu vyenye sifa unazotaka kutumia. Thamani ya kurudi

Kitu kinacholengwa.

Maelezo

Sifa katika kitu lengwa zimeandikwa juu ya sifa katika vyanzo ikiwa zina ufunguo sawa. Vyanzo vya baadaye" mali hubadilisha zile za mapema.

Mbinu ya Object.assign() ina nakala pekee kuhesabika na kumiliki mali kutoka kwa kitu chanzo hadi kitu lengwa. Inatumia [] kwenye chanzo na [] kwenye lengwa, kwa hivyo itaomba getters na seti . Kwa hiyo inapeana mali, dhidi ya kunakili au kufafanua sifa mpya. Hii inaweza kuifanya isifae kwa kuunganisha sifa mpya katika mfano ikiwa vyanzo vya kuunganisha vina getters.

Kwa kunakili ufafanuzi wa sifa (pamoja na kuhesabika kwao) katika prototypes, tumia Object.getOwnPropertyDescriptor() na Object.defineProperty() badala yake.

Tabia zote mbili za Kamba na Alama zimenakiliwa.

Katika kesi ya hitilafu, kwa mfano ikiwa mali haiwezi kuandikwa, TypeError inafufuliwa, na kitu kinacholengwa kinabadilishwa ikiwa sifa yoyote itaongezwa kabla ya hitilafu kuinuliwa.

Mifano Kufunga kitu const obj = ( a: 1 ); const copy = Object.assign((), obj); console.log(nakala); // ( a: 1 ) Onyo kwa Deep Clone

Kwa uundaji wa kina, tunahitaji kutumia njia mbadala, kwa sababu Object.assign() hunakili thamani za mali.

Ikiwa thamani ya chanzo ni rejeleo la kitu, inakili tu thamani ya marejeleo.

Function test() ("tumia kali"; let obj1 = ( a: 0 , b: ( c: 0)); let obj2 = Object.assign((), obj1); console.log(JSON.stringify(obj2) ); // ( "a": 0, "b": ( "c": 0)) obj1.a = 1 console.log(JSON.stringify(obj1)); 0)) console.log(JSON.stringify(obj2)); // ("a": 0, "b": ("c": 0)) obj2.a = 2 ; console.log(JSON.stringify() obj1)); // ( "a": 1, "b": ( "c": 0)) console.log(JSON.stringify(obj2)): 2, "b": ( "c" : 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) = 4; console.log(JSON.stringify(obj3)); ("a": 0, "b": ( "c": 0)) ) ();

Kuunganisha vitu const o1 = (a: 1); const o2 = ( b: 2); const o3 = ( c: 3); const obj = Object.assign(o1, o2, o3); console.log(obj); // ( a: 1, b: 2, c: 3 ) console.log(o1); // ( a: 1, b: 2, c: 3 ), kitu cha lengo yenyewe kinabadilishwa. Kuunganisha vitu na mali sawa const o1 = ( a: 1, b: 1, c: 1); const o2 = ( b: 2, c: 2); const o3 = ( c: 3); const obj = Object.assign((), o1, o2, o3); console.log(obj); // ( a: 1, b: 2, c: 3 )

Sifa hizo zimeandikwa tena na vitu vingine ambavyo vina mali sawa baadaye katika mpangilio wa vigezo.

Kunakili sifa zilizochapwa alama const o1 = ( a: 1); const o2 = (: 2); const obj = Object.assign((), o1, o2); console.log(obj); // ( a: 1, : 2 ) (cf. bug 1207182 kwenye Firefox) Object.getOwnPropertySymbols(obj); // Sifa kwenye msururu wa mfano na sifa zisizohesabika haziwezi kunakiliwa const obj = Object.create(( foo: 1 ), ( // foo iko kwenye mnyororo wa prototype wa obj. bar: ( thamani: 2 // bar iko mali isiyohesabika. ), baz: ( thamani: 3, inayoweza kuhesabika: kweli // baz ni mali inayoweza kuhesabika. ) ; 3 ) Nyaraka zitafungwa kwa vitu const v1 = "abc" const v4 = const obj = Object.assign(()) , v1, null, v2, undefined, v3, v4; itakuwa imefungwa, isiyo na maana itapuuzwa // Kumbuka, vifungashio vya kamba pekee vinaweza kuwa na mali zinazoweza kuhesabika console.log(obj); : "c" ) Vighairi vitakatiza kazi inayoendelea ya kunakili const target = Object.defineProperty((), "foo", (thamani: 1 , inayoweza kuandikwa: uongo )); // target.foo ni kipengele cha kusoma tu. assign(target, ( bar: 2), ( foo2: 3, foo: 3, foo3: 3), ( baz: 4 )) ; // TypeError: "foo" inasomwa tu // Isipokuwa hutupwa wakati wa kugawa target.foo console.log(target.bar); // 2, chanzo cha kwanza kilinakiliwa kwa mafanikio. console.log(target.foo2); // 3, mali ya kwanza ya chanzo cha pili ilinakiliwa kwa mafanikio. console.log(target.foo); // 1, ubaguzi umetupwa hapa. console.log(target.foo3); // haijafafanuliwa, njia ya kukabidhi imekamilika, foo3 haitanakiliwa. console.log(target.baz); // haijafafanuliwa, chanzo cha tatu hakitanakiliwa pia. Kunakili viongezi const obj = ( foo: 1, pata mwambaa () ( kurudi 2; ) ); let copy = Object.assign((), obj); console.log(nakala); // ( foo: 1, bar: 2 ) // Thamani ya copy.bar ni thamani ya kurudi obj.bar"s getter". // Hiki ni kitendakazi cha kugawa ambacho kunakili vielezi kamili vya utendaji kazi completeAssign(target, ...sources) ( sources.forEach(source => ( let descriptors = Object.keys(source).reduce((descriptors, key) => ( descriptors = Object.getOwnPropertyDescriptor(chanzo, ufunguo wa maelezo ya kurudisha); // Kwa chaguo-msingi, Object.gawia nakala zinazoweza kuhesabika, pia Object.getOwnPropertySymbols(chanzo).forEach(sym => (acha kielezi = Kitu); .getOwnPropertyDescriptor(chanzo, sym) ikiwa (descriptor.enumerable) (descriptor = descriptor; )); console.log(nakala); // ( foo:1, pata bar() ( return 2 ) ) Polyfill

Ujazo huu wa aina nyingi hauauni sifa za ishara, kwani ES5 haina alama hata hivyo:

Ikiwa (typeof Object.assign !== "kazi") ( // Lazima iandikike: kweli, ihesabiwe: uongo, inayoweza kusanidiwa: true Object.defineProperty(Object, "assign", ( thamani: kazi assign(target, varArgs) ( // .urefu wa chaguo za kukokotoa ni 2 "tumia madhubuti"; ikiwa (lengo === null || lengo === lisilofafanuliwa) ( tupa TypeError mpya("Haiwezi kubadilisha isiyofafanuliwa au kubatilisha kuwa kitu"); ) var hadi = Object( lengo); kwa (var index = 1; index< 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 }); }

Vipimo Vipimo
Rasimu ya Hivi Punde ya ECMAScript (ECMA-262)
Ufafanuzi wa "Object.assign" katika vipimo hivyo.
Utangamano wa kivinjari

Jedwali la uoanifu kwenye ukurasa huu limetolewa kutoka kwa data iliyopangwa. Iwapo ungependa kuchangia data, tafadhali angalia https://github.com/mdn/browser-compat-data na ututumie ombi la kuvuta.

Sasisha data ya uoanifu kwenye GitHub

Seva ya Simu ya Kompyuta ya mezani Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.jskabidhi
Usaidizi kamili wa Chrome 45Msaada kamili wa Edge 12Usaidizi kamili wa Firefox 34IE Hakuna msaada NoMsaada kamili wa Opera 32Msaada kamili wa Safari 9Msaada kamili wa WebView Android 45Usaidizi kamili wa Chrome Android 45Msaada kamili wa Firefox Android 34Msaada kamili wa Opera Android 32Msaada kamili wa Safari iOS 9Samsung Internet Android inasaidia Kamili 5.0nodejs Msaada kamili 4.0.0
Legend Usaidizi kamili Usaidizi kamili Hakuna usaidizi Hakuna usaidizi

Wakati wa kusoma: dakika 2. Iliyochapishwa 04/20/2017

Habari! Tunaendelea kuchambua programu-jalizi zinazovutia na muhimu zaidi za tovuti ya WordPress! Leo utajifunza jinsi ya kuchanganya faili za CSS na JS ili kuboresha tovuti yako. Kwa chaguo-msingi, faili zote za CSS na JS zinaonyeshwa tofauti, na kuunda mzigo kwenye tovuti. Unaweza kuchanganya faili hizi kuwa faili moja ili kufanya tovuti ipakie haraka. Rahisi sana na muhimu Plugin!

Unaweza kusakinisha programu-jalizi moja kwa moja kutoka kwa paneli ya msimamizi wa WordPress. Nenda kwa ukurasa: Programu-jalizi - Ongeza mpya, ingiza jina la programu-jalizi katika fomu ya utafutaji, bonyeza Enter, sakinisha na uamilishe programu-jalizi.


- Tumia Compass, chagua kisanduku hapa ili kuwezesha programu-jalizi.

- Njia ya mkusanyaji wa Compass, njia ya mkusanyaji wa faili imeonyeshwa hapa.

- Njia ya mkusanyaji wa Sass (inahitajika tu kwa umbizo la .sass - si .scss), njia (anwani) ya faili za CSS.

- Njia ya mkusanyaji wa CoffeeScript, njia ya hati.

- Compress mitindo, optimize mitindo.

- Finyaza maandishi, boresha maandishi.

- Sifa ya Async kwenye lebo ya hati ya chini, pakia hati kwa usawa.

- Nyenzo za kuwatenga, hapa unaweza kuwatenga maandishi au mitindo fulani.

- Washa Ingia, wezesha ukataji wa faili za logi.

- Njia ya Ukuzaji, ikiwa utawezesha parameta hii, kashe itafutwa kila wakati ukurasa unapopakiwa tena.

- Hifadhi, hifadhi mabadiliko.

- Kashe ya AssetsMinify Tupu, bofya kwenye kichupo hiki ili kufuta kashe mwenyewe.


Kila kitu kiko tayari! Baada ya kuhifadhi mipangilio, maandishi na mitindo yote kwenye tovuti yako itaunganishwa kuwa faili moja. Hii inarejelea hati na mitindo inayoonekana katika msimbo wa chanzo wa tovuti yako. Kwa njia hii tovuti yako itapakia haraka!