您的位置:

commonjs规范和es6,commonjs和es6混用

commonjs规范和es6,commonjs和es6混用

更新:

本文目录一览:

CommonJS与ES6模块化的具体使用方式

所以:只需要将需要暴露给外部的变量或者方法 设置为exports的属性 就行,

可以把exports看做一个全局对象,把所有暴露出来的函数和变量都存放在里面

1.先写个6.js文件

CommonJS规范规定,每个模块内部,module变量代表当前模板,这个变量是一个对象,他的 exports 属性(相当于 module.exports )是对外的接口。 这里详情请看我的另一篇文章: module、exports 和 require的关系

加载某个模块,其实是加载该模块的module.exports属性。require方法用于加载模块

ES6模块化的使用方法:(注!因为CommonJS类库众多,以及 CommonJS 和 ES6 之间的差异,所以无法直接兼容es6。)

直接/按需导出:可使用多个 用变量/常量的方式

导入:需要用按需导入 {解构} 的方式获取

默认导出:只能使用一个 (default属性只有es6才有)可以用引入对象定义多个属性,但这样在引入后调用的时候,更麻烦。

导入:优点:可以直接使用文件做接收参数且不用结构。

重命名export和import

如果导入的多个文件中,变量名字相同,即会产生命名冲突的问题,为了解决该问题,ES6为提供了重命名的方法,当你在导入名称时可以这样做:

如果想看CommonJS与ES6模块化的原理 可以去看我另一篇文章

[秦圆圆]大佬写的 require和import的区别

[大孩子气]大佬写的 require/exports、import/export 的区别

[七分sunshine!]大佬写的# 前端模块化工具 requireJs的使用;

commonjs 与 ES6 模块化

一.commonjs 是什么 

是作用于服务端应用程序,让js程序具有模块化功能的一种语法规范,执行方式是同步且运行时加载,

如何使用:

1.module.exports 导出

定义一个匿名对象,将需要导出的成员 赋值到这个匿名对象上,然后再赋值到module.exports 导出

2.exports 导出

exports在每个模块中扮演着一个对象,如同每次在模块中默认执行了let exports = module.exports,那么exports如何使用导出功能呢,只要在exports对象上声明一个要导出去的属性名,将要导出的值赋值进去,

但不能直接赋值给exports对象,否则就和module.exports没有关系,例如:exports=function fn() {},

导入时拿到的是一个undefind

3.require 导入

导入得到是一个对象,对象里面是导出模块所导出的成员,也可以同结构的方式按需导入

二.ES6模块化

es6模块化也是和commonjs一样是具有将js模块化功能的语法规范,不过只能用于在能识别es6语法浏览器环境,es6模块由两个命令构成:export, import; export 是向外提供输出对外接口,import是使用其他模块向内提供输入接口

1.export

使用export 导出想要导出的值,可以是对象,变量,函数

声明 的同时 且导出

将要导出的值赋值给对象的方式导出

那么以exports导出的模块该如何 导入到其他js文件呢?

1.2 导入模块 语法 import

import 是提供接收对外导入的接口

格式: import 以结构的额方式使用大括号包起来,里面填写按需导入的成员,必须和必须和对应模块导出的成员名一致,如果需要更改成员名,需要使用as关键词, from 对接的模块路径

如果需要把一整个模块的所有对象都导入成一个对象 使用 as 关键词,自定义一个对象名

2.0 export default

同样是和export一样暴露指定的变量或者对象函数

但是导入到 其他模块会稍微方便一些,可以不用像export 需要使用{}接收,直接使用一个自定义的对象名接收即可

commonjs与es6模块化直接的差别

commonjs导出是值的拷贝,es6模块化是导出的值的引用

commonjs加载是运行时加载,而es6模块化是编译时加载会比commonjs更加高效

react+webpack 模块化应该采用CommonJS规范还是ES6规范,为什么

研究react的时候也考虑过这个问题,首先可以先了解下这两种模块的机制。参考这里

要考虑的点:

目前Commonjs是nodejs(浏览器环境需要模块加载器)原生支持的,而es6需要借助babeljs来实现。意味着如果要实现自动编译上线(我司没有在线上安装node_modules做法)可能需要将babel之类的node_modules提交代码仓库,大概45M。

还有要考虑下你选择的react的组件库是基于es6还是Commonjs。如果你业务使用Commonjs规范,组件使用es6,这个就没法统一了。

考虑下团队对es6的熟悉程度,关系到代码质量和维护成本。

暂时就想到这些。

commonjs规范和es6,commonjs和es6混用

本文目录一览: 1、CommonJS与ES6模块化的具体使用方式 2、commonjs 与 ES6 模块化 3、react+webpack 模块化应该采用CommonJS规范还是ES6规范,为什么 C

2023-12-08
commonjs和es6转换,commonjs和es6混用

本文目录一览: 1、node 循环加载- 2、如何将es5的代码转换为es6 3、ES6 模块与 CommonJS 模块的差异 4、怎么快速上手JavaScript中的ES6,ES6中的解构,运算符,

2023-12-08
深入理解CommonJS模块化规范

2023-05-18
模块包和commonjs,模块包和库

本文目录一览: 1、ECMAScript 6 的模块相比 CommonJS 的 有什么优点 2、ES6 模块与 CommonJS 模块的差异 3、react+webpack 模块化应该采用Common

2023-12-08
commonjs的核心思想(commonjs语法)

本文目录一览: 1、工程化属于技术研发阶段的哪一个阶段? 2、如何正确理解javascript的模块化 3、简述什么是commonjs,以及其与nodejs的关系 4、工程化是什么 工程化属于技术研发

2023-12-08
esm和commonjs(esm和commonjs区别)

本文目录一览: 1、JS模块化规范 2、webpack作者评价vite 3、前端面试计划(二)ES6「v2-附加代码」 4、简述什么是commonjs,以及其与nodejs的关系 5、typescri

2023-12-08
nodejs遵循commonjs(基于nodejs)

本文目录一览: 1、nodejs 是cmd还是amd 2、简述什么是commonjs,以及其与nodejs的关系 3、慕课网--nodejs 4、es6 遵循commonjs规范吗 nodejs 是c

2023-12-08
js引入commonjs,Js引入split

2022-11-23
深入理解CommonJS模块化规范

2023-05-20
前端模块commonjs,前端模块化开发

本文目录一览: 1、react怎么使用commonjs 2、如何理解前端模块化 3、CommonJS与ES6模块化的具体使用方式 4、react+webpack 模块化应该采用CommonJS规范还是

2023-12-08
commonjs缺点(ES6 Modules 相对于 Com

本文目录一览: 1、在node环境下怎么使用commonjs模块去使用require方法 2、webpack 常用loader、Plugins和Mode配置及解析规则 3、requirejs 支持 c

2023-12-08
php和jq开发怎么使用es6,PHP与jquery

2022-11-29
ES6模块化的多方面探究

2023-05-18
es和common混用,esm和commonjs

2023-01-08
commonjs怎么用,commonjs和requirejs

本文目录一览: 1、用commonjs方式开发前端 怎么弄 2、commonjs 循环引用 怎么实现 3、如何在node.js中使用requirejs 4、在node环境下怎么使用commonjs模块

2023-12-08
ES6模块化的优点和使用方法

2023-05-23
Rollup+Babel 组合,打造现代化的前端开发环境

2023-05-18
Vue.js中的import from

2023-05-16
深入理解SystemJS

2023-05-21
Babel-preset-env:真正的跨版本转码器

2023-05-18