nodejs知识点总结(持续更新)

node是什么?:

    node是基于Chrome v8引擎 开发的一个版本工具

node可以做什么?

    1.可以使用js开发后端代码;

    2.它可以让vue基于node运行;

node的优势?

    是非阻塞式的一个代码开发;

什么是package.json?

    package.json一般存在于项目的根目录当中,

    里面可以配置:

    项目名称(name),版本号(version),项目描述(description),

    启动项目的核心文件(main),配置好的npm语句指令(scripts),

    项目的作者(author),项目配置的依赖包(dependencies);

如何初始化package.json文件:

    可以使用电脑自带的命令行工具:

        win+R 在运行里面输入 cmd  再切换到自己的项目文件的根目录下;

        使用npm init 或者 npm init -y (直接生成package.json文件);

如何安装依赖包:

    切换到项目的根目录:

        npm install 依赖包名称 (注意,默认安装的是当前依赖包的最新版本);

        如果要安装指定版本可以使用:

        npm install 依赖包名称@版本号 (例如npm install mysql@2.18.1);

node的require()引入规则;

    1. require('模块名'):

        首先去package.json文件的dependencies里面去找有没有配置这个依赖包;

        如果没有配置,会报错;如果配置了,但是实际node_modules并没有安装

        这个模块,也会报错(cannot ...);

    2.require('路径名'):

        这个方式遵循,路径(绝对路径/相对路径)的引入规则;

如何使用node的内置模块http创建web服务器:

    1.引入http模块;

    const http = require('http');

    2.使用http模块的创建服务方法;

    const server = http.createServer();

    3.监听外部的请求

    server.on('request', (req,res) => {

        每一个请求,都会先经过这个回调函数;

        3.1 响应utf-8格式;

        res.setHeader('content-type','text/html;charset=utf-8');

        3.2 返回参数

        res.end(123)

        res.end("123")

        返回对象注意; 要返回JSON字符串

        res.end(JSON.stringify({name: '666'}))

    })

    4.启动web服务

    server.listen(端口号,启动的地址,启动后的回调函数)

    启动的地址:

        必须是本地的地址;也就是在系统中的网络,找到状态,有一个IPV4 地址;

        这个Ipv4地址,是在本地局域网中路由器分配的IP地址:

        如果不填,默认使用localhost和127.0.0.1地址启动;

        因为在网络开发中localhost和127.0.0.1都默认的是本地IP启动;

    server.listen(8080,127.0.0.1,()=>{

        console.log('服务启动成功,地址是http://127.0.0.1:8080/或者是http://localhost:8080/');

    })

如何使用外部模块mysql启动:

    1. 在项目的根目录的命令行 npm install mysql;

    2. 引入mysql模块

    const mysql = require('mysql');

    3. 创建mysql连接

    const con = mysql.createConnection({

        host: '数据库地址',

        database: '数据库名称',

        user: '数据库用户名',

        password: '数据库密码',

        port: '数据库的端口号默认是3306(选填)'

    })

    4.启动mysql连接

    con.connect((err) => {

        如果err有值 则证明数据库连接失败

        if(err){

            console.log('数据库连接失败');

        }else{

            console.log('数据库连接成功');

        }

    })

*/

 什么是跨域?

只有浏览器存在跨域?浏览器的跨域形成的原因,

是因为浏览器的信息,是暴漏在客户端(浏览器)上,

这样的情况非常不安全,有了同源策略,

IP,端口,浏览器;

JSOP解决跨域的原理:

        前端通过动态创建script标签,通过src属性,进行引入

        相应的接口,但是这个时候虽然解决了跨域,并不能拿到真实的数据,

        还需要通过传递参数,后端配置返回参数;

        前端通过window['参数']();的方式获得数据,

        但是注意:

            任何跨域,只要后端不同意,都没办法完成

    后端解决跨域:

        后端通过设置请求IP的白名单,来设置哪个IP可以访问服务器;

        在IP白名单之内的都可以访问服务器;

什么是get请求:

        get请求的参数都会拼接在地址栏后方

        如: 地址:端口/路径?参数

        get会把参数等敏感信息,暴漏在地址栏,

        所以不是很安全;并且地址栏的长度是由限制的;

        大概能够存储255左右字;

nodejs如何通过http的内置模块获取到前端发送的参数:

        get请求:

            前端通过ajax将参数拼接在路径上;

            后端通过requert的req.url拿到,

            路径后的参数信息,做出数据处理;

            根据不同的路径,处理不同的函数;

http和mysql如何连接在一起:

        因为每次get请求,都会访问服务端;

        然后前端有注册需求;

        那么就可以使用路径?参数的形式,发给服务端

        服务端接收到参数,再去处理参数

        处理的过程:

            1. 拿到数据

            2. 连接数据库

            3. 查询数据

            4. 插入数据

通过不同的接口访问不同的后端方法:

 什么是接口?

            接口就是,前端和后端交流的一种标准;

            比如前端要注册一个账号;那么前端通过什么将前端的用户信息

            发送给后端?通过接口!

            接口就是ajax的请求路径,路径不同,接口不同;

            后端根据前端请求的路径,处理不同的方法;

            比如:

                地址/register?参数  这个是注册接口

                地址/login?参数     这个是登录接口

                地址/getlist?参数   这个是获取列表接口

什么express:

        Express是一个基于http内置模块升级的版的一个模块;

        他省去了http需要处理参数的一些操作,

        让API开发起来更为方便;

experss的用法:

        需要在项目的根目录安装模块

            npm install express;

        入口的写法:

            app.get/post();

        get请求的参数在req.query里面,可以找到;

        参数的形式是一个对象类别的数据;

什么是express中间件:

            use 可以理解为,在进入入口之前,

            对前端发送的任何的参数,进行一个

            数据的处理,目的是让入口函数里面,

            能够通过参数,更简便的获取到前端发送的参数

cors跨域:

            在http模块中,需要通过设置IP白名单的方式,

            相应200成功请求的方式解决跨域问题,

            在express中间件可以直接引入cors模块解决跨域

nodemon:

            解决的问题:

                它可以监听文件的变化,并且在文件变化的之后

                重启server服务,保证server服务的一直处于运行状态;

                不需要更改一次就手动重启一次

Module.exports:

            变量暴漏:

                因为在外部的js中定义的任何方法,

                使用require引入时候,如果没有暴漏出来,

                require是找不到里面定义的任何东西的;

                因为在NodeJs里面不存在BOM,所以不存在window;

                因此需要使用Module.exports需要将可用的变量/方法暴漏在外,

                让require可以找到;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值