关于node中 require 和 ES6中export 、export default的总结
nodejs中 require 方法的加载规则
方法的加载规则
1. 优先从缓存中加载
2. 核心模块
3. 路径形式的模块
4. 第三方模块
一、优先从缓存中加载
main.js:执行加载a.js模块
require ('./a')
a.js:输出a被加载了 执行加载b.js模块
console.log('a.js被加载了')
let abd = require('./b')
console.log(abd)
b.js:
console.log('b.js被加载了')
module.exports = {
a: '小明'
}
结果
C:\Users\Administrator\Desktop\test>node ./main.js
a.js被加载了
b.js被加载了
{ a: '小明' }
二、node 中模块的加载顺序
以 var template = require(‘art-template’) 为例:
1. 先找到当前文件所处目录中的 node_modules 目录
2. 然后根据以下方式找到文件中的 main 属性
3. main 属性中就记录了 art-template 的入口模块
4. 然后加载使用这个第三方包,但是实际上最终加载的还是文件
5. 如果 package.json 文件不存在或者 main 指定的入口模块是也没有
6. 则 node 会自动找该目录下的 index.js,也就是说 index.js 会作为一个默认备选项
7. 如果以上所有任何一个条件都不成立,则会进入上一级目录中的 node_modules 目录查找
8. 如果上一级还没有,则继续往上上一级查找
9. 如果直到当前磁盘根目录还找不到,最后报错: can not find module xxx
第三方模块寻找顺序: node_modules/art-template > package.json 文件 > main 属性 > index.js
export default 和 export 区别
注意:
1. export与export default均可用于导出常量、函数、文件、模块等
2. 在一个文件或模块中,export可以有多个,export default仅有一个
4、在一个模块中,可以同时使用export default 和export 向外暴露成员
5、使用export向外暴露的成员,只能使用{ }的形式来import,这种形式,叫做【按需导出】,不需要,可以不在{ }中定义
3、export default 向外暴露的成员,可以使用任意变量来接收
7、使用export导出的成员,必须严格按照导出时候的名称,来使用{ }按需接收
8、使用export导出的成员,如果想换个变量名称接收,可以使用as来起别名
例如
// test.js
let info = {
name: 'zs',
age: 20
}
export default info
export let title = '小星星'
export let content = '哈哈哈'
在main.js中接收,test.js使用export default 和 export 向外暴露的成员
import person, {title, content as content1} from './test.js'
console.log(person) // 其实就是test.js 中的 info
console.log(title) // 其实就是test.js 中的 title
console.log(content1) // 其实就是test.js 中的content 注意对应关系
关于node中 require 和 ES6中export 、export default的总结的更多相关文章
- ES6中常用新特性讲解
1.不一样的变量声明:const和let ES6推荐使用let声明局部变量,相比之前的var(无论声明在何处,都会被视为声明在函数的最顶部) let和var声明的区别: var x = '全局变量'; ...
- es6中的类及es5类的实现
目录 类的特点 类的特点 1.类只能通过new得到 在es6中类的使用只能是通过new,如果你将它作为一个函数执行,将会报错. //es6的写法 class Child { constructor() ...
- ES6中的export以及import的使用多样性
模块功能主要由两个命令构成:export和import.export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能. 一.export导出模块使用部分的几种方式 一个模块就是一 ...
- ES6中export , export default , import模块系统总结
最近在学习使用Webpack3的时候发现,它已经可以在不使用babel的情况下使用ES6的模块加载功能了. 说到ES6的模块加载功能,我们先复习一下CommonJS规范吧: 一 . CommonJS ...
- ES6中的export和import
1.ES6中的模块加载 ES6 模块是编译时加载,编译时就能确定模块的依赖关系,以及输入和输出的变量,相比于CommonJS 和 AMD 模块都只能在运行时确定输入输出变量的加载效率要高. 1.1.严 ...
- JavaScript ES6中export及export default的区别
相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在JavaScript ES6中,export与export default均可用于导出常量.函 ...
- ES6中export及export default的区别
相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在JavaScript ES6中,export与export default均可用于导出常量.函 ...
- ES6中export与export default的区别
首先要知道export,import ,export default是什么 ES6模块主要有两个功能:export和importexport用于对外输出本模块(一个文件可以理解为一个模块)变量的接口i ...
- ES5和ES6中关于import & export的书写方式的区别
ES6中输出变量的写法 情景1:单个变量 输出 export const less = 'less' 引用 import {less} from '../index.js' 情景2:多个变量 输出: ...
随机推荐
- 使用Image作为BackgroundColor 使用
https://www.hackingwithswift.com/example-code/uicolor/how-to-use-an-image-for-your-background-color- ...
- MATLAB 去掉数组里面不要的元素
trainfinger=1 testingfinger=(1:8); testingfinger = testingfinger(~ismember(testingfinger,trainfinger ...
- [NOIP2019模拟赛]HC1147 时空阵
题目描述: 幽香这几天学习了魔法,准备建造一个大型的时空传送阵. 幽香现在可以在幻想乡的n个地点建造一些传送门,如果她建造了从地点a与地点b之间的传送门,那么从a到b和从b到a都只需要单位1的时间. ...
- 转:浅析C++中的this指针
原文出处:http://blog.csdn.net/starlee/article/details/2062586 有下面的一个简单的类: class CNullPointCall { public: ...
- Matrix Power Series
Matrix Power Series 给出矩阵A,求矩阵\(A+A^2+...+A^k\)各个元素\(mod\ yyb\)的值,\(n\leq 30,k\leq 10^9,yyb\leq 10^4\ ...
- BZOJ 4765: 普通计算姬 (分块+树状数组)
传送门 解题思路 树上的分块题,,对于修改操作,每次修改只会对他父亲到根这条链上的元素有影响:对于查询操作,每次查询[l,r]内所有元素的子树,所以就考虑dfn序,进标记一次,出标记一次,然后子树就是 ...
- 使用jqselectable构建美化的select元素
本文只对此插件的应用做一些探讨,本插件版权属于原作者,插件原始下载地址:http://www.jq22.com/jquery-info288 原插件也有些许不足之处,比如样式定义名称太过普通,容易和页 ...
- OpenCASCADE动画功能2
OpenCASCADE动画功能2 eryar@163.com OpenCASCADE是一个开发平台,主要提供三维曲面和实体建模.CAD数据交换及可视化等功能.OCCT最适用于开发三维建模CAD软件.加 ...
- 整合SSH框架最基本的例子
ssh框架整合 一.思路 1.导包 struts2: \apps\struts2-blank\WEB-INF\lib\所有包 struts2-spring-plugin-2.3.28.jar hibe ...
- 工业派-配置Intel神经计算棒二代(NCS2)
最近两天在工业派ubuntu16.04上配置了Intel神经计算棒二代——Intel Neural Compute Stick,配置过程之艰辛我都不想说了,实在是太折磨人.不过历尽千辛万苦,总算让计算 ...