美文网首页
require 与 export 、 import

require 与 export 、 import

作者: 李霖弢 | 来源:发表于2019-08-09 10:25 被阅读0次

require

require是common.js的规范方法,在nodeJs中直接支持,在浏览器中需先通过webpack打包变相支持

module.exports 和 exports

module.exportsexports都是NodeJs中默认存在的空对象,默认指向同一块内存
require引入的对象本质上是module.exports,因此如果直接对exports赋值,则会导致两者不全等。应通过export.XXX=XXX进行赋值。

export 和 import 命令

export、import是ES6语法

  • 在html中,import语句必须写在<script type="module"></script>中。
    使用import...from会执行目标js并引入内容
    而以下两句会执行目标js但不会引入内容
<script type="module" src="./demo_export.js"></script>
<script type="module">
  import "./demo_export.js";
</script>
  • import和export只能出现在模块的最外层(顶层)结构中,否则报错
  • 由于es6模块是静态加载的,因此import和export不能出现在判断等动态语句中
  • es6 module内部自动采用严格模式

1、export default 向外暴露的成员,可以使用任意不带{}的变量来接收
2、在一个模块中,export default 只允许向外暴露一次,export 可以有多个
3、在一个模块中,可以同时使用 export defaultexport 向外暴露成员
4、使用export向外暴露的成员,只能使用{ }的形式来接收,这种形式,叫做【按需导出】
5、export可以向外暴露多个成员
6、使用export导出的成员,必须严格按照导出时候的名称使用{ }按需接收
7、使用export导出的成员,如果想换个变量名称接收,可以使用 as 来起别名,也可以在 import 时再用 as 改名


export

相当于把对象添加到module的exports中。

function hello(){
...
}
var num = 100;
export { hello,num }

等价于

export function hello(){
...
}
export var num = 100;
export default

相当于把对象添加到module的exports中,并且对象的key叫default

export default 100;

等价于

var num = 100;
export default num;

import
  • 不带{}的导入
    导入module.default属性(注:如果default属性不存在,则导入exports对象)。
  • 带{}的导入
    按照属性key值导入module的对应属性值。


    image.png
//export.js
function hello(){
...
}
var num = 100;
export { hello as myFun,num }
export default 'hello world';
<script type="module">
import myString,{myFun as newFun,num} from './export.js';
import * as allParams from './export.js';
console.log(allParams);
</script>

export defaultexport 内容,可以在一句import中一起引入
注意 , 对于 export default 的内容, import 时不能 as


import() 函数

通过import()函数可实现动态加载,通常用于按需加载/条件加载,弥补了import只能位于模块顶层的缺陷。
import()返回一个Promise对象。

button.addEventListener('click', event => {
  import('./dialogBox.js')
  .then(dialogBox => {
    dialogBox.open();
  })
  .catch(error => {
    /* Error handling */
  })
});

相关文章

网友评论

      本文标题:require 与 export 、 import

      本文链接:https://www.haomeiwen.com/subject/czxfjctx.html