我正在尝试使用导入和导出来创建模块,但它不起作用。
I added https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.24.0/babel.min.js https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.24.0/babel.min.js到 index.html 标头并尝试导入 js 文件并收到一条错误消息,显示 SyntaxError: import statements may only comes at the top level of a module。我可能做错了什么?
我知道我可以使用 require.js,但可以使用导入和导出。
HTML
script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.24.0/babel.min.js"></script
JS File
import Mymodule from './modules/mymodule';
Babel 无法执行模块的客户端转译,或者更确切地说,它没有被浏览器普遍支持。事实上,除非你使用插件,Babel 会进行改造import
into require()
.
如果我运行以下代码:
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.24.0/babel.js"></script>
<script defer type="text/babel" data-presets="es2015">
import Mymod from './modules/module';
Mymod();
</script>
</head>
我收到以下错误:
未捕获的引用错误:未定义要求
From 巴别塔文档 https://babeljs.io/docs/setup/#installation:
在浏览器中编译的用例相当有限,因此如果您在生产站点上工作,则应该在服务器端预编译脚本。有关详细信息,请参阅设置构建系统。
大多数人选择预编译的模块捆绑器,例如Webpack https://webpack.js.org/ or Rollup https://github.com/rollup/rollup.
如果您确实想在客户端执行此操作,请使用要求JS http://requirejs.org通过 Babel 运行plugin https://www.npmjs.com/package/requirejs-babel-plugin,尽管您可能需要使用 AMD 语法。
本机浏览器对 ES6 模块的支持仍然存在早期阶段 https://www.contentful.com/blog/2017/04/04/es6-modules-support-lands-in-browsers-is-it-time-to-rethink-bundling/。但据我所知,Babel 还没有可用的预设/插件来告诉它不要转换import/export
声明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)