IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 模块化开发 -> 正文阅读

[JavaScript知识库]模块化开发

模块化的基本概念

1.编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并且相互依赖的多个小模块

2.把代码进行模块拆分的好处:

2.1提高了代码的复用性

2.2提高了代码的可维护性

2.3可以实现按需加载

3.模块化规范

模块化的规范就是对代码进行模块化的拆分与组合时,需要遵守的那些规则

例如

3.1使用什么样的语法格式来引用模块

3.2在模块化使用什么样的语法格式向外暴露成员

4.模块化规范的好处:大家都遵守同样的模块化规范写代码,降低了沟通的成本,极大地方便了各个模块之间的相互调用,利人利己

Node.js中的模块化

1.1Node.js 中模块的分类

Node.js中根据模块来源的不同,将模块分为了3大类,分别是:

1.2内置模块(内置模块是由Node.js官方提供的,例如fs.path,http等)

1.3自定义模块(用户创建的每个js文件,都是自定义模块)

1.4第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)

2.2加载模块

使用强大的require()方法,可以加载需要的内置模块,用户自定义模块,第三方模块进行使用,例如

 //1.加载内置的fs模块
 const fs = fequire('fs')
 //2.加载用户的自定义模块
 const custom = require('./custom.js')
 //3.加载第三方模块(关于带三方的下载和使用,会在后面的课程中进行专门的讲解)
 const moment = require('moment')

注意:使用require()方法加载其他模块时,会被执行加载模块中的代码

Node.js中的模块作用域

1.什么是模块作用域

和函数作用域类似,在自定义模块中定义的变量,方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域

2.模块作用域的好处

防止全局变量污染的问题

3.向外共享模块作用域中的成员

3.1module对象

在每个.js自定义模块中都有一个moduile对象,它里面存储了和当前模块有关的信息,打印如下

exports{}

4.向外共享模块作用域中的成员

4.1module.exports对象

在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用,外界用require()方法导入自定义模块时,得到的就是module.exports所指向的对象

向外共享模块作用域中的成员

4.2共享成员时的注意点

使用require()方法导入的结果,永远module.exports指向的对象为准

4.3?exports 对象

由于module.exports单词写起来比较复杂,为了简化向外共享成员代码,Node提供exports对象,默认情况下,exports和module.exports指向同一个对象,最终共享结果还是module.exports指向的对象为准

5.向外共享模块作用域中的成员

5.1时刻谨记,require()模块时,得到的永远的module.exports指向的对象

?注意:?为了防止混乱,建议大家不要在同一个模块中同时使用exports和module.exports

6.Node.js中的模块化规范

Node.js遵循了CommmonJs模块化规范,CommonJs规定了模块的特性各模块之间如何相互依赖

CommonJs 规定:

6.1每个模块内部,module变量当前模块

6.2module 变量是一个对象,它的exports属性(即mpdule.exports?)是对外接口

6.3加载某个模块,其实是加载改模块的module.exports属性.require()方法用于加载模块.

npm与包

1包

1.1什么是包

Node.js中的第三方模块又叫做

就像是计算机与电脑是相同的东西,第三方模块和包指的是同一个概念,只不过叫法不同

2.包的来源

不同于Node.js的内置模块与自定义模块,包是由2第三方个人或者团队开发出来的,免费供所有人使用

注意:Node,js中的包都是免费开源的,不需要付费即可免费下载使用.

3.为什么需要包

由于Node.js的内置模块仅提供了一些底层的API,导致在基于内置模块进行项目开发时,效率很低

包是基于内置模块封装出来的,提供了更高级,更方便的API,极大的提高了开发效率

包和内置模块之间的关系,类似于jQuery和浏览器内置API之间的关系

npm初体验

1.1格式化时间的传统做法

创建格式化时间的自定义模块

定义格式化时间方法

创建补零函数

从自定义模块中导出格式化时间函数

导入格式化时间的自定义模块

调用格式化时间函数

2.2格式化时间高级做法

使用npm包管理工具,在项目中安装格式化时间的包moment

使用require()导入格式化时间的包

参考moment的官方API文档对时间进行格式化

//导入moment包
const moment = require('moment')
//参考moment 官方API 文档,调用对应方法,对时间进行格式化
//2.1调用moment()方法,得到当前时间
//2.2针对当前时间,调用format()方法,按照指定的格式进行时间的格式化
const dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)
//输出2020.01.12 17:23:48

?3.3在项目中安装包的命令

如果想在项目中安装指定名称的包,需要运行如下的命令

npm install 包的完整名称

//下面的包装命令,可以简写如下格式
npm  i  包的完整名称

4.初次装包后多了那些文件

初次装包完成后,在项目文件夹下多一个叫做node_modules的文件夹和package-lock.json的配置文件

其中:

node,modules 文件夹用来存放所以已安装到项目中的包,require()导入第三方包时,就是从这个目录中查找并加载包

package-lock.json配置文件用来记录node_moduies目录下的每一个包的下载信息,;例如包的名字,版本号,及下载地址等

注意:程序员不要手动修改node_modules 或package-lock.json文件中的任何代码,npm包管理工具会自动维护他们

5.安装指定版本的包

默认情况下,使用npm install命令安装包的时候,会自动安装最新版本的包,如果需要安装指定版本的包,可以提供@符号指定具体的版本,例如

npm  i  moment@2.22.2

6.包的语义化版本规范

包的版本号是以'点分十进制'形式进行定义的,总共有三位数字,例如2.24.0

其中每一位数字所代表的含义如下:

第一位数字:大版本

第二位数字:功能版本

第三位数字:bug修复版本

版本提升的规制:只要前面的版本号增长了,则后面的版本号归零

7.包管理配置文件

npm规定,在项目根目录中,必须提供一个叫做package.json 的包管理配置文件,用来记录与项目有关的一些配置信息,例如:

项目的名称,版本号,描述等

项目中都用到了那些包

那些包只能包在开发期间会用到

那些包在开发和部署时都需要用到

8.在项目根目录中,创建一个叫做package,json的配置文件,即可用来记录项目中安装了那些包,从而方便剔除 node_modules目录之后,在团队成员之间共享项目的源代码

注意:今日在项目开发中,一定要把nade_modules文件夹,添加到.gitignore忽略文件中

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:45:45  更:2021-10-07 13:47:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:35:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码