gulp-babel编译es6后的require怎么处理

发布于 2022-09-03 13:48:25 字数 392 浏览 15 评论 0

现在有一个User.js

main.js

import '../model/User.js';
...

经过gulp-babel转换后,变成

var _User = require('../model/test/User.js');

这里的require怎么处理?
以前用seajsseajs中,require用来获取指定模块的接口,这里经过babel编译后的require是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挽手叙旧 2022-09-10 13:48:25

Babel 所做的只是帮你把‘ES6 模块化语法’转化为‘CommonJS 模块化语法’,其中的require exports 等是 CommonJS 在具体实现中所提供的变量。

任何实现 CommonJS 规范的环境(如 node 环境)可以直接运行这样的代码,而浏览器环境并没有实现对 CommonJS 规范的支持,所以我们需要使用打包工具(bundler)来进行打包,说的直观一点就是把所有的模块组装起来,形成一个常规的 js 文件。

常用的打包工具包括 browserify webpack rollup 等。

悍妇囚夫 2022-09-10 13:48:25

你们回答的这么久了,第一没有解决问题,第二,把问题复杂化,难道require.js用了es6语法?gulp-babel编译时跳过require.js不编译就可以正常了

        //JS es6转es5
       var jsStrem = gulp.src([config.src + '/**/**.js','!/**/require.js']);
           jsStrem.pipe(babel({presets:[es2015]}));
        if(config.minjs  === true){
            jsStrem.pipe(minjs().on('error', function (error) {
                console.log(error.message, error.lineNumber);
            }));
        }
        jsStrem.pipe(gulp.dest(config.dist));

        //单纯同步JS文件,不转es5
        gulp.src([config.src + '/**/require.js'])
            .pipe(gulp.dest(config.dist));
栀梦 2022-09-10 13:48:25

楼上解释比较清楚了。我这里补充下:

楼主使用 Babel 的时候应该引入了 preset-es2015, 这是个转码插件集合,里面包含了 transform-es2015-modules-commonjs。所以模块转换出来是 CommonJS 标准。

Babel 的作用是帮助我们转换 ES6 代码为 ES5, 但是它没有模块管理的功能,浏览器端默认也无法识别 CommonJs 规范,这就需要我们额外使用模块打包工具,为我们的代码做一些包裹,让它能在浏览器端使用。 比如 Browserify, Webpack

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文