在仅使用 react + babel cdn 的纯前端环境中,es 模块(import/export)不被支持,需改用全局变量方式共享组件;直接使用 `import` 会因 `require` 未定义而报错。
当您通过
✅ 正确做法是:将组件声明为全局变量,利用浏览器全局作用域(window)自然传递。
修改您的 HTML 结构,按执行顺序依次加载依赖脚本(注意:type="text/babel" 必须保留,且 Hello.js 必须在 index.js 之前):
对应脚本内容如下:
// js/Hello.js
function Hello() {
return Hello from CDN!
;
}
// ✅ 自动挂载到全局作用域,等价于 window.Hello = Hello// js/index.js
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render( ); // ✅ 直接使用全局变量 Hello// js/components.js
window.App = window.App || {};
App.Hello = function () { return Hello
; };
App.Goodbye = function () { return Bye
; };使用时:
在无构建工具的 React CDN 场景下,模块化 = 全局变量 + 显式加载顺序。放弃 import/export,拥抱浏览器原生执行模型,即可快速绕过 require is not defined 错误,专注组件逻辑本身。这是轻量级 React 原型开发的经典实践路径。