npm 包 kylin-babel-plugin-transform-runtime-nebula 使用教程

简介

在前端开发过程中,我们经常使用一些 ES6 语法及新的 API,如Promise、箭头函数、解构赋值等等,但是这些ES6特性并不是所有的浏览器都支持,为此我们需要借助 babel 来进行代码转换。而 babel 在转换代码的时候需要引入一些运行时库,其中之一就是 babel-runtime。但是 babel-runtime 本身只提供了对 ES6 语法的支持,对于一些新 API,如 Object.assignPromise 等,却需要另外的 Promise 或者 Object.assign 实现。如果每个文件都都要 import Promise 或者 Object.assign 的话,那代码也会变得很臃肿,这时我们可使用 babel-transform-runtime 来解决这个问题。

而在使用使用 babel-transform-runtime 的时候,我们需要引入@babel/runtime的库并且在babel配置文件中配置 plugins。本文要介绍的是 Kylin-babel-plugin-transform-runtime-nebula,它是一个在 babel 编译时将 @babel/runtimeseajs-async 组合打包的插件,适用于阿里巴巴内部的 nebulajs 环境,我们可以通过一些简单的步骤来使我们的项目使用该插件。

安装

在安装之前,我们需要先安装好 babel-core,并且 babel-core 版本要在 6.x.x 及以上。

然后我们使用 npm 来安装该包,输入如下命令:

--- ------- ------------------------------------------- ----------

配置

使用 .babelrc 配置

.babelrc文件中,我们可以添加如下配置:

-
    ---------- -
        --------------------- -
            ---------- -
                ----------- ------ - ---------- --- -- ---
            -
        --
    --
    ---------- -
        ----------------------------------------------
        -- --- ------ ----- --------------------------- --------- ------
        ----------------------
    -
-

这将会在 babel编译的过程中调用 kylin-babel-plugin-transform-runtime-nebula 进行优化。在配置文件中需要添加如下 options 参数:

  • seajs:表示 nebulajs 的依赖路径,一般指向用于加载 nebulajs 的 seajs

举个例子,假设我们的项目目录结构如下:

-
--- ------------   -- ---
--- ---            -- -----
--- ------------

对于该项目在 windows 系统下的 .babelrc 配置如下:

-
    ---------- -
        ----------------------------
        --------
        ---------
    --
    ---------- -
        -
            ----------------------------------------------
            -
                -------- -----------------------------------------------------
            -
        -
    --
    ------ -
        ------ -
            ---------- -
                ------------------------
            -
        -
    -
-

使用 gulp-babel 配置

对于使用 gulp 进行编译的情况,配置也要进行相应调整。理论上,我们需要提前从 node_modules 中提取预设的配置,然后将文件指向原始组件的 es5 版本。整个流程如下:

--------------- -- -- -
  ----- ------------ - -
    -------- -
      ---------------------------------------------
      --------
      ----------
    --
    -------- -
      ---------------------------------------------------------------- -
        ------ ------------------------------------------------------
      ---
    --
  --
  ------ -----------------------
    ------------------------
    --------------------------
    -------------------------
    ----------------------------
    -------------------------------
---

使用

在项目代码中,我们需要使用 es6 import 语法,然后便可以使用特殊的 import 'babel-polyfill' 语句来加载 babel-runtime 的运行时库:

------ -----------------
------ -------------------
------ ------ - --------- - ---- --------
------ - ---- - ---- ---------------
------ - ---------------- -------------- - ---- ----------
------ - -------- --------- - ---- -----------
------ - ---------- - ---- ------------------------
------ - ------------ - ---- ---------

注意,我们不应该再在脚本的顶部使用import Promise from 'promise-polyfill' 或者 import Object.assign from 'object-assign' 这些语句了,因为这些已经被kylin-babel-plugin-transform-runtime-nebula 包含了。

另外,该插件的另一个重要的特性是它使用了 seajs 进行模块化加载并处理了项目中的异步请求,这为我们解决了项目中的某些问题。而项目中如何使用 seajs 参见这里

示例代码

下面演示一段基于 React + Redux + React-Router 的代码:

------ -----------------
------ - ------ - ---- ------------
------ ----- ---- --------
------ - -------- - ---- --------------
------ - ------------ --------------- - ---- --------
------ ----- ---- --------------
------ - ---------- -- ------- ------ ------ - ---- -------------------
------ ------- ---- -------------
------ ------- ---- -----------------------
------ -------- ---- ------------------------
------ -------- ---- ------------------------
------ ----- ---- ---------------------
------ ----- ---- ---------------------
------ --------- ---- -------------------------
------ --- ---- -------------------
------ - ---- ---------
------ - --- - ---- -----------

------------- ----- ------------------- ---

----- ----- - ------------
  --------
  ----------------------
--

-------
  --------- --------------
    --------
      --------
        ------ ----- -------- -------------------
        ------ ------------- -------------------
        ------ --------------- ---------------------
        ------ ----------- ----------------------
        ------ ----------- ----------------------
        ------ ----------- -----------------
        ------ -------------------------- -----------------------
      ---------
    ---------
  ------------
  ------------------------------
--

扩展阅读

[1] https://babeljs.io/docs/plugins/transform-runtime/

[2] https://www.npmjs.com/package/kylin-babel-plugin-transform-runtime-nebula

[3] https://github.com/alibaba/nebulajs

[4] https://seajs.github.io/seajs/docs/#api

[5] https://github.com/TankC/zrender

[6] https://github.com/antvis/zrender

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600668e3d9381d61a3540a10


