NodeJs模块化(KPD)

一、后端的规范与思想

  1. 分层
    (1)Web层(接收和发送Http请求的,封装;web层、controller层)
    (2)业务逻辑层(服务层,xxxService; )
    LoginController(接收参数,判断是否非法,传给服务层)
    LoginService(获取这个用户的密码,进行比较)
    (3)DAO层:
    DataBase(DB):存数据
    业务:对对象进行操作
    如果要存储: 对象 转为 数据
    如果要读取: 数据 转为 对象
    (4)持久层 :存在磁盘上
    文件,数据库

    每层的命名:
    web层: LoginController(接收参数,判断是否非法,传给服务层)
    服务层: LoginService(获取这个用户的密码,进行比较)
    DAO层:LoginDAO(从数据库获取数据,并转换为对象)
    Domain:User
    设计模式 :单一职责原则

  2. 模块化
    (1)Es6、导入导出;Es3、5缺点:缺少模块化概念
    (2)Js规范缺乏管理机制,Bootstrap,Jquery
    npm
    npm install XXX

    模块化:
    先创建两个文件夹 index.js 和 test.js
    重要的两点:
    比如说index.js要用到test.js中的内容,要在index.js中==引入 ==:

index.js文件中:

require('';//想引用哪个模块就写入哪个模块的路径
//比如:
var  test = require("./test.js";返回一个模块对象  
console.log(test.a)

test.js文件中,要让别的文件引用这个文件内容 ,要导出(module.exports)

var  a  = 123;
var   b = "abc";

//开闭原则
module.exports.a = a;
module.exports.b = b; //moodule.exports.a = a 可以简写为exports.a = a


module.exports 和exports有什么区别

我们先来举一个例子:

index.js
在这里插入图片描述

test.js
在这里插入图片描述
运行结果:
在这里插入图片描述
若把其中一个改为exports.a = a结果为
在这里插入图片描述
在这里插入图片描述
我们可以看到exports.a = a 和module.exports.a = a输出的结果相同,那么这就可以说明两个是完全相同的吗, 答案是不相同

  • 分析
    当我们把其中一个改了之后,结果为:
    在这里插入图片描述
    在这里插入图片描述
    发现值不一样了,这是为什么呢?在这里插入图片描述
    我们可以画个图来看一下:
    在这里插入图片描述
    注意:如果把module.exports换成别的对象,最后输出的也只是module.exports后面的对象的值,可以自己试着验证一下

重点

  • NodeJs的模块是运行在一个函数当中的。上面所引用的参数不是全局的变量,而是当作函数的参数传进去的。

     eg:我们创建一个文件 system.js 比如说这个函数名字为xyz
    
function   xyz(exports,require,module,_filename,dirname){
//中间的内容是我们写的nodejs代码

//NodeJs的模块是运行在一个函数当中的。

return  module.exports;
}

在上面的index.js中输console.log(arguments); 可以全部打印出来这些参数,就可以验证这一点。

基本内置模块

  • os
    1.EOL: end of line
const os = require("os");
console.log(os.EOL);

2.arch():获取CPU的架构名
3.cpus():获取CPU每个核的信息
4.freeman():得到我们当前的内存还剩下多少
5.homedir():用户目录
6.hostname():获取主机名
7.tmpdir()::获得操作系统的临时目录

  • path
    1.basename:文件名
    2.sep:分隔符,同一块东西的内部分割
    3.delimiter:分割,块与块之间的分割
    4.dirname:获取当前路径
const dir = path.dirname("a/b/c/d.js");
console.log(dir);
//输出结果为a/b/c

5.extname :获取后缀名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值