WEB开发之Node.js入门实践第一课

举报
tea_year 发表于 2022/03/19 22:45:44 2022/03/19
【摘要】 第一讲:环境准备1、 环境准备1、 下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进行安装(我选择的是)安装完成后在命令行窗口中输入node -v 输出node的版本号;在命令行窗口中输入npm -v 输出npm的版本号;3、环境配置在安装node.js的时候自动配置好了npm(node package management...

第一讲:环境准备

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配置是成功的;

2、 命令

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/



第2讲 内置模块讲解

1. 文件夹的操作

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('是一个目录');

    }

});


3、 有关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);

});


4、 爬虫

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(/\/{2}/, '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标签中的文本


5、 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

路由:





6、 连接数据库

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

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

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

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

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


7、 执行增删改查

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);

    }

});


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。