Method 1: Global import

Download full repo (dist + src) from:
https://gitee.com/layui/layui

Place it into:
public/libs/layui

Add to public/assets/js/require-backend.js:

require.config({
paths: {
layui: "../libs/layui/src/layui",
},
shim: {
layui: {
deps: ["css!../libs/layui/src/css/layui.css"],
init: function () {
console.log("init layui");
return this.layui.config({ dir: "/assets/libs/layui/src/" });
},
},
},
});

Target page usage:

define(["jquery", "bootstrap", "backend", "form", "table", "layui"], function ($, undefined, Backend, Form, Table, layui) {
var Controller = {
index: function () {
layui.use(["form", "upload"], function (form, upload) {});
},
};
return Controller;
});

Pack/minify before use (then clear browser cache):

php think min -m all -r all

Method 2: Dynamic import

In public/assets/js/backend-init.js:

define(['backend'], function (Backend) {
require.config({
paths: { 'layui': '../libs/layui/src/layui' },
shim: { 'layui': { deps: ['css!../libs/layui/src/css/layui.css'], init: function () { return this.layui.config({ dir: '/assets/libs/layui/src/' }); } } }
})
});

Target page usage with dynamic load:

define(["jquery", "bootstrap", "backend", "form", "table", "layui"], function ($, undefined, Backend, Form, Table, layui) {
var Controller = {
index: function () {
require(["layui"], function () {
layui.use(["form", "upload"], function (form, upload) {});
});
},
};
return Controller;
});

Pack again when done:

php think min -m all -r all