Node.js:前端就业的必备框架

发表时间: 2021-09-24 16:22

第一讲:环境准备

  1. 环境准备
  1. 下载对应你系统的Node.js版本:https://nodejs.org/en/download/
    2、选安装目录进行安装(我选择的是)


安装完成后在命令行窗口中输入node -v 输出node的版本号;

在命令行窗口中输入npm -v 输出npm的版本号;

3、环境配置

在安装node.js的时候自动配置好了npm(node package management)--》node包管理器
如何配置npm的路径;

这里的环境配置主要配置的是npm安装的全局模块所在的路径,以及缓存cache的路径,之所以要配置,是因为以后在执行类似:npm install express [-g] (后面的可选参数-g,g代表global全局安装的意思)的安装语句时,会将安装的模块安装到【C:\Users\用户名\AppData\Roaming\npm】路径中,占C盘空间。

这是我的配置路径

在node的安装路径下建立两个新的文件夹node_cache和node_global空文件夹;

创建完成后:

打开cmd命令窗口:

输入:

npm config set prefix D:\app_install\nodejs\node_global

npm config set cache D:\app_install\nodejs\node_cache

如果在这个过程中,不小心你的npm被你玩坏了,则按照以下方法进行:

删除C:\Users\{账户}\下的.npmrc文件;

如果删除了也没用,然后搜了下全电脑的.npmrc文件

发现C:\Users\{账户}\AppData\Roaming\npm 这个目录下有很多卸载之前的 npm的东西,就把这个npm整个目录都删了,就好了。

然后配置系统路径:

电脑--》右键属性--》高级系统设置--》用户变量--》修改path,然后改为路径为D:\app_install\node\node_global\node_modules

在系统变量中,添加NODE_PATH ,值为D:\app_install\node\node_global\node_modules,不要加分号;

4、测试

windows+R--》cmd-->输入node -v 显示node的版本号

输入npm -v 显示npm的版本号

测试模块安装和卸载

  1. 设置npm的中央仓库

npm config set registry
https://registry.npm.taobao.org 这是临时仓库

(2)、在终端输入npm install express -g进行安装(express是常用的 Node.js web框架模块)

安装成功之后出现如下界面:

并且查看是否安装成功;


(3)、卸载模块express,在终端输入npm uninstall express -g

卸载成功出现如下界面:

详情:
https://www.cnblogs.com/Andrea-Li/p/8781349.html

npm的包安装分为本地安装(local)、全局安装(global)两种
本地安装:
npm install xxx 安装到命令行所在目录的node_module目录,该目录不存在则自动创建。
全局安装:
npm install xxx -g 安装到 我们设置的NODE_PATH 中;

设置npm的中央仓库:

//设置淘宝源

npm config set registry
https://registry.npm.taobao.org 这是临时仓库

//设置公司的源

npm config set registry http://127.0.0.1:4873

//查看源,可以看到设置过的所有的源

npm config get registry

测试:

let express = require('express');

let app = express();

app.get('/',(req,res)=>{

res.send("hello world");

});

app.listen(3000,()=>{

console.log('在服务器端运行');

});

建立hello.js写入以上代码

使用cmd窗口,运行改代码,如果出现一下图片代表成功;

然后在浏览器地址栏中输入http://localhost:3000,出现如图效果:

代表我们的npm配置是成功的;

  1. 命令

console.log(__dirname);

模块分为三种:

内置模块

第三方模块

自定义模块

详细介绍自定义模块:

创建一个模块(一个js文件就是一个模块),这是test.js

let name = {

sayHello(){

console.log("hello,world");

}

}

module.exports=name

引用一个模块并且调用,在demo中使用导入该模块

let Module = require('./test')

console.log(Module);

Module.sayHello();

repl-->就是当前在命令行执行;

官方帮助文档:
http://nodejs.org/dist/v10.16.0/docs/api/

  1. 内置模块讲解
  2. 文件夹的操作

let fs = require("fs");

//创建文件夹

//fs.mkdir('./hello',(err,data)=>{

// console.log(err);

// console.log(data);

//});

//修改文件夹

//fs.rename('./hello','./testyyh',(err)=>{

// if(err){

// console.log("error");

// }else{

// console.log("ok");

// }

//});

//删除文件夹-->只能删除空文件夹

