模块化开发,可以让代码易于扩展、便于日后维护。

ES6中的模块化

我们先了解一下 export(导出) 和 import(导入) 这两个关键字。

新建一个文件a.js 并且导出变量test

export var test = "测试";

导入变量test  来源是a.js   然后输出test

import {test} from './a.js';
console.log(test);

如果想导出多个变量:

var test = "测试1";
var test2 = "测试2";
export {
test,
test2
}
import {test,test2} from './a.js';

如果你不想暴露模块当中的变量名字,可以通过as来进行操作:

var test = "测试1";
var test2 = "测试2";
export {
test as asTest,
test2 as asTest2
}
import {asTest,asTest2} from './a.js';

默认导出 (export default)

一个模块文件只能有一个默认导出,并且它的导入名称可以喝导出名称不一样。

export default test = "哈哈";
import test from './a.js';
import noTest from './a.js';//名字不一样也行

混合导入导出

/*导出文件  a.js*/
export var test = "Hello";
export default yuki = "Yuki"; /*导入*/
import yuki,{test} from './a.js';

CommonJS

commonJs是Node独有的规范,一般是用于服务端。module.exports(导出) 、require(导入)。具体看示例

module.exports = {
test:'哈哈',
yuki:'Yuki'
}
//下面这种方式也可以导出 exports不能直接赋值一个对象 也就说exports=对象aaa 这种写法是无效的
exports.test = "哈哈";
exports.yuki = "Yuki";
var obj = require('./a.js');
console.log(obj.test);
console.log(obj.yuki);

CommonJS与ES6中模块化的区别

1.commonJs支持动态导入,也就说require(${path}/xx.js) ,但ES6不支持。

2.commonJs是同步的,并且一般用于服务端,后者是异步的,一般用于客户端(浏览器)。

AMD

// AMD
define(['./a', './b'], function(a, b) {
a.do()
b.do()
})
define(function(require, exports, module) {
var a = require('./a')
a.doSomething()
var b = require('./b')
b.doSomething()
})

《JavaScript总结》js模块化的更多相关文章

  1. JS模块化开发:使用SeaJs高效构建页面

    一.扯淡部分 很久很久以前,也就是刚开始接触前端的那会儿,脑袋里压根没有什么架构.重构.性能这些概念,天真地以为前端===好看的页面,甚至把js都划分到除了用来写一些美美的特效别无它用的阴暗角落里,就 ...

  2. 从273二手车的M站点初探js模块化编程

    前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数 ...

  3. ReactJS webpack实现JS模块化使用的坑

    从一个原生HTML/CSS/JS模式的网页改造到ReactJS模块化的结构,需要以下步骤: (1)引用ReactJS框架 ->(2)使用webpack 工具 -> (3)配置webpack ...

  4. JS 模块化和打包方案收集

    1.这里想讨论的是拆分规则,不是在问哪个工具怎么使用.2.这里没有在想找正确答案,因为感觉这个问题要结合具体业务场景. 随着项目开发越来越大,一开始代码全打包到一个文件的方式,让文件越来越大,接下来要 ...

  5. 闲聊——浅谈前端js模块化演变

    function时代 前端这几年发展太快了,我学习的速度都跟不上演变的速度了(门派太多了,后台都是大牛公司支撑类似于facebook的react.google的angular,angular的1.0还 ...

  6. js模块化历程

    这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 无模块时代 在ajax还未提出 ...

  7. js 模块化的一些理解和es6模块化学习

    模块化 1 IIFE 2 commonjs 3 浏览器中js的模块化 4 简单理解模块加载器的原理  5 es6 之前在参加百度前端技术学院做的小题目的时候,自己写模块的时候 都是写成立即调用表达式( ...

  8. 探索javascript----浅析js模块化

    引言: 鸭子类型: 面向对象的编程思想里,有一个有趣的概念,叫鸭子类型:“一只鸟走起来像鸭子.游起泳来像鸭子.叫起来也像鸭子,那它就可以被当做鸭子.也就是说,它不关注对象的类型,而是关注对象具有的行为 ...

  9. js 模块化历程

    作者:吕大豹 网址:http://www.cnblogs.com/lvdabao/p/js-modules-develop.html 这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生 ...

  10. Ampersand.js - 模块化的 JS 应用程序开发框架

    Ampersand.js 是一个高度模块化,松耦合,用于构建先进的 JavaScript 应用程序的框架.通过良好定义的方法,结合了一系列微小的 CommonJS 模块.条理清晰,没有多余的冗余代码. ...

随机推荐

  1. 【Python】 Python3 环境搭建

    Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. Windo ...

  2. 关于git的一些命令

    git命令 1.git init 初始化仓库 2.git status 查看当前状态 3.git add -A(提交所有的) 提交本地文件到缓存区 4.git commit -m"提交信息& ...

  3. 关于U3D的.SDK对接

    1,SDK对接原理:https://www.cnblogs.com/msxh/p/7220741.html 2,Unity ADS对接:https://blog.csdn.net/chenluwolf ...

  4. excel日期拾取插件(支持Excel 2007 - 2016)

    插件安装完毕后示意图如下: 插件安装说明请查看附件里面的安装说明. 插件下载

  5. php5.6,Ajax报错,Warning: Cannot modify header information - headers already sent in Unknown on line 0

    php5.6ajax报错 Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be remo ...

  6. Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类

    Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯.2.面向对象的出现,将复杂的事情简单化.3.面向对象的出现,将之前过程中 ...

  7. python 线程Queue 用法代码展示

    from queue import Queue q = Queue(maxsize=3)#限制队列3个 #添加内容进去到队列 q.put(10) q.put(20) q.put(30) print(q ...

  8. api controller 接口接收json字符串参数

    {"data":{"alarmRepeatTimes":2,"currentMode":1,"moduleResetTimeout ...

  9. Robust Influence Maximization

    一.   研究背景 在社会和经济网络中,影响最大化问题在过去十年中得到广泛的研究,由于其广泛应用于病毒式营销[1,2],突破检测[3],谣言监测[4]等.例如公司可以通过向初始用户(称为种子)发送免费 ...

  10. Codeforces831C Jury Marks

    C. Jury Marks time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...