คำถามติดแท็ก requirejs

หมายถึงคำถามที่เกี่ยวข้องกับต้องใช้ JS RequireJS คือไฟล์ JavaScript และตัวโหลดโมดูล เหมาะสำหรับการใช้งานในเบราว์เซอร์ แต่สามารถใช้ในสภาพแวดล้อม JavaScript อื่น ๆ

5
วิธีเพิ่มไฟล์ JS ในส่วนหน้าสำหรับทุกหน้า
ฉันอ่าน Google Results 3 หน้าเกี่ยวกับวิธีโหลดไฟล์ JS สำหรับทุกหน้าและยังไม่สามารถทำได้ ฉันมีข้อสงสัยสองสามหวังว่าจะมีใครซักคนออกมา ฉันจำเป็นต้องสร้างโมดูลภายในapp/codeด้วยrequirejs-config.jsหรือไม่? หรือฉันสามารถใส่requirejs-config.jsในชุดรูปแบบของฉันแทน? ฉันควรใส่requirejs-config.jsอะไรเข้าไป รหัสควรมีลักษณะอย่างไรใน.jsไฟล์ของฉัน ฉันเห็นว่าคุณไม่สามารถใช้ jQuery document.readyและคุณต้องมีdefine([ ฉันควรใส่define([อะไรเข้าไป หากฉันมีโมดูล jQuery บุคคลที่สามฉันต้องแก้ไขเพื่อให้ทำงานได้หรือไม่ ฉันจำเป็นต้องวาง xml ไว้ที่ไหนสักแห่งเพื่อบอก magento ว่ามีไฟล์ my.js อยู่หรือไม่? ถ้าฉันสร้างโมดูลภายในapp/codeด้วยรหัส js ทั้งหมดที่นั่นมันจะรวมเนื้อหาทั้งหมดในทุกหน้าหรือไม่? ฉันจะบรรลุสิ่งนั้นได้อย่างไร

2
การขยาย / ลบล้าง JS ใน Magento 2
Magento2 กำลังใช้ RequireJS สำหรับการโหลดสคริปต์และไม่มีโฟลเดอร์สกินอีกต่อไปฉันจึงติดปัญหา: ฉันจะแทนที่ไฟล์ JS ของโมดูลวีโอไอพีด้วยเวอร์ชันที่แก้ไขของฉันได้อย่างไร ตัวอย่างเช่น - opc-checkout-method.jsซึ่งเป็นของส่วนขยาย Magento_Checkout มันไม่ได้กำหนดไว้ในไฟล์ requirejs-config.js เท่าที่ฉันเห็น ส่วนขยายของฉันถูกโหลดหลังจากMagento_Checkoutดังนั้นข้อมูล requirejs-config.js จะถูกต่อท้ายท้ายไฟล์ requirejs-config หรือฉันควรทำอย่างอื่นโดยไม่เปลี่ยนสคริปต์ทั้งหมด?

4
Magento 2: requirejs-config.js ในธีมหรือไม่
เป็นไปได้หรือไม่ที่จะรวมrequirejs-config.jsไฟล์ (หรือกำหนดค่า RequireJS) ผ่านธีม Magento? หรือความสามารถที่สงวนไว้สำหรับโมดูล Magento? ข้อมูลdev docs เกี่ยวกับโครงสร้างของธีมนั้นคลุมเครือจนถึงจุดนี้ เอกสาร Dev ไม่ได้พูดถึงสิ่งใด ๆ เกี่ยวกับ RequireJS - อย่างไรก็ตามชุดรูปแบบรวมถึงสิ่งwebที่หมายถึงจาวาสคริปต์สามารถรวมกับพวกเขา หากสามารถรวม javascript เข้ากับธีมนั่นหมายถึงโมดูล RequireJS สามารถรวมกับธีมได้และหากโมดูล RequireJS สามารถรวมกับธีมที่โมดูลนั้นอาจต้องการการกำหนดค่า RequireJS เฉพาะ สมมติฐานที่ไร้เดียงสาของฉันจะเป็นรูปแบบที่จะมีความสามารถนี้ แต่ฉันไม่สามารถหาเอกสารใด ๆ เกี่ยวกับวิธีนี้หรืออื่น ๆ และไม่ได้บ่ายฟรีที่จะใช้รหัสที่จำเป็น spelunking ในrequirejs-config.jsไฟล์ของวีโอไอพีรวมถึง

1
วีโอไอพี 2 มีการใช้ KnockoutJS อย่างไร
ตามการอ่านคร่าวๆของเอกสารประกอบ KnockoutJS การเริ่มต้นมุมมองการทำให้ล้มลงพื้นฐานขั้นพื้นฐานจะมีลักษณะดังนี้ // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI function AppViewModel() { this.firstName = "Bert"; this.lastName = "Bertington"; } // Activates knockout.js ko.applyBindings(new AppViewModel()); เช่น - คุณสร้างฟังก์ชั่นจาวาสคริปต์ที่มีวัตถุประสงค์เพื่อใช้เป็นตัวสร้างวัตถุยกตัวอย่างวัตถุจากนั้นส่งวัตถุนั้นไปยังko.applyBindingsวิธีการของวัตถุพิศวงทั่วโลก ( ko) อย่างไรก็ตามใน Magento 2 หากคุณโหลดหน้าเว็บแบ็กเอนด์ด้วย Grid UI Magento จะเริ่มต้น js/core/app.jsโมดูล RequireJS …

3
รายการ "แหล่งที่มา" ในไฟล์คอมโพเนนต์ UI คืออะไร
ในไฟล์การกำหนดค่า UI ส่วนประกอบของ Magento 2 คุณมักจะเห็นแอitemททริบิวด้วยเหมือนsource- <item name="source" xsi:type="string">block</item>ด้านล่าง #File: vendor/magento/module-cms/view/adminhtml/ui_component/cms_block_form.xml <field name="title"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="dataType" xsi:type="string">text</item> <item name="label" xsi:type="string" translate="true">Block Title</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">block</item> <item name="sortOrder" xsi:type="number">20</item> <item name="dataScope" xsi:type="string">title</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> </argument> </field> ฟิลด์เหล่านี้มีไว้เพื่อทำอะไร? …

1
เพราะเหตุใด Magento 2 จึงใช้ RequireJS` map` แทนที่จะเป็น "path"
ในการติดตั้ง RequireJS ของ Magento 2 โมดูลหลักจำนวนมากใช้การกำหนดค่าแบบนี้ map: { '*': { editTrigger: 'mage/edit-trigger', addClass: 'Magento_Translation/add-class' } } ใน RequireJS mapคำสั่งกำหนดค่าอนุญาตให้ผู้พัฒนาสามารถบอก RequireJS ได้ เมื่อคุณโหลดโมดูล X และใช้โมดูล Y แทนที่โมดูล Y ด้วยโมดูล Z - แต่สำหรับโมดูล X เท่านั้น หรือในรหัส map: { 'modulex':{ 'moduley':'modulez' } } mapคุณลักษณะโดยทั่วไปช่วยให้คุณสามารถสลับออกคำจำกัดความโมดูลผ่านการตั้งค่า - ในวีโอไอพีพูดมันเป็นคุณลักษณะโมดูลสำหรับเขียนจาวาสคริปต์ สิ่งที่ไม่ชัดเจนสำหรับฉันคือการใช้ Magento อย่างหนักใน*ฐานะกุญแจสำหรับmapอสังหาริมทรัพย์ map: { '*': { …

6
Magento2 ไม่ได้อ่าน requirejs-config.js ของฉัน
สวัสดีฉันยังใหม่กับ Magento2 และพยายามหาวิธีที่ RequireJS ทำงานใน Magento นี่คือสถานการณ์ของฉัน: ฉันมีโมดูลดังต่อไปนี้: app/code/Mymodule/Test/view/frontend/requirejs-config.js นี่คือเนื้อหาของไฟล์นี้: var config = { map: { '*': { jQuery110: "Mymodule_Test/js/jquery-1.10.2", jqueryNoConflict: 'Mymodule_Test/js/jquery.no-conflict', flexslider: 'Mymodule_Test/js/jquery.flexslider-min', header: 'Mymodule_Test/js/store/header' } } }; ธีมของฉันอยู่ที่ตำแหน่งนี้: app/design/frontend/Mycompany/Basic Javascript ของฉันอยู่ที่ตำแหน่งต่อไปนี้: app/code/Mymodule/Test/view/frontend/web/js/jquery.no-conflict.js app/code/Mymodule/Test/view/frontend/web/js/jquery.flexslider-min.js app/code/Mymodule/Test/view/frontend/web/js/store/header.js ในไฟล์ PHTML: app/code/Mymodule/Test/view/frontend/templates/home.phtml ฉันเพิ่มบรรทัด: require(['jqueryNoConflict', 'flexslider'],function($, flexslider){ (function($) { $(window).load(function () { $('.flexslider').flexslider(); }); …

1
Magento2 - วิธีขยายวิดเจ็ต jQuery (configurable.js)
ฉันกำลังสร้างส่วนขยายที่แทนที่ป้ายกำกับตัวเลือกที่กำหนดค่าเริ่มต้น 'เลือกตัวเลือก ... ' ด้วยชื่อแอตทริบิวต์ตัวอย่างเช่น 'เลือกสี ... ' ฉันจะขยาย (ไม่แทนที่!) วิดเจ็ต jQuery ที่สามารถกำหนดค่าได้และปรับเปลี่ยนบรรทัดนี้ได้อย่างไร ฉันรู้จากเอกสารที่ฉันสามารถแทนที่วิดเจ็ต jQuery ดังนั้นฉัน: define([ 'jquery', 'jquery/ui', 'configurable' // usually widget can be found in /lib/web/mage dir ], function($){ $.widget('silvan.configurable', $.mage.configurable, { }); return $.silvan.configurable; }); ฉันจะเริ่มต้นไฟล์นี้ได้อย่างไร ฉันควรจะโหลดมันผ่าน requirejs-config ไหม ฟังก์ชั่นแผนที่ใช้สำหรับการเอาชนะเท่านั้นใช่มั้ย เป็นไปได้หรือไม่ที่จะแก้ไขบรรทัดนี้เท่านั้น? มันถูกเรียกจากฟังก์ชั่นนี้: _fillSelect: function (element) {}

2
Magento 2 เรียกสิ่งนี้ว่า“ มิกซ์อิน” ได้อย่างไร?
ระบบวัตถุที่ใช้ RequireJS ของ Magento 2 นั้นมีคุณสมบัติที่เรียกว่า "มิกซ์อิน" วีโอไอพี 2 mixin ไม่ใช่สิ่งที่วิศวกรซอฟต์แวร์มักจะคิดว่าเป็นmixin / ลักษณะ Magento 2 mixin ช่วยให้คุณสามารถปรับเปลี่ยนวัตถุ / ค่าที่ส่งคืนโดยโมดูล RequireJS ก่อนที่โปรแกรมหลักจะใช้วัตถุ / ค่านั้น คุณกำหนดค่า mixento Magento 2 เช่นนี้ (ผ่านไฟล์ requirejs-config.js) var config = { 'config':{ 'mixins': { //the module to modify 'Magento_Checkout/js/view/form/element/email': { //your module that will do the modification …

1
Magento2: ฉันจะลบล้าง core js module price-box.js ได้อย่างไร
Magento_Catalog/js/price-box.jsฉันต้องการที่จะขยาย ฉันได้ใช้คุณลักษณะ 'mixins' price-box.jsแต่ก็ไม่ได้ทำงานให้ requirejs-config.js: var config = { config: { mixins: { 'Magento_Catalog/js/price-box': { 'My_Module/js/price-box/pluggin': true } } } }; My_Module/view/frontend/web/js/price-box/pluggin.js define(function () { 'use strict'; return function (target) { // modify target var reloadPrice = target.reloadPrice; target.reloadPrice = function() { cosole.log("hello"); }; return target; }; });

1
การกำหนดค่า RequireJs แบบมีเงื่อนไข (โหลด requirejs-config.js โดยทางโปรแกรมหรือไม่)
ฉันต้องการแทนที่คอมโพเนนต์ RequireJs ตามเงื่อนไขบางอย่างเท่านั้น (เช่นตามการกำหนดค่า) มีวิธีใดที่จะป้องกันไม่ให้โหลดโมดูลของฉันrequirejs-config.jsหรือวิธีอื่นเพื่อให้บรรลุโดยทางโปรแกรมหรือไม่

7
การเปลี่ยนข้อความปุ่ม“ หยิบใส่ตะกร้า” ใน Magento 2.1.0 (การแทนที่ไฟล์ js)
ฉันเปลี่ยนข้อความ "ใส่ในรถเข็น" เป็น "ฉันต้องการสิ่งนี้" โดยแทนที่ " vendor\magento\module-catalog\view\frontend\templates\product\list.phtml" แต่เมื่อฉันคลิกที่ปุ่ม "ฉันต้องการสิ่งนี้" (เช่น "เพิ่มในรถเข็น") สินค้าจะถูกเพิ่มลงในรถเข็นจากนั้นข้อความ "เพิ่มลงในรถเข็น" จะปรากฏบนปุ่ม ฉันคิดว่าผลิตภัณฑ์ถูกเพิ่มเข้ามาผ่านการโทร ajax นั่นคือสาเหตุที่ข้อความที่เพิ่มใหม่ไม่แสดงหลังจากการโทร ajax และข้อความ "เพิ่มลงในตะกร้า" แสดงขึ้น ฉันได้ลองสิ่งนี้แล้ว: ฉันสร้างส่วนขยายที่กำหนดเองVed_Mymoduleแล้ว ฉันตรวจสอบว่าส่วนขยายนั้นเปิดใช้งานอยู่ หลังจากนั้นฉันทำตามขั้นตอนเหล่านี้: app / รหัส / Ved / MyModule / view / ส่วนหน้า / requirejs-config.js: var config = { map: { '*': { catalogAddToCart:'Ved_Mymodule/js/customCatalogAddToCart' } } }; …

1
วิธีการแบ่งปันสิ่งที่น่าพิศวง JS สิ่งที่น่าสังเกตระหว่างองค์ประกอบ UI
ฉันเข้าใจวิธีใช้imports: {}และexports: {}แบ่งปันคุณสมบัติของส่วนประกอบ UI เช่น: defaults: { exports: { shouldShowMessage: '${$.component}' } } ซึ่งส่งคืนชื่อคอมโพเนนต์ในการเอ็กซ์พอร์ต แต่เมื่อฉันพยายามส่งออกสิ่งที่น่าพิศวงที่สังเกตได้มันไม่ได้กำหนดไว้เสมอ: defaults: { exports: { shouldShowMessage: '${$.shouldShowMessage}' } } ... setupKoBindings: function() { this.shouldShowMessage = ko.observable('Testing'); } เพื่อเป็นการหลีกเลี่ยงปัญหาฉันจะสร้างโมเดลหน่วยความจำตามที่อธิบายไว้ที่นี่แต่ฉันต้องการใช้การนำเข้าและส่งออก

3
JS ข้อผิดพลาดวีโอไอพี 2
ฉันพยายามทำบางสิ่งบางอย่างจนเสร็จสิ้นและเผยแพร่ทางออนไลน์ในช่วงสุดสัปดาห์นี้ว่ามันพังทลายและฉันก็ไม่รู้ว่าทำไมฉันจึงหวังว่าจะมีคนช่วยฉันได้ ฉันได้ลองเพิ่ม jQuery ที่กำหนดเองลงในธีมที่กำหนดเองของฉันด้วยความสำเร็จเมื่อโหลด jQuery และฟังก์ชันใช้งานได้ แต่! มันทำงานไม่ถูกต้อง ตัวอย่างเช่น Safari จะไม่โหลด jQuery และฉันยังได้รับข้อผิดพลาดเหล่านี้ในคอนโซล: defaultCaptcha.js: 29 Uncaught TypeError: ไม่สามารถอ่านคุณสมบัติ 'captcha' ของการตรวจสอบสิทธิ์ที่ไม่ได้กำหนดป๊อปอัพ: 26 Uncaught TypeError: ไม่สามารถอ่านคุณสมบัติ 'เติมข้อความอัตโนมัติ' ของไม่ได้กำหนด (ฟังก์ชันที่ไม่ระบุชื่อ) ฉันคิดว่ามันมีบางอย่างที่เกี่ยวข้องกับวิธีการที่ฉันประกาศ jQuery ของฉัน แต่เมื่อไม่เป็นเช่นนั้นฉันก็ตัดสินใจลบ JS ที่กำหนดเองทั้งหมดของฉันและฉันก็ยังได้รับข้อผิดพลาดเหล่านี้ ดูเหมือนว่าจะมีบางสิ่งที่แตกสลายมากขึ้น 'ธีม' ที่กำหนดเองของฉันเป็นเพียงหน้า Landing Page ธรรมดาที่ไม่มีอะไรมากไปกว่ากล่องกำหนดเอง สิ่งที่อาจทำให้เกิดข้อผิดพลาดเหล่านี้ ??

1
ตัวเลือก Requirejs shim ไม่ทำงาน
ฉันกำลังพัฒนาโมดูลสำหรับ Magento2 และฉันใช้ requirejs เพื่อโหลดจาวาสคริปต์ที่กำหนดเองซึ่งขึ้นอยู่กับ jquery ฉันใช้ตัวเลือก shim ใน requirejs-config.js เพื่อตั้งค่าการขึ้นต่อกันระหว่างสคริปต์ที่กำหนดเองและ jquery ปัญหาคือว่าการพึ่งพานี้ไม่ได้ตั้งค่า (เสมอ) บางครั้ง jQuery ทำการโหลดก่อนสคริปต์และทั้งหมดใช้ได้ แต่บางครั้งก็โหลดหลังจากสคริปต์ทำให้เกิดข้อผิดพลาดสคริปต์: Uncaught ReferenceError: jQuery is not defined(anonymous function) @ jquery.easing.1.3.js:39 Uncaught ReferenceError: jQuery is not defined(anonymous function) @ jquery.flexslider-min.js:5 Uncaught TypeError: $(...).flexslider is not a function ดูตัวอย่างด้านล่างของ requirejs-config.js ของฉัน: var config = { …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.