关于Module

起源

模块(module)可以让一个程序在设计上拆分成各自的小部分,然后通过简单方式组装起来

ES5实现

在ES6之前,模块加载方案主要有CommonJS(服务器)和AMD(浏览器)两种,缺陷是只能在运行时才能确定模块的依赖关系及输入输出的变量

/*CommoJS*/
let { stat, exists, readFile } = require('fs')

该方法的实质是生成一个对象获取fs上所有方法并按需获取,这种加载也称为"运行时加载"

// 等同于
let _fs = require('fs');
let stat = _fs.stat;
let exists = _fs.exists;
let readfile = _fs.readfile;

export

正常来说,一个js文件就是一个模块,该模块的变量函数等时无法被外部读取的,而如果打算输出变量函数等的话,便可以使用ES6提供的export

export var ABYSS = 'Alice'; //对外输出变量
export function multiply(x, y) { //对外输出函数
  return x * y;
};
/*React.js*/
import React from 'react'
export default React.createClass({
    render(){
        return (
            <div className="">
                Some Write
            </div>
            )
    }
})

import

到了ES6以后就可以使用export输出指定代码,再通过import加载

/*ES6 import*/
import { stat, exists, readFile } from 'fs'
/*React.js*/
import React from 'react'

import仅加载需要的方法,效率要更高,称为"编译时加载"或"静态加载",不过需要知道的是通过import加入的方法并不是对象,所以无法引用它本身

未完待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 9,011评论 2 27
  • 认识模块 JS 作为一名编程语言,一直以来没有模块的概念。严重导致大型项目开发受阻,js 文件越写越大,不方便维护...
    faremax阅读 3,921评论 0 0
  • 这种加载称为“运行时加载”,因为只有运行时才能得到这个对象,导致完全没办法在编译时做“静态优化”。 ES6 模块不...
    codeSirCao阅读 3,558评论 0 0
  • 以下内容是我在学习和研究ES6时,对ES6的特性、重点和注意事项的提取、精练和总结,可以做为ES6特性的字典;在本...
    科研者阅读 8,374评论 2 9
  • 我把冬天稳住 请把这场雪稳住 我闻雪的味道,听白茫茫的遗失的声响 我不声张,我不敢 望南山,路过一条蓝色的河 远方...
    我是不是蝎大人阅读 1,531评论 4 1

友情链接更多精彩内容