babel 和 ES6模块化

babel--ES6代码转换为ES5的代码

初始化项目 
npm init 
npm init -y 快速初始化项目
1.安装转码工具
cnpm install -g babel-cli   babel
cnpm install --save -dev babel-cli babel-preset-latest
2.安装转换规则
cnpm install -g babel-preset-latest
3.指定转换规则 新建.babelrc
{
    "presets":["latest"]
}

cnpm install --save-dev babel-cli babel-preset-latest

 4.也可以将ES6转换为ES5之后的文件输入到另一个文件当中
babel 2-hello.js --out-file 2-helloo.js
5.将整个src目录下的es6文件转换成es5文件到dist目录
babel src --out-dir dist

模块化

模块化机制(commonjs与es6)

包管理机制 (npm、cnpm、yarn)

ES6模块化代码  import export
NodeJS内有自己的模块化机制,实现CommonJS模块化规范 require('babel-polyfill')

 ES6模块化规范

导入模块 import 'xxx'
导出模块
    export {firstName,lastName};//列表导出
    export {firstName as first,lastName as last};//重命名导出
    export var a=3;导出单个属性;
    export functions(){}//导出单个属性
    默认导出 
    一个模块只能有一个默认导出,不能使用 var、let 或 const 用于导出默认值 export default。
        export default{}
        export default function (){}     
错误写法
    var a=1;   
    export a; 没有提供对外的接口 export{a}

CommonJS模块化

CommonJS 模块就是对象,输入时必须查找对象属性。

模块化对象

Node内部提供一个Module构造函数。所有模块都是Module的实例。每个模块内部,都有一个module对象,代表当前模块。它有以下属性。module.id 模块的识别符,通常是带有绝对路径的模块文件名。 module.filename 模块的文件名,带有绝对路径。 module.loaded 返回一个布尔值,表示模块是否已经完成加载。 module.parent 返回一个对象,表示调用该模块的模块。 module.children 返回一个数组,表示该模块要用到的其他模块。 module.exports 表示模块对外输出的值。

//nodejs模块导出  commonJS规范
let firstname = 'ren';
let lastname = 'terry';
// module.exports.firstname = firstname;
module.exports = {
  firstname: firstname,
  lastname: lastname
};
// Nodejs模块导入
let { firstname, lastname } = require('./module3');
console.log(firstname, lastname);
console.log(module.id);
console.log(module.filename);
console.log(module.loaded);
console.log(module.parent);
console.log(module.children);

CommonJS模块规范和Es6模块规范的区别

1.CommonJS模块化规范 
    1.1导出模块
    let firstname='ren';
    let lastname='terry';
    setTimeout(()=>{
        firstname:'zhao'
    },2000)
    module.exports={
        firstname,
        lastname
    };
    1.2导入模块
    let {firstname,lastname}=require('./module1.js');
    console.log(firstname,lastname);
    setTimeout(()=>{
       console.log(firstname,lastname);//ren terry
    },4000)

2.ES6模块 值得引用
    2.1导出模块
    let firstname='ren';
    let lastname='terry';
    setTimeout(()=>{
        firstname='zhao'
    },2000)
    export {
        firstname,
        lastname
    };
    2.2导入模块
    import {firstname,lastname} from './module3.js';
      console.log(firstname,lastname);
    setTimeout(()=>{
       console.log(firstname,lastname);//zhao terry
    },4000)

ES6模块化和Commonjs模块化规范区别?

  1.ES6编译时加载模块,Commonjs在运行时加载模块
  2.ES6导出使用export 导入使用import导入
  3.Commonjs导出使用当前模块 module.exports 导入使用require()
  4.ES6模块化输出的是值得引用,Commonjs输出的是值得复制

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值