js模块系统require和import区别与联系

简介: js模块系统require和import区别与联系

模块加载原理

var module = {
  exports: {}
};
(function(module, exports) {
  exports.multiply = function (n) {
      return n * 1000 
   };
}(module, module.exports))
var f = module.exports.multiply;
f(5) // 5000

require和import

1、区别

require / exports 是 CommonJS(在Node中实现)

import / export 是 ES2015 的模块

require是动态加载

import是静态加载

2、联系

import -> babel打包 -> require

CommonJS 格式转换的工具: http://browserify.org/

3、示例

require

// 引入
const fs = require('fs')
// 导出
exports.fs = fs
module.exports = fs

import

// 引入
import fs from 'fs'
import {readFile} from 'fs'
// 导出
export default fs
export const fs
export function readFile
export {readFile, read}

exports 和 module.exports

exports 只能使用.语法向外暴露内部变量

例 exports.xxx=xxx

module.exports既可以通过点语法,也可以直接赋值一个对象

例 module.exports.xxx=xxx

参考 深入理解CommonJS!

其他文章

  1. require,import区别?


相关文章
|
5月前
|
JavaScript 前端开发
JS require 与 import 的区别
JS require 与 import 的区别
120 1
|
5月前
|
JavaScript 前端开发
JS中 require 与 import 的区别
JS中 require 与 import 的区别
|
12月前
|
前端开发
【前端异常】解决前端引入Bootstrap的dropdowns 菜单时报错,Uncaught TypeError: Bootstrap‘s dropdowns require Popper.js
【前端异常】解决前端引入Bootstrap的dropdowns 菜单时报错,Uncaught TypeError: Bootstrap‘s dropdowns require Popper.js
106 0
|
JavaScript
js文件中的require以及import 等语句中的{ }的作用
js文件中的require以及import 等语句中的{ }的作用
|
JavaScript
js模块系统require和import区别与联系
js模块系统require和import区别与联系
110 0
CRM Fiori Opportunity Application Component.js - declare and require
CRM Fiori Opportunity Application Component.js - declare and require
98 0
CRM Fiori Opportunity Application Component.js - declare and require
How does framework require TechnicalInfo.js
Created by Wang, Jerry, last modified on Mar 07, 2016
120 0
How does framework require TechnicalInfo.js
|
JavaScript 编解码
JS 中require和import总结
都是为了js模块化编程 遵循规范 require 是AMD规范引入方式 import 是es6的一个语法标准,需要转换成es5的语法才能兼容浏览器 调用时间 require是运行时调用,所以require理论上可以运用在代码的任何地方 import 是编译时调用,所以必须放在文件头部...
8142 0
|
Web App开发 JavaScript 前端开发
彻底搞清楚javascript中的require、import和export
为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。 但是,Javascript不是一种模块化编程语言,在es6以前,它是不支持”类”(class),所以也就没有”模块”(module)了。
2612 0
下一篇
无影云桌面