1.包是基于内置模块封装出来的;包和内置模块之间的关系,类似于jQuery和浏览器内置API之间的关系。
2.格式化时间
2.1 传统做法
①创建格式化时间的自定义模块
②定义格式化时间的方法
③创建补零函数
④从自定义模块中导出格式化时间的函数
⑤导入格式化时间的自定义模块
⑥调用格式化时间的函数
自定义格式化时间模块:
//1.定义格式化时间的方法
function dateFormat(dtStr){
const dt=new Date(dtStr)
const y=dt.getFullYear()
const m=padZero(dt.getMonth()+1)
const d=padZero(dt.getDate())
const hh=padZero(dt.getHours())
const mm=padZero(dt.getMinutes())
const ss=padZero(dt.getSeconds())
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
//定义补零的函数
function padZero(n){
return n>9?n:'0'+n
}
module.exports={
dateFormat
}
导入模块:
//导入自定义的格式化时间的模块
const TIME=require('./dataFormat')
//调用方法,进行时间的格式化
const dt=new Date()
console.log(dt)
const newDT=TIME.dateFormat(dt)
console.log(newDT)
2.2使用npm包工具格式化时间
①使用npm包管理工具,在项目中安装格式化时间的包moment。
安装包的命令:npm i 完整包的名称
安装指定版本的包:npm i 完整包的名称@版本号
②使用require()导入格式化时间的包
③参考moment的官方API文档对时间进行格式化
//1.导入moment包
const moment=require('moment')
//2.参考moment官方API文档,调用对应的方法,对时间进行格式化
//2.1调用moment()方法,得到当前的时间
//2.2针对当前的时间,调用format()方法,按照指定的格式进行时间的格式化
const dt=moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)
3.初次装包多的文件
初次装包完成后,在项目文件下多一个叫node_modules的文件夹和package–lock.json文件。
node_modules文件夹用于存放所有已安装到项目中的包,require()导入第三方包时,就是从这个目录中查找并加载包。
package-lock.json配置文件用来记录node_modules目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等。
4.包管理配置文件
在项目根目录中,创建一个叫做package.json的配置文件,即可用来记录项目中安装了哪些包,从而方便剔除node_modules目录之后,在团队成员之间共享项目的源代码。
今后在项目开发中,一定要把node_modules文件夹,添加到.gitignore忽略文件中。
在执行命令所处的目录中(只能是英文目录,不能出现中文,不能出现空格),快速创建package.json文件
npm init -y
一次性安装所有包
npm install
卸载包
npm uninstall moment
devDependencies节点
如果某些包只在项目开发阶段,在项目上线之后不会用到,则建议把这些包记录到devDependencies节点中。与之对应的,如果某些包在开发和项目上线之后都需要用到,则建议把这些包记录到dependencies节点中。
安装指定的包,并记录到devDependencies节点中
npm i 包名 -D
完整写法:npm install 包名 --save-dev
5.解决下包速度慢等问题
5.1切换npm的下包镜像源
查看当前的下包镜像源
npm config get registry
将下包的镜像源切换为淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/
检查镜像源是否下载成功
npm config get registry
5.2nrm
通过npm包管理器,将nrm安装为全局可用的工具
npm i nrm -g
查看所有可用的镜像源
nrm ls
将下包的镜像源切换为taobao镜像
nrm use taobao
在使用命令nrm ls过程中若出现“无法加载文件,在此系统上禁止运行脚本”等问题,可以使用管理员身份去运行powershell,更改执行策略。
设置执行策略:set-executionpolicy remotesigned
查看执行策略:get-executionpolicy
(remotesigned是执行策略,详情策略情况可上网查)
6.规范的包结构
①包必须以单独的目录存在
②包的顶级目录下要必须包含package.json这个包管理配置文件
③package.json中必须包含name,version,main这三个属性,分别表示包的名字、版本号、包的入口。
7.开发包
7.1需要实现的功能
①格式化日期
②转义HTML中的特殊字符
③还原HTML中的特殊字符
7.2初始化包的基本结构
①新建itheima-tools文件夹,作为包的根目录
②在itheima-tools文件夹中,新建如下三个文件:
package.json(配置文件)
index.js(包的入口文件)
README.md(包的说明文档)
package.json
{
"name": "itheima-tools",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
README.md
index.js
//包的入口文件
const date=require('./src/dateFormat')
const escape=require('./src/htmlEscape')
//向外暴露需要的成员
module.exports={
...date,
...escape
}
在包的根目录下再建名为src的文件夹,里面装实现不同功能的js文件,进行模块化封装。
dateFormat.js:
//1.定义格式化时间的方法
function dateFormat(dtStr){
const dt=new Date(dtStr)
const y=dt.getFullYear()
const m=padZero(dt.getMonth()+1)
const d=padZero(dt.getDate())
const hh=padZero(dt.getHours())
const mm=padZero(dt.getMinutes())
const ss=padZero(dt.getSeconds())
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
//定义补零的函数
function padZero(n){
return n>9?n:'0'+n
}
module.exports={
dateFormat
}
htmlEscape.js:
//定义转义HTML的方法
function htmlEscape(htmlStr){
return htmlStr,replace(/<|>|"&/g,(match)=>{
switch(match){
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
//定义还原HTML的方法
function htmlUnEscape(str){
return str.replace(/<|>|"|&/g,(match)=>{
switch(match){
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
module.exports={
htmlEscape,
htmlUnEscape
}
8.发布包
8.1 注册npm账号
访问https://www.npmjs.com/网站,点击sign up
8.2 登录npm账号
终端输入npm login,运行npm login命令前,必须先把下包的服务器地址切换为npm的官方服务器,否则会导致发布包失败。(通过nrm use npm此命令)
8.3 把包发布到npm上
将终端切换到包的根目录之后,运行npm publish.
8.4 删除已发布的包
npm unpublish 包名 --force 命令
①只能删除72小时以内发布的包。
②删除的包,在24小时内不允许重复发布。
③尽量不要在npm上发布没有意义的包。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)