fs.rmdir('./testyyh',(err)=>{

if(err){

console.log('删除失败');

console.log(err);

}else{

console.log('ok');

}

二、文件的操作

const fs = require('fs');

//创建文件,覆盖写入,正常的话则是追加

//fs.writeFile('test.txt','这是我的第一个文件',(err)=>{

// if(err){

// console.log('创建失败');

// console.log(err);

// }else{

//

// console.log('创建成功!');

// }

//

//});

//读取文件,在原来的基础上追加文件

//fs.appendFile('test.txt','韩梅梅你好',(err)=>{

// console.log(err);

//});

//读取文件这是第一种方式

//fs.readFile('test.txt',(err,msg)=>{

// console.log(err);

// console.log(msg.toString("utf8"));//在转化为字符串的时候指定编码方式

//});

//在参数中指定编码方式

//fs.readFile('test.txt','utf8',(err,msg)=>{

//

// console.log(err);

// console.log(msg);

//});

//删除文件

//fs.unlink('./test.txt',(err)=>{

// console.log(err);

//});

判断是文件还是目录

const fs = require('fs');

fs.readdir('./',(err,dirs)=>{

for(let index=0;index<dirs.length;index++){

console.log(dirs[index]);

}

});

fs.stat('./',(err,stats)=>{

if(stats.isFile()){


console.log('是一个文件');

}else{

console.log('是一个目录');

}

});

  1. 有关json

什么是json ,对象,什么是json字符串,

json-->就是特定的格式;

json对象--》具备json格式的对象;

json字符串--》是具备json格式的字符串

const qs = require('querystring');

//let str = "name=wangyi&pass=123&sex=0";

//let obj = qs.parse(str,'&','=');

//console.log(obj);

//let obj = {name:'wangyi',sex:'0'};

//let str = qs.stringify(obj);

//console.log(str);

let str = "name=你好&pass=123";

let esstr = qs.escape(str);

console.log(esstr);

console.log(qs.unescape(esstr));

四、第三方插件

npmjs-->百度

npm install jquery --save

nodemailer-->可以实现邮件的发放;

const nodemailer=require('nodemailer');

let from = nodemailer.createTransport({

host:'smtp.qq.com',

port:465,

secure:true,

auth:{

user:"553285472@qq.com",

pass:"kjmrzpsavgznbfha"

}

});

let mailobj = {

from:'"Fred Foo " <553285472@qq.com>',

to:"553285472@qq.com",

subject:"我在做测试",

text:"您的验证码是:wer89r,五分钟有效"

}

from.sendMail(mailobj,(err,data)=>{

console.log(err);

console.log(data);

});

  1. 爬虫
  1. 获取目标网站 HTTP.get
  2. 分析网站内容 cheerio 可以使用jq里的选择器
  3. 获取有效信息 下载或者其他操作

const request = require('request')

const fs = require('fs')

const cheerio = require('cheerio')

request('https://www.qunar.com', function (error, response, body) {

console.log('error:', error); // 错误优先

console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received

// fs.writeFileSync('./qn.html',body,'utf8')

//获取爬取网站的页面信息

const $ = cheerio.load(body)

let imgs = []

//目标网站图片链接地址数组

// 用正则判断数组中的路径是否存在https

var _ = /(http[s]?|ftp)/;

$('img').each((i, e) => { // 遍历所有

var src = $(e).attr('src');

if (!_.test(src)) {

src = src.replace(/\/数据库/, 'https://') //因为有些图片不可下载,所以用正则判断一下

}

imgs.push(src)

})

// 下载数组里的图片

for (let index = 0; index < imgs.length; index++) {

if (imgs[index].indexOf('http') !== -1) {

request(imgs[index]).pipe(fs.createWriteStream(`./img/${index}.png`)) //这里为了省事,我就直接用下标命名了;

}

}

});

cheerio案例

const cheerio = require("cheerio");

let $=cheerio.load("<div><p>你好</p><img src='http://wwww.baidu.com'/></div>");

console.log($('img').attr('src'));//获取所有img的src

console.log($('p').text());//获取所有的p标签中的文本

  1. express开始
  1. 安装express插件
  2. 服务器的了解

服务器本身就是一台电脑,该电脑上有服务器软件,根据服务器的ip地址和端口号进行访问;

局域网:服务器通过网线连接或者无线,每台电脑上都有ip

ip:确定服务器主机的位置;

端口号:确定服务器里的某一个程序;

api接口的构成要素:

ip

port

pathname

method:get post

接受用户传递的数据

get方式:req.query

post方式:req.body,但是需要body-parser这个插件

postman接口测试

查看某个端口对应的进程:netstat -ano |findstr 端口号---》得到进程号

杀掉某个进程taskkill -pid 进程号 -f

路由:


  1. 连接数据库

安装mongodb:最后一个不选,必须建立一个data\db文件夹

注意事项:检测是否安装成功:在cmd命令行窗口敲入mongod(启动数据库命令)

查看数据库:mongo(命令行操作数据库) show dbs

安装完成后需要配置环境变量,配置到bin目录下;

mongoose 这是node操作数据库的插件

  1. 执行增删改查

let mysql = require("mysql");//引入mysql

let con = mysql.createConnection({//创建连接

host:'127.0.0.1',

user:'root',

password:'123@qwe',

database:'schooldb'


});

con.connect();//建立连接

// let sql ="select * from class";

// con.query(sql,(error,results,fields)=>{

// if(error){

// console.log('select error',error.message);

// return;

// }

// console.log(results);

// });

//添加

// let sql = "insert into class(classname,begintime,endtime,gradeid) values(?,?,?,?)";

// let appPrarams = ['A156','2019-05-06','2021-05-06',2];

// con.query(sql,appPrarams,(err,results)=>{

// if(err){

// throw err;

// }else{

// console.log("添加成功"+results);

// }

// });

//修改

// let sql = "update class set classname = ? where classid = ?";

// let modParams = ['A156',36];

// con.query(sql,modParams,(err,results)=>{

// if(err){

// console.log(err);

// }else{

// console.log(results);

// }

// });

//删除

let sql = "delete from class where classid = ?";

let delParams = 36;

con.query(sql,delParams,(err,results)=>{

if(err){

console.log(err);

}else{

console.log(results);

}

});