gulp-babel编译es6后的require怎么处理
现在有一个User.js
在main.js
中
import '../model/User.js';
...
经过gulp-babel
转换后,变成
var _User = require('../model/test/User.js');
这里的require
怎么处理?
以前用seajs
,seajs
中,require
用来获取指定模块的接口,这里经过babel
编译后的require
是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Babel 所做的只是帮你把‘ES6 模块化语法’转化为‘CommonJS 模块化语法’,其中的
require
exports
等是 CommonJS 在具体实现中所提供的变量。任何实现 CommonJS 规范的环境(如 node 环境)可以直接运行这样的代码,而浏览器环境并没有实现对 CommonJS 规范的支持,所以我们需要使用打包工具(bundler)来进行打包,说的直观一点就是把所有的模块组装起来,形成一个常规的 js 文件。
常用的打包工具包括 browserify webpack rollup 等。
你们回答的这么久了,第一没有解决问题,第二,把问题复杂化,难道require.js用了es6语法?gulp-babel编译时跳过require.js不编译就可以正常了
楼上解释比较清楚了。我这里补充下:
楼主使用
Babel
的时候应该引入了preset-es2015
, 这是个转码插件集合,里面包含了transform-es2015-modules-commonjs
。所以模块转换出来是CommonJS
标准。Babel
的作用是帮助我们转换 ES6 代码为 ES5, 但是它没有模块管理的功能,浏览器端默认也无法识别CommonJs
规范,这就需要我们额外使用模块打包工具,为我们的代码做一些包裹,让它能在浏览器端使用。 比如Browserify
,Webpack
。