猜你喜欢

  • npm 包 react-native-daon-onboarding 使用教程

    在移动应用的开发中,引导新用户了解 App 的功能和特点非常重要。为此,可以使用 react-native-daon-onboarding 这个 npm 包来轻松地实现引导页功能。

    3 年前
  • npm 包 disqus-proxy-server 使用教程

    前言 在一个网站上,用户可以通过 Disqus 评论插件来进行评论。使用 Disqus 需要将其嵌入到自己的网站中。然而,由于网络限制,Disqus 在某些国家或地区可能无法正常使用。

    3 年前
  • npm 包 xiaoai 使用教程

    xiaoai 是一个轻量级的 JavaScript 库,用于快速构建网页应用程序。 它提供了丰富的功能和组件,可以帮助开发者有效地构建高质量的用户界面。在本文中,我们将介绍如何使用 npm 包 xia...

    3 年前
  • npm 包 miya-mint-vue 使用教程

    简介 miya-mint-vue 是一个基于 Mint UI 和 Vue.js 的前端组件库。它提供了常用的 UI 组件,例如按钮、输入框、弹窗、列表等,可以帮助开发者快速搭建前端界面。

    3 年前
  • npm 包 publish-dewei-test3 使用教程

    publish-dewei-test3 是一个针对前端开发的 npm 包,它能够帮助开发者快速构建一个前端项目,并进行部署。 本文将详细介绍如何使用 publish-dewei-test3 包来构建前...

    3 年前
  • npm包react-native-hour-format使用教程

    简介 在React Native应用程序开发中,时间格式化是常见的需求。为了更加便捷地进行时间格式化,在npm包中可以找到许多工具。其中,react-native-hour-format是一款用于格式...

    3 年前
  • npm 包 prompt_npm 使用教程

    前言 对于前端开发者来说,npm 包已经成为了必备的工具之一。其中, prompt_npm 包则提供了一些方便的命令行工具,可以快速让你在终端中以交互式的方式运行你的 Node.js 程序。

    3 年前
  • npm 包 decait 使用教程

    在前端开发中,有很多需要手写的代码,例如构建工具、模板引擎、样式预处理器等等。但是,使用 npm 包可以帮助我们节省时间和精力,从而更加专注于产品本身的开发。本文将介绍一个非常实用的 npm 包 de...

    3 年前
  • npm 包 cancellation-token-source 使用教程

    在前端开发中,有时需要在异步操作中取消请求或操作。而 npm 包 cancellation-token-source 可以帮助我们实现这一功能。本篇文章将介绍如何使用 cancellation-tok...

    3 年前
  • npm 包 heroku-logger 使用教程

    简介 heroku-logger 是一个 npm 包,它提供了在 Heroku 平台上记录日志的功能。它可以方便地将日志记录发送到 Heroku 的日志服务(Logplex),并在控制台中查看日志。

    3 年前
  • npm 包 bloom-random-words 使用教程

    介绍 bloom-random-words 是一个基于布隆过滤器的 npm 包,可用于生成随机单词,可以用于前端开发中的许多场景,如测试、演示、填充样本数据等。使用 bloom-random-word...

    3 年前
  • npm 包 @dsisolutions/react-toastify 使用教程

    在现代前端开发中,弹出式通知消息已成为一个必要的组件,既能够为用户提供必要的反馈信息,也能够增强用户体验。而 @dsisolutions/react-toastify 便是一个快速,易用,可定制的弹出...

    3 年前
  • npm 包 @huygn/redux-bundler 使用教程

    简介 @huygn/redux-bundler 是一个基于 redux 的状态管理库,旨在提供一种轻量级且易于使用的方式来管理状态。该库优化了 redux 的使用方式,使用户能够更快地搭建复杂的前端应...

    3 年前
  • npm 包 @kingjs/array.nested.to-array 使用教程

    在前端开发中,数组是非常常用的一种数据类型,它可以存储多个数据,且具有随时添加、删除、修改、查询等操作的特点。在数组的操作过程中,我们经常需要将其转换成特定的数据格式,例如多维数组、树形结构等。

    3 年前
  • npm 包 @kingjs/array.nested.for-each 使用教程

    前言 在前端开发过程中,我们经常需要处理嵌套的数组。@kingjs/array.nested.for-each 是一个 npm 包,提供了一种方便的处理嵌套数组的方法,本文将详细介绍如何使用此包。

    3 年前
  • npm 包 lodown-cskladz 使用教程

    简介 lodown-cskladz 是一个通过 npm 安装引入的 JavaScript 库,它提供了一些有用的函数用于数组和对象的处理。这个库可以在 Web 前端和服务器端(Node.js)中使用。

    3 年前
  • npm 包 tail.bbsolid 使用教程

    介绍 tail.bbsolid 是一个可以帮助前端开发者快速创建漂亮的分割线的 npm 包。该包提供了多种样式、颜色和粗细等选项,允许用户根据自己的需求灵活地设置分割线的样式。

    3 年前
  • npm包 node-zopfli-dubnium使用教程

    在前端开发中,性能优化一直是个重要的话题。而压缩文件是其中一个关键点,可以大幅减小文件大小,提高页面加载速度。今天,我们来介绍一个npm包 - node-zopfli-dubnium,它是一个快速高效...

    3 年前
  • npm 包 bem-app-component 使用教程

    什么是 npm 包? npm(Node.js Package Manager,Node.js 包管理器)是世界上最大的软件注册表,可以从中安装公共或私有软件包。npm 是 Node.js 的默认包管理...

    3 年前
  • npm 包 excel-xlsx 使用教程

    在前端数据处理中,Excel 表格是十分常用的格式。如果能够在程序中实现 Excel 表格的读取和写入,一定可以大大提高开发效率。在海量的 npm 包中,我们找到了一个非常好用的 npm 包 exce...

    3 年前

相关推荐

    暂无文章