Files
cms-core/Documentation/Changelog/13.0/Breaking-101266-RemoveRequireJS.rst

91 lines
2.5 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.. include:: /Includes.rst.txt
.. _breaking-101266-1688654482:
====================================
Breaking: #101266 - Remove RequireJS
====================================
See :issue:`101266`
Description
===========
The RequireJS project has been `discontinued`_ and was therefore
deprecated in TYPO3 v12 with :issue:`96510` in favor of native ECMAScript
v6/v11 modules (added in :issue:`96510`).
The infrastructure for configuration and loading of RequireJS
modules is now removed.
Impact
======
Registering FormEngine JavaScript modules via :php:`'requireJsModules'` will
have no effect. The PageRenderer endpoints
:php:`\TYPO3\CMS\Core\Page\PageRenderer->loadRequireJs()` and
:php:`\TYPO3\CMS\Core\Page\PageRenderer->loadRequireJsModule()`
have been removed and must no longer be called.
The respective :html:`includeRequireJsModules` property of the
:html:`<f:be.pageRenderer>` ViewHelper has also been removed.
Affected installations
======================
TYPO3 installations using RequireJS modules to provide JavaScript in the TYPO3
backend, or less common use PageRenderer RequireJS infrastructure for
frontend JavaScript module loading.
Migration
=========
Migrate your JavaScript from the AMD module format to native ES6 modules and
register your configuration in :php:`Configuration/JavaScriptModules.php`,
also see :issue:`96510` and :ref:`t3coreapi:backend-javascript-es6`
for more information:
.. code-block:: php
# Configuration/JavaScriptModules.php
<?php
return [
'dependencies' => ['core', 'backend'],
'imports' => [
'@vendor/my-extension/' => 'EXT:my_extension/Resources/Public/JavaScript/',
],
];
Then use :php:`\TYPO3\CMS\Core\Page\PageRenderer->loadJavaScriptModule()` instead
of :php:`\TYPO3\CMS\Core\Page\PageRenderer->loadRequireJsModule()` to load the ES6 module:
.. code-block:: php
// via PageRenderer
$this->pageRenderer->loadJavaScriptModule('@vendor/my-extension/example.js');
In Fluid templates `includeJavaScriptModules` is to be used instead of
`includeRequireJsModules`:
In Fluid template the `includeJavaScriptModules` property of the
:html:`<f:be.pageRenderer>` ViewHelper may be used:
.. code-block:: xml
<f:be.pageRenderer
includeJavaScriptModules="{
0: '@vendor/my-extension/example.js'
}"
/>
.. seealso::
:ref:`t3coreapi:backend-javascript-es6` for more info about JavaScript in TYPO3 Backend.
.. _discontinued: https://github.com/requirejs/requirejs/issues/1816
.. index:: Backend, JavaScript, PHP-API, PartiallyScanned, ext:core