const a = require('./util');
console.log(a)
console.log(a.name())
结果如下:

其他的还有:
require引用模块后,返回给调用者的是module.exports而不是exports。exports.xxx=的暴露方式,相当于在导出的对象上挂上了属性,该属性对调用模块直接可见。exports=xxx的暴露方式,相当于给exports对象重新复制,调用模块不能访问exports对象及其属性。- 若该模块是一个类,那么应该通过直接赋值的方式
module.exports,这样调用者就是一个类构造器,可以直接new实例。
浅谈require和import的区别前言一. require和import的区别1.1 从其本质来看不同1.2 从其用法来看不同require/exports:import/export:二. 拓展:module.exports和exports前言在公司里写代码的时候,我遇到了这么一个场景:项目当中需要用到Redis,但是要想使用它,必须经过一系列的初始化动作。用过Egg的同学知道,一般我们通过在app.js文件中,在willReady()函数中,将Redis初始化,并将初始化完成的对象放到app对
本质上的区别:
session的使用方式是客户端cookie里存id,服务端session存用户数据,客户端访问服务端的时候,根据id找用户数据。
而token的使用方式是客户端里存id(也就是token)、用户信息、密文,服务端什么也不存,服务端只有一段加密代码,用来判断当前加密后的密文是否和客户端传递过来的密文一致,如果不一致,就是客户端的用户数据被篡改了,如果一致,就代表客户端的用户数据正常且正确。
session,注册登录->服务端将user存入session->将session
关于 import 和 require 的不同,其实可以理解成 CommonJs 和 ES Module 的区别。这两者都是前端模块化的规范。
我们在 node 里使用的是 CommonJs,在前端页面的时候,用的是 ES Module,这两者的区别,还是很容易混淆的,所以整理一下 CommonJs 和 ES Moudule 的相关知识点,把这里好好的整理一下。
一、CommonJs
1.1 概述
Nodejs 是 CommonJS 规范的主要实践者,在 CommonJs 里每个文件就是一个模块,有自己的作
区别2:模块的本质
require:模块就是对象,输入时必须查找对象属性
import:ES6 模块不是对象,而是通过 export 命令显式指定输出的代码,再通过 import 命令输入(这也导致了没法引用 ES6 模块本身,因为它不是对象)
// CommonJS模块
let { exists, read...
require是运行时调用,所以可以放置在模块任何位置。只能在运行时确定模块的依赖关系以及输入/输出变量,无法进行静态优化。
import是编译时调用,所以必须放置在模块头部。支持编译时静态分析,便于JS引入宏和类型检验。动态绑定。
require是赋值过程,因此对于对象赋值,是一种浅拷
require和import使用
import是ES6的模块引入方式,它是在JS引擎编译阶段执行的,在编译时就能确定模块的依赖关系,以及输入和输出的变量。在代码运行前,遇到import就会生成一个只读引用,然后在运行阶段,碰到有用到引入模块值的再去引用模块取值,可能项目中并没有引用引入模块的值,但是已经声明了,就会执行。所以无法在生产环境下移除该部分代码。
// ES6模块
import { stat, exists, readFile } from 'fs';
CommonJS的require是运行时执