require-config.js를 사용하여 모든 페이지에 필요한 파일을로드하십시오.


9

require-config.js사용자 정의 테마에서 사용하는 방법을 알고 있지만 myfile.js모든 페이지에서 사용자 정의 Javascript 파일 ( ) 을 사용하고 싶습니다 . 어떤 디렉토리에 추가 require-config.js하고 어떻게 사용해야합니까?

마 젠토 공식 페이지를 참조하지 마십시오.


레이아웃 xml 헤드 태그 내에서 js를 직접 호출 할 수 있으며 각 페이지에 js가 있습니다.
Rakesh Jesadiya

답변 주셔서 감사합니다. 그러나 require-config를 사용하고 Magento 1과 달리 파일을로드하려면?
Anitr

마 젠토 2 그것 또한 지원 당신은 모듈 테마를 확인할 수 있습니다 폴더 레이아웃 / default_head_block.xml 파일
케쉬 Jesadiya

예, 알아요 그러나 require-config.js를 올바른 방법으로 사용하고 싶습니다.
Anitr

답변:


17

requirejs-config.jsJavaScript 자원 맵핑을 작성하는 데 사용합니다 . 모든 필수 설정은 다음에서 찾을 수 있습니다 pub/static/_requirejs.

내가 아는 한 Js 필요 : 템플릿을 사용하여 스크립트 호출을 통해 사용자 지정 스크립트를로드하는 올바른 방법 입니다. Magento\Framework\View\Element\Template블록 클래스를 사용하여 새 템플릿을 만듭니다 .

우리는 모든 페이지에 JS 파일을로드 싶어 할 경우 새 모듈을 만들고 싶어하지, 우리의 블록에 참조해야 before.body.endafter.body.start containerdefault.xml마 젠토 테마 모듈 -.

여기에 이미지 설명을 입력하십시오

app / design / frontend / Vendor / Theme / Magento_Theme / layout / default.xml

<?xml version="1.0"?>

<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">

    <referenceContainer name="after.body.start">
        <block class="Magento\Framework\View\Element\Template" name="custom.js" template="Magento_Theme::custom_js.phtml"/>
    </referenceContainer>

</page>

app / design / frontend / Vendor / Theme / requirejs-config.js

var config = {
    map: {
        '*': {
            customScript:'Magento_Theme/js/customscript'
        }
    }
};

app / design / frontend / Vendor / Theme / Magento_Theme / web / js / customscript.js

define('jquery', function($) {

    //Your code here
    //alert('Here');

    }(jQuery)
);

템플릿은 app / design / frontend / Vendor / Theme / Magento_Theme / templates / custom_js.phtml 스크립트를 호출합니다.

<script>// <![CDATA[
    require([
        'jquery',
        'customScript'
    ], function ($, script) {
        //Your code here
        //alert('Here');
    });
    // ]]>
</script>

Magento 캐시를 지우고 정적 컨텐츠 배포를 실행하십시오. php bin/magento setup:static-content:deploy


에 스크립트를 호출 \app\design\frontend\Enim\blank\Magento_CatalogWidget\templates\product\widget\content\grid.phtml했지만 Theme 폴더 (app / design / frontend / Vendor / Theme / requirejs-config.js)에 requirejs-config.js 및 스크립트가 있습니다. 이거 괜찮아? 문제는 여러 곳에서 스크립트를 호출한다는 것입니다.
Anitr

스크립트는 템플릿 templa‌​tes\product\widget\c‌​ontent\grid.phtml을 호출 할 때만 영향을줍니다 .
Khoa TruongDinh

네, 괜찮아요 - 문제는 하나입니다 : magento.stackexchange.com/questions/149019/... 이 문제가 어떻게 든 전화 requirejs에 연결되어있는 경우, 궁금하고있다.
Anitr

@KhoaTruongDinh 나는 이것으로 조금 혼란 스럽습니다. 아직 제대로 테스트하지는 않았지만 함수 custom_js.phtml가 정규 콜백으로 처리되어 안에 포함 된 코드를 실행 한 후에 수행 된다고 생각하고 customscript.js있습니까? 또는 customscript.js의 함수 내에서 선언 된 코드를 실행해야 custom_js.phtml합니까?
여호수아 홍수

1
@KhoaTruongDinh 또한 Iveta의 답변에 왜 귀하 after.body.start가로 변경되어야 하는지 궁금 합니다 before.body.end.
Joshua Joshua

5

Requirejs-config 파일 : app / code / Vendor / Module / view / frontend / requirejs-config.js

var config = {
    paths: {            
         'myfile': "Vendor_Modulename/js/myfile"
      },   
    shim: {
    'myfile': {
        deps: ['jquery']
    }
  }
} 

js 파일은 app / code / Vendor / Module / view / frontend / web / js / myfile.js에 있어야합니다.

이제 아래 방법으로 템플릿 파일의 어느 곳에서나 사용할 수 있습니다.

<srcipt>
 require(["jquery","myfile"],function($,myfile){
     $(document).ready(function(){
        //call your js here...
     })
 })
</script>

네 맞습니다. 그러나 모듈에 의존하지 않고 테마 폴더에서 사용하는 방법을 아는 사람이 있는지 물었습니다. 단일 모듈뿐만 아니라 페이지 전체에로드해야합니다.
Anitr

당신은 테마 폴더에서도 사용할 수 있습니다, 그냥 위의 스크립트를 호출하고 당신은 당신의 js를 사용할 수 있습니다
Rakesh Jesadiya

당신이 어떤 문제가 있다면 알려 주시기 바랍니다
케쉬 Jesadiya

감사합니다. 그러나 여전히, 나는 또 다른 문제가 있습니다 : magento.stackexchange.com/questions/149019/…
Anitr

안녕하세요, 1 단계 파일을 어디에 배치해야하는지 알려주십시오.
Priya

2

를 사용하는 더 쉬운 버전이 있습니다 deps. requirejs-config.js의 종속성은 requirejs 자체를로드 할 때 (상점 어디에서나) 파일을로드합니다. requirejs-config.js의 모양 예는 다음과 같습니다 .

var config = {
    // When load 'requirejs' always load the following files also
    deps: [
        'common-js'
    ],

    // Library file path.
    paths: {
        'common-js': 'js/Your-File-Name'
    },

    // The rest of your config file ...

1

훌륭한 Magento 개발 방식 인 Khoa의 권장 사항에 대한 대안으로 JavaScript를 .phtml 파일에 다음과 같이 붙여 넣을 수 있습니다.

<srcipt>
require(["jquery"],function($){
 $(document).ready(function(){
    your script here...
 })
});
</script>

그런 다음 Khoa의 답변에 설명 된대로 default.xml에서 phtml 파일을 연결하십시오. 그러나 before.body.end에 추가하는 것이 좋습니다. 그런 다음 copyright.phtml 내에서 다음 과 같이 JS 스크립트를 호출하십시오 .

<script>
jQuery(document).ready(function($) {
..call your script here ..
});
</script>

copyright.phtml은 바닥 글이 생략 된 체크 아웃과 같은 페이지에도 모든 페이지에로드됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.