如何将 es6 导入转换为 AMD require

How to transform the es6 import to AMD require

我正在这样写 es6 导入:

import $ from 'jquery';
$(document).ready(function(){
    $('body').append($('<p>hello es6 module</p>'));
});

然后我想在浏览器中运行,所以我就用babel把它转成es5文件,毫无疑问babel会把它转成CommonJS文件,所以我安装了babel插件'transform-es2015-modules-amd',然后我再试一次,但是这次,babel 将我的 es6 代码转换成这种东西:

define(['jquery'], function (_jquery) {.........});

但我只是想把它改造成这种东西:

require(['jquery'],function($){......});

那么我该如何实现这个梦想,如果您能给我一些建议,我将不胜感激,非常感谢!

您需要一个用于浏览器集成的构建脚本。 gulp 非常好 像这个例子。使用 browserify 进行浏览器集成。将与 require 和 import

一起工作

// gulpfile.js

var gulp = require('gulp');
var browserify = require('browserify');
var babelify = require('babelify');
var source = require('vinyl-source-stream');
gulp.task('build', function () {
  browserify({
    entries: 'index.js',
    extensions: ['.js'],
    debug: true
  })
  .transform(babelify)
  .bundle()
  .pipe(source('bundle.js'))
  .pipe(gulp.dest('dist'));
});

gulp.task('default', ['build']);

在您的 index.js 中使用您想要的来源并在您的浏览器中使用 bundle.js 输出。

  • Browserify 遍历了您的依赖关系树,从 index.js
  • 开始
  • 转译为 ES5 的源文件
  • 将它们全部打包成一个文件
  • 发送到dist目录

如果你不想捆绑所有东西,比如 vendorlibs jquery 等等,有一些 browserify 的配置选项。他们允许您在外部库上使用 require for browserify 我使用的是 browserify-global-shim。

结论:

npm install --save-dev browserify babelify

可选包

browserify-global-shim

gulp 不是必需的,但对构建有很大帮助

gulp