-
目录
什么是node?
基于chrome V8引擎的JavaScript运行环境。
js:运行在浏览器 开发前端程序
node:运行在服务器 开发后端程序
静态页面:数据都是写死的。HTML+CSS+JS
动态页面:数据都是动态的。HTML+CSS+JS+后端接
- 为什么要学习node?
中小型项目快速开发
全栈:前端,后端都可以做,全干
招聘时有些公司要求
node可以操作文件,可以创建服务器,可以连接数据库等等。
Node模块
node的模块大致可分为三大类:
1.内置模块(nodejs原生提供的)可以直接使用。
2.自定义模块 (需要手动的导出)
3.第三方模块(需要下载安装然后才可以使用)
一 自定义模块:
定义模块:
通过module.exports = {} 导出模块
通过exports.属性名 = value 导出模块
引入模块:
const 变量名 = require("模块路径")
let a = 10; let b = function(){ console.log("模块A中的b函数"); } exports.a = a; module.exports = { a }//导出模块 console.log(exports == module.exports);//判断两种方式是不是一样 // exports可以多次导出,但是module.exports只能导出一次,多次导出最后一次生效。 // exports和module.exports本质是相等的。 // exports是一个引用,指向的是module.exports // 如果在同一个文件中使用两种导出,给exports添加的属性和方法,也会添加在module.exports上,但是添加在module.exports上的属性和方法,不会添加在exports上。
let module = require("./a.js");//导出模块 console.log(module); //10
二 内置模块 :
-
fs内置模块: 专门用来操作文件的
const fs = require("fs");//声明fs内置模板
1.读取文件:
fs.readFire("读取文件路径","utf-8",function(err,data){
console.log(data);
})
1.引入fs内置模块
2.调用readFile方法
3.指定读取文件的路径(读取b.txt文档的内容)
4.指定读取的编码
5.回调函数 读取的时候执行的操作。
6.err 是读取失败时的错误信息
7.data 是读取的内容。
// 1.引入fs内置模块 这个模块是专门用来操作文件的
const fs = require("fs");
// readFile 方法 是读取文件中的内容
fs.readFile("./b.txt",'utf-8',function(err,data){
console.log("错误信息为"+err);
console.log("读取到的内容为"+data);
})
2.写入内容
// 引入fs内置模块
const fs = require("fs");
let data = "hello world";
// writeFile 方法是写入,覆盖式 第一个参数:写入文件的路径
// 第二个参数:写入的内容。
// 第三个参数:一个函数,写入完成后执行. err表示错误信息,如果成功执行,则err为null
fs.writeFile("./a.txt",data,function(err){
if(err){
console.log(err);
}
})
3.追加内容
//appendFile 追加
fs.appendFile("./a.txt",data,function(err){
if(err){
console.log(err);
}
})
4.创建文件
const fs = require("fs");
fs.mkdir("a",function(err){
if (err) {
//对错误进行处理
console.log("创建文件夹失败,原因:"+err);
}
console.log("创建成功");
})
5.删除文件
const fs = require("fs");
fs.unlink("./a.txt",function(error){
if (error) {
console.log("删除失败,原因:"+error);
}
console.log("删除成功!");
})
6.文件重命名
const fs = require("fs");
fs.rename("c","d",function(err){
if (err) {
console.log("重命名失败,原因:"+err);
}
console.log("重命名成功");
})//a命名为c
- 路径模块:包含了一系列处理和转换文件路径的工具集合。
为什么要使用路径模块?
当前文件在window下:E:\h5\代码\03_node_mysql_ajax\02
window 文件的分隔符是 \ / 在Linux下只有/
路径模块中的方法
const path = require("path");
//获取路径模块
1. path.extname(文件路径)
作用: 获取文件的后缀名
2.__dirname
获取当前文件所在的绝对路径
const path =require("path");
const fs = require("fs");
fs.readFile(path.join(__dirname,"a.txt"),"utf-8",function(err,data){
if (err) {
console.log("读取失败:"+err);
}else{
console.log("读取的内容:"+data);
}
})//获取文件的绝对路径并将其拼接,从而进一步操作文件
在node中,操作文件时需要使用绝对路径,引入模块时使用相对路径
node中,相对路径不是按照当前文件来执行的,而是按照命令行所在的目录下。
3.path.join()
作用:拼接路径
静态资源:HTML CSS 图片
const path = require("path");
let filePath = path.join("static","img","heixin001","kenghuo002");
// 输出结果:static\img\heixin001\kenghuo002
// 如果是Linux 输出结果:static/img/heixin001/kenghuo002
console.log(filePath);
三 第三方模块
什么是第三方模块?
别人写好的,具有特定功能的模块,就是第三方模块,我们需要下载才可以使用。
获取第三方模块
1. npmjs.com
存储和分发第三方模块的仓库
使用npm命令行下载第三方模块
npm是随node一起安装的包管理工具,只要安装了node,就可以使用npm。
npm的作用:
1.允许用户从npm服务器下载别人写好的第三方模块到本地使用。
2.允许用户从npm服务器下载别人写好的命令行程序到本地使用。
3.允许用户上传自己写好的第三方模块和命令行程序到npm服务器上。
npm 下载模块
npm install 模块名 可以简写为 npm i 模块名
执行以上命令后,会在当前命令行所在的目录下多一个node_moduls文件夹,下载好的第三方模块就存放在这个文件夹下面。
npm 卸载模块
npm uninstall 模块名
2.nodemon
nodemon是一个命令行工具,用以辅助项目开发,每次修改文件都会自动重新执行该文件,不需要再手动执行。
全局安装与本地安装
本地安装:把模块和命令行按照到当前文件夹下,只能在当前目录下使用。
第三方包/模块 是安装在本地的
全局安装:安装完成后,在命令行中任意目录都可以使用。
全局安装: 在安装模块时,在后面添加 -g
npm i 模块名 -g
命令行工具安装在全局,以便随时随地调用。
解决方法:
1.window+r 输入powershell
2.执行:set-ExecutionPolicy RemoteSigned
3.使用nrm 源管理器。
node的服务器是在国外的,下载是非常慢的。
如果想要下载的快,可以使用国内的镜像库。
安装:
npm i nrm -g
查看可用的源
nrm ls
切换源
nrm use 地址名称
错误解决方法:
1.根据错误提示,找到cli.js,一般是
C:\Users\Administrator\AppData\Roaming\npm\node_modules\nrm\cli.js
2.将第17行的数据修改为以下代码:
const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
4.cnpm
淘宝的镜像源下载命令行工具
5.yarn
yarn也是一个包资源管理器,与npm的功能是一样的。 不过yarn的下载速度更快。
目标:干掉npm。
下载使用:
用npm去下载
npm i yarn -g
初始化项目:创建package.json
yarn init
yarn init -y 快速生成
安装单个依赖
yarn add 模块名
安装项目中所有的依赖
yarn install
卸载依赖
yarn remove 模块名
node_modules的问题
如果我们在项目中下载了很多第三方模块,那么别人拷贝你的项目时就会特别的慢。
解决方法:package.json
每个项目的根目录下,一般都会有一个package.json文件,定义了这个项目需要哪些模块,以及该项目的配置信息(项目名,作者,版本,许可证等)
创建package.json文件
npm init 需要填写配置信息。如果不想填写,直接一路回车。
npm init -y 快速生成
package-lock.json 用于锁定版本,防止多人开发时,使用不同的第三方包的版本。
{
"name": "demo", //项目名称
"version": "1.0.0", //项目版本
"description": "", //简介
"main": "index.js", //入口文件
//脚本
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "", //作者
"license": "ISC" //开源许可证
}
package.json重要字段
dependencies 生产环境依赖模块
devDependencies 开发环境依赖模块
scripts:脚本
一些第三方类库只需要在开发时使用,不需要在生产环境上部署,则可以将它安装在开发环境依赖模块下。
npm install 模块名 -D 开发环境
npm install 模块名 -S 生成环境
script 脚本设置:
"scripts": {
"key":"value"
}//key 启动的命令名 value 指定的命令
运行:
npm run key