我转过几个弯 绕过那个小雨楼
拿着蒲扇摆着衣衫渡着紧箍咒
不问天涯不停留 喝过几壶酒
不过年少白头道义放胸口
倘若明天之后 遥看前尘剑封侯
似那天上神仙无所求
朝朝暮暮君如梦醒十分不为何理由
是真是假是惶恐是无休
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
又过了几个弯 算尽天量道莫慌
踏这田园闻这芳草香
跌跌撞撞仗剑天涯折煞不枉无笔良
是梦是幻是温柔是家乡
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
谁能与我一醉方休
koa框架4 基础入门之node.js模块系统
node模块有三个语法:
- exports
- module
- require
require
其中require
就是一个引入模块的方法,他有两个路径写法,如果你引入的是系统模块,那么直接写模块名,不需要加路径,如果你引入一个自己的模块,需要加上当前路径,或者你自己的模块丢在当前目录的node_modules
目录下,你也可以省略路径。
require("http");
require("./my_http");
require("my_http");
node的模块都是js文件,所以我们可以省略这个后缀名不写
还有一种省略就是省略引入的js文件,node他支持默认引入index.js文件,有点像html的index.html,浏览器会默认读取这个index.html文件,在node里面,如果你没有指定要引入的文件名,他也会默认去找目录下的index.js文件。
假设我有一个目录为test,在test目录下有一个index.js文件,我们引入这个模块就可以这样写:
require("./test");
module和exports
注意exports是node语法,export是es6的语法,两个不一样的
其中exports就是module.exports的引用:
console.log(exports === module.exports);
//true
其原理如下:
let my_module = {
exprots: {}
}
let my_exprots = my_module.exprots;
exports是一个变量名,他引用了module.exports对象,但是也正因为js的引用类型,导致他们俩个的用法不同,我们可以理解,node最终导入模块的是module.exports对象,所以,如果module.exports在随后代码里重新赋值了,exports导出的任何东西都会不见,因为之前的引用对象不见了,
exports.a = 1;
exports.b = 2;
module.exports = {
c: 3
}
我们引入这个模块只能得到{c:3}
。
所以,这样就导致了两种导出方式,exports只能通过exports.xxx=xxx;
的方式每次导出一个内容,而module.exports
可以一次导出多个。
模块规则
js在最开始是没有所谓的模块化的,他就是一个js文件,直接script引入就行了。
但是后来项目的复杂,script引入很多不便,文件名还有可能相同导致冲突,于是出现了命名空间,但是这个也不能很好解决开发上的问题。
然后出现了民间的cmd规则,这也是node所使用的规则。
但是cmd在后来又发下引入太慢了,于是有了amd
,异步模块规范,但是现在也用的不多,虽然很强。
amd规范不久后官方也出了自己的规范esm
,但是这种规范浏览器目前还不支持,需要webpack协助编译,所以目前也不是很通用,但是node作者说以后会更换为esm,但是目前还没消息,估计要等一段时间了,因为换的话是一次较大的改动。
评论(0)