在单个构建文件中使用带有 Traceur 的 ES6 模块

2024-03-07

我只是有一个简单的问题无法在任何地方找到,整个早上都在谷歌上搜索。关于 Traceur 的信息不多,而且什么时候有也不是很清楚,至少对我来说是这样。

当我使用traceur转译单个输出文件并在浏览器中使用traceur-runtime使用它时,应该如何实现ES6模块? 导入和导出不断获得意外令牌。

我正在使用 gulp-traceur 并尝试了所有模块选项 //'commonjs' //'amd', 'commonjs', '实例化', '内联', '注册'。

我的一个疑问是,我一直在寻找有关 commonjs 的答案,但我使用 ES6 模块的想法是拥有不同的源,然后从 main 导入它们,并将所有这些结果编译到一个文件中(我的意思是我不需要在浏览器中异步加载模块)

这是 gulp 任务

gulp.task('scripts', function() {
      del.sync(['bin/js/main.min.js']);
      del.sync(['bin/js/main.min.js.map']);
      gulp.src(["./src/app/init.js", "./src/app/elements/circle.js", "./src/app/app.js"])
        .pipe(sourcemaps.init())
        .pipe(traceur({modules : 'inline', sourceMaps: 'inline', experimental: "true"})) //'commonjs' //'amd', 'commonjs', 'instantiate', 'inline', 'register'
          .on('error', errorParser)
        .pipe(jshint())
          .pipe(jshint.reporter('jshint-stylish'))
        .pipe(uglify({mangle: true})).on('error', errorParser)
        .pipe(concat('main.min.js'))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('bin/js'))
        .pipe(livereload({ auto: true }));
    });

导入时意外的令牌来自应用程序

import Circle from './elements/circle';

or

import * as Circle from './elements/circle.js';

(尝试了几种方法)

导出时也是来自circle.js

export default Circle; or export Circle;(也尝试了几种方法)


最后,我按照 @Jeff 在他的评论中的建议完成了将 Traceur 切换为 Babel。

所以我的解决方案是使用 Babel + Browserify + Gulp

我认为我得到的错误是关于代码已正确转换,但没有客户端能够管理模块,因此需要像 require 或 commonjs 这样的东西来处理模块,主要的疑问在这里,因为我希望 Traceur 已经转换了代码转换为 ES5 可理解的代码。但同样,缺乏信息并不能说明这一点(我在谷歌上搜索了 6 个多小时)

我使用 Browserify 工具 babelify,它会自动将 ES6 模块语法转换为浏览器可理解的 commonjs。

这件事情让我感到很快乐。由于缺乏信息,我花了一些时间才意识到/猜测使用 Browserify 和 Traceur 也可以工作,但是在查看了 Babel 之后,我认为比 Traceur 有优势,特别是客户端上不需要 runtime.js,并且输出更加一致且不那么臃肿。

如果我正在使用的 gulp 任务对将来的人有帮助,我将其粘贴到下面:

gulp.task('scripts', function() {

  del.sync(['bin/js/main.min.js']);
  del.sync(['bin/js/main.min.js.map']);

  gulp.src(["./src/**/*.js", "!./src/lib/*.js"])
    .pipe(gp.jshint())
    .pipe(gp.jshint.reporter('jshint-stylish'));

  browserify({
    entries: './src/app/app.js',
    debug: true
  })
  .transform(babelify)
  .bundle().on('error', errorParser)

  .pipe(source('main.js'))
  .pipe(gulp.dest('./bin/js'))
    .pipe(gp.livereload({ auto: true }));

});

如果您有更好的方法,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在单个构建文件中使用带有 Traceur 的 ES6 模块 的相关文章

随机推荐

  • 禁用 Java 警告外观并影响 Java Web Start 应用程序

    Recently security vulnerabilities were discovered in the Java Plug In1 As a protection for the end user Java in most bro
  • Visual Studio/NuGet 缺少引用

    我的解决方案的引用出现了一些问题 因为有人搞乱了 NuGet 从源代码控制恢复导致项目无法加载 我不得不尝试一下才能最终加载内容 当我终于能够正确加载我的项目时 在一阵头痛之后 我有一个相当大的实验混乱需要清理 现在什么也没有构建 Nuge
  • Maven测试依赖的依赖关系

    我有一个父项目 它与范围有依赖关系test
  • 测试时如何设置React组件的宽度?

    I m trying to test a slider component 该滑块组件的宽度可以是可变的 当您单击滑块的 轨道 时 它应该更改值并触发onChange打回来 该值基于您在轨道上单击的位置 如果在最小值为时单击中间点100最大
  • 如何使用 3d perlin 噪声函数生成地形?

    我可以使用 2D Perlin 噪声函数来生成高度值 但我不明白为什么要使用 3D Perlin 噪声函数 在诺奇的博客 http notch tumblr com post 3746989361 terrain generation pa
  • javaFX 中的抖动阶段

    是否可以使用时间轴来摇动初级阶段 从而使用 XTimeline 和 YTimeLine final Timeline Xtimeline new Timeline for Animate On X Stage Xtimeline setCy
  • AFrame:重新调整元素的父级,保持其世界位置、旋转

    我正在尝试重新设置元素 实体 的父级 保持其在场景中的位置 旋转 以及如果可能的话 大小 例如比例 理想情况下 我希望有一个组件 例如 reparent 当在实体上设置时 将其 移动 到指定的父级 从而将实体的外观保留在场景中 例如 对于下
  • 如何在 MATLAB 中创建循环缓冲区,以便以正确的顺序进行连续测量

    我读到 如何在 MATLAB 中创建缓冲矩阵以进行连续测量 http stackoverflow com questions 821637 how to create a buffer matrix in matlab for contin
  • 更改 Rails 版本

    我不小心将 Rails 版本更改为 4 0 0 我尝试过 gem uninstall Rails version 4 0 0 rc1 并安装版本 3 2 13 但当rails v 时它仍然是版本 4 0 0 然后我尝试了 gem unins
  • Java电子邮件内容为空

    我有一些代码片段 我可以在其中发送带有 Excel 文件附件的电子邮件 一切正常 我可以看到标题 甚至文件附件 唯一没有出现的是电子邮件内容 我已经测试过我的 emailContent 变量不为空 我还能做些什么来让它出现 我什至启用了这行
  • 使用 AJAX 和 PHP 上传多个文件

    我正在尝试使用 ajax 和 php 上传多个文件 JavaScript和Ajax代码如下 document on click UploadButton function e var form new FormData var files
  • 带有可选index.php的动态RewriteBase

    我的动态基本 URL 位于 us ca and fr ca 如上所述使用建议的 RewriteCondhere https stackoverflow com a 25626489 1812580 在大多数情况下我都能做到这一点 它起作用的
  • 为什么当分配移动值的成员时编译不会失败?

    我正在研究以下示例Rust 实例 http rustbyexample com derive Debug struct Point x f64 y f64 derive Debug struct Rectangle p1 Point p2
  • Rails/postgres,“外键”存储在数组中以创建一对多关联

    postgres 数组可以用于在 Rails 中创建一对多 has many 关联 4 吗 我知道外键类型数组是不可能的 示例 一项任务有多个受让人 传统上我会使用关联表来解决这个问题 任务 gt 受让人 gt 用户 使用数组 这不是必需的
  • Swift - 检索子视图

    在我的应用程序中 我向视图添加标签 然后在单击按钮时尝试从视图中清除特定标签 并在尝试检索子视图时遇到错误 class FirstViewController UIViewController IBAction func btnAddTas
  • CORS 预检请求返回“403 Forbidden”;后续请求仅在 Chrome 中发送

    使用 pluploader 失败后这个问题 https stackoverflow com questions 16144879 plupload runtimes returning 403 forbidden error when tr
  • 分配 int 指针值的简单方法? [复制]

    这个问题在这里已经有答案了 Given a struct看起来像 type foo struct i int 如果我想设置i到1 我必须 throwAway 1 instance foo i throwAway 有没有什么方法可以在一行中完
  • 通过 iTunes Connect 创建的所有沙盒测试人员都请求“需要付款信息”

    我最近遇到了一个问题 以前我在使用 iOS 沙箱测试器和应用内购买时似乎没有遇到过这个问题 我做了以下事情 创建一个以前未使用过的新沙箱测试器 分配给美国 注销设备上的所有 iTunes 帐户 打开应用程序并完成应用内购买流程 通过新的 i
  • 如何让我的帮助按钮显示 matlab 帮助?

    Hye Guyz 如果我想为我的人物制作一个帮助按钮 如果用户按下帮助按钮 我该如何制作 它会出现matlab助手 例如产品帮助 功能浏览器等 我如何链接它 有没有关于制作帮助按钮的教程 您可以设置Callback按钮的属性 doc plo
  • 在单个构建文件中使用带有 Traceur 的 ES6 模块

    我只是有一个简单的问题无法在任何地方找到 整个早上都在谷歌上搜索 关于 Traceur 的信息不多 而且什么时候有也不是很清楚 至少对我来说是这样 当我使用traceur转译单个输出文件并在浏览器中使用traceur runtime使用它时