module(JS模块系统)
JS - module(模块系统)
重新学习ES6 倒数第一章 module
什么是module?
百度的解释
之前接触过AngularJS,现在看Dojo,都有对模块的使用。在dojo官网看到这段文字,觉得很好得对JS的模块化的必要性有所解释,所以记录下来:
What is a module?
A module is a value that can be accessed by a single reference. If you have multiple pieces of data or functions that you want to expose in a module, they have to be properties on a single object that represents the module. Practically speaking, it's overkill to create a module for a simple value like var tinyModule = 'simple value';, but it would be valid. Modules start to make a lot more sense for modularizing your code - splitting it up into logical subsets for handling specific functionality. If you want to represent a person with information like name and address, perhaps even add some methods to your person, it starts to make sense to put all that code in a single location. A module is stored in your file system in a single file.
以上意思主要就是:
模块化可被简单接口引用,当你有很多数据和函数(功能)要作为完整个体展示的时候,你可以把他们作为一个module来定义,这些数据和函数(功能)作为独立对象去构Module。Module意义就在于模块化代码,使你的代码分成一个个逻辑上独立的子集,每个子集处理特定的功能。例如,你想定义人,定义中涉及人的属性信息,例如名字、地址。甚至加入一些函数去定义人这个个体。你把定义人的相关代码放在同一个地方更为合理。Module就是存放这样的代码的文件,在整个文件系统中,这个文件是可以被单独调用的。
基本了解
CommonJS 模块
动态加载 执行到了才会加载
let { stat,exists,readFile } = require('fs')
//等同于
let _fs = require('fs')
let stat = _fs.stat;
let exists = _fs.exists;
let readfile = _fs.readfile;
ES6模块
静态导入 页面加载自动引入
import { stat, exists, readFile } from 'fs'
Module的基本语法
导出 - Math.js
function add(a,b){
return console.log(a+b);
}
export {add}
导入- demo.js
import {add} from './Math.js'
add(1,2)
//
import {add as aMath} from './Math.js'
aMath(1,2)
输出变量写法
//1.
export var firstName = 'Michael'
export var lastName = 'SwalT'
export var year = '1888'
//2.
var firstName = 'Michael'
var lastName = 'SwalT'
var year = '1888'
export{ firstName, lastName, year }
//3.
function v1(){...}
function v2(){...}
function v3(){...}
export {
v1 as streamV1,
v2 as streamV2,
v3 as streamLatestVersion
}
//执行所加载的模块
import 'loading'
模块的整体加载
//除了指定加载某个输出值,还可以使用整体加载, 即用星号(*) 指定一个对象, 所有输出值都加载在这个对象上面
//模块代码
export function area(radius){
return Math.PI * radius * radius
}
export function circumference(radius){
return 2 * Math.PI * radius
}
//js
import * as circle from './MathModule.s'
console.log('圆面积:' + circle.area(4))
console.log('圆周长:' + circle.circumference(14))
export default
//module
export default function(){
console.log('foo')
}
//js
import module from './export-default'
modulr()
注意事项:
import export 不可动态处理 !
import 是只读的 本质是输入接口 所以不允许在加载模块的脚本里面, 改写接口
但是如果引入的是一个对象, 那么这个对象的属性值是允许修改的, 但是很难查错
等我学完再写
module(JS模块系统)的更多相关文章
- 10、Node.js模块系统
##################################################################################介绍Node.js模块系统为了让No ...
- Node.JS模块系统
1.什么是模块? 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js ...
- Node.js 模块系统
为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js 文件就是一个模块, ...
- 27.Node.js模块系统
转自:http://www.runoob.com/nodejs/nodejs-module-system.html 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模 ...
- js模块系统 - amd|cmd|commonjs|esm|umd
写过前端代码大概率听说过amd cmd umd commonjs esm这些名词, 想当初我第一次看到这些的时候, 人都麻了, 都是些啥啊. 后来我知道了, 这些都是js的模块规范. amd - 浏览 ...
- Node.js 模块系统入门
在编程领域中,模块是自包含的功能单元,可以跨项目共享和重用.它们使开发人员的生活更加轻松,因为我们可以使用它来增加应用程序的功能,而不必亲自编写这些功能.它还让我们可以组织和解耦代码,从而使应用程序更 ...
- Node.js:模块系统
ylbtech-Node.js:模块系统 1.返回顶部 1. Node.js模块系统 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的 ...
- Node.js 教程 04 - 模块系统
前言: Node.js的模块系统类似于C/C++的文件引用,可以声明对象,也可以定义类 创建对象. 大家这么理解,就简单了. 定义: 为了让Node.js的文件可以相互调用,Node.js提供了一个简 ...
- nodejs的模块系统(实例分析exprots和module.exprots)
前言:工欲善其事,必先利其器.模块系统是nodejs组织管理代码的利器也是调用第三方代码的途径,本文将详细讲解nodejs的模块系统.在文章最后实例分析一下exprots和module.exprots ...
随机推荐
- JAVA开源软件的技术选型--开源软件诞生2
技术准备--第2篇 用日志记录“开源软件”的诞生 赤龙ERP开源地址,点亮星标,支持一下,万分感谢 码云:https://gitee.com/redragon/redragon-erp github: ...
- 快速构建一个完整的Selenium框架
今天跟大家细讲如何构建一个完整的selenium框架,当你学会了这一篇你就也可以说自己会selenium自动化测试了. 1.新建项目,结构如图: 注意:整个项目除了最外层的是文件夹,其他的都是包(pa ...
- Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- ZOJ-2972-Hurdles of 110m(记忆化搜索)
In the year 2008, the 29th Olympic Games will be held in Beijing. This will signify the prosperity o ...
- [BUUOJ记录] [BJDCTF 2nd]fake google
本题考查python jinjia2的ssti,其实tplmap直接梭哈都可以 随便输入一个值,查看源代码就能看到一个Hint: 用下面的流程图测试一下,看看是什么模板引擎: 用Payload测试之后 ...
- Java使用POI的SXSSFWorkbook与HSSFWorkbook导出复杂表头
一.HSSFWorkbook与SXSSFWorkbook的区别: HSSFWorkbook是对Excel2003以前的版本进行操作的,即后缀名为.xls SXSSFWorkbook时对Excel200 ...
- 跟着尚硅谷系统学习Docker-【day07】
day07-20200722 p27.dockerfile案例编写-3 第一步:编写父dockerfile DockerFile_20200722_2 FROM centos RUN yum ...
- Java清空一个指定文件
清空test.log文件所有内容 File log = new File("c:\\test\\test.log"); FileWriter fileWriter =new Fil ...
- netty如何进行单元测试
一种特殊的Channel 实现——EmbeddedChannel,它是Netty 专门为改进针对ChannelHandler 的单元测试而提供的. 将入站数据或者出站数据写入到EmbeddedChan ...
- leetcode刷题-82.删除排序链表中的重复元素 II
题目 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4->5输出: 1- ...