第五周知识

79 阅读6分钟

error对象:方便程序员更快的找到自己的错误,以提高效率

1. 浏览器自带4大错误提示:

        1、语法错误:SyntaxError - 一定是你的符号/语法写错

2、引用错误:ReferenceError - 没有创建就去使用了

3、类型错误:TypeError - 不是你的方法,你却去使用了

4、范围错误:RangeError - 只有num.toFixed(d);会出现//d取值范围:0~100之间

        5、自定义错误:throw new Error("自定义错误消息") --他是一个我们自定义的一个报错信息。

 

2. 错误处理:只要出现错误,代码就会自动停止执行。(把错误变成提示,让后续代码继续执行)

         语法:

try{

放入可能出错的代码

}catch(err){

发生错误后才会执行的代码(err保存的是报错的信息)

}

            

          可以使用分支技术代替try...catch...(大多数是使用分支技术处理错误)

3. ES5 出现严格模式

        语法:"use strict" - 写在任何一个作用域的顶部都可以

        作用:禁止了全局污染;会将静默失败悄悄升级为报错,导致程序停止运行

 

匿名函数: 自调和回调

1、自调函数语法:(function(){操作})()

   作用:会释放所有没有用的变量;

   建议:把所用的代码使用自调函数包起来。

2、回调函数:为了简化为箭头函数(在箭头函数中注意this的指向)

     

node.js:不是js,但是与js的使用十分相似。****

  优点:速度快。(会把数据转化为字符串。字符串的传输速度最快)

1. 使用步骤:

1、安装node.js运行环境

2、检查是否安装成功命令-- 打开cmd输入:node -v

3、运行node.js的三种运行模式

(1)交互模式

            打开cmd输入:node回车,你就可以开始敲你的“js”代码

(2)文件模式

            先写好js文件,然后打开cmd输入:node 文件的绝对路径

(3)编译器安装插件

    打开编译器中的扩展应用,找到相应的node.js插件进行安装

 

2. 模块

(1)模块的分类

     官方模块:常用的6个模块;

             1、Global模块:不需要引入的,可以直接使用

(1)五个预定义变量,可以直接使用了

1、__filename - 获取到当前文件完整的绝对路径

2、__dirname - 获取当前文件绝对路径,不包含文件的名字

3、exports - 空对象,可以用于公开暴露自己的成员

4、require - 函数,可以用于导入其他模块

5、module - 指代当前模块本身,甚至包含着以上4个操作

 

2、querystring模块:解析查询字符串,使其变成一个对象.(前端传到后端的消息-请求消息)

需要引入:let qs = require('querystring');

作用:解析url中查询字符串部分的功能

let obj=qs.parse("查询字符串");

想要获得前端传来的每一个部分:obj.键名;

3、url模块

需要引入:let url = require('url');

作用:解析url中各个部分的功能

let objUrl=url.parse("完整的url",true);

 

1、查询字符串/请求消息:objUrl.query.键名

2、路由:objUrl.pathname

 

4、Buffer模块:缓冲区,可以将数据变成一个16禁止的数字.

 

5、fs模块

需要引入:let  fs = require('fs');

读取文件:

fs.readFile(文件路径,(err,buf)=>{//buf代表的是读取到的内容

                                操作

})

 

写入文件:

fs.writeFile(文件路径,"新内容"/buf,(err)=>{

                                操作

})//会替换掉原来的东西

 

追加文件:

fs.appendFile(文件路径,"新内容"/buf,(err)=>{

操作 })

 

             注意:写入文件和追加文件时,当文件路径不对时会创建文件

 

6、http模块--搭建服务器的关键模块

               创建文件服务系统步骤:

let http=require("http");

let url=require("url");

let fs=require("fs");

let app=http.createServer();

app.listen(80);

app.on("request",(req,res)=>{

         let objUrl=url.parse(req.url,true);

          let router=objUrl.pathname;

              if(router=="/"||router=="/index.html"){

              fs.readFile(__dirname+"/public/html/index.html",(err,buf)=>{

          res.end(buf)

})

}

else if(router.match(/html/)!=null){

            fs.readFile(__dirname+/public/html${router},(err,buf)=>{

        res.end(buf)

})

}

else if(router.match(/css|js|jpg|png|gif|woff|woff2|ttf2/)!=null){

            fs.readFile(__dirname+/public${router},(err,buf)=>{

        res.end(buf)

})

}

})

 

 

     第三方模块:使用NPM 下载第三方模块

        常见语法:

              1、下载:npm i 包名

      2、删除:npm un 包名

      3、更新:npm up 包名

 

       mongoose模块:操作数据库的模块

      用node.js操作mongoose模块步骤:

1、引入:let mongoose=require("mongoose");

2、连接数据库:mongoose.connect("mongodb://127.0.0.1/数据库名");

3、创建出一个新的数据表的同时,设置数据类型的控制,防止用户乱输

var UserSchema=mongoose.Schema({

                           键名:数据类型

})//根据前端的数据创建相应的数据类型和键名

letUser=mongoose.model("User",UserSchema,"user")//创建表

 

 

4、增:

1、创建要插入的对象

let  x=new User({键值对})

2、创建好的对象插入到数据表中

x.save().then(()=>{操作})

 

5、删:

User.deleteOne/deleteMany({条件}).then(()=>{操作})

6、改:

User.updateOne/updateMany({条件},{新内容).then(()=>{操作})

7、查:

User.find({条件}).then((rs)=>{rs操作})//rs表示查询到的内容

         

            注意:在增删改查中条件都是键值对的形式出现

 

     

     自定义模块:分为两大类

1、文件模块:创建xx.js去公开了需要公开的内容,主模块引入,就必须写为require("./模块路径");

 

2、目录模块文件夹中只能放一个文件:3种(不常用)

1、比如创建m1的文件夹,在其中创建必须名为index.js的文件,去公开了需要公开的内容,主模块引入,就必须写为require("./m1");

2、比如创建m2的文件夹,在其中创建suibian.js的文件,去公开了需要公开的内容,主模块引入,就必须写为require("./m2");

必须在创建一个必须名package.json的配置文件,写入:{"main":"suibian.js"}

3、创建一个文件夹必须名为node_modules,在在其中创建创建m3的文件夹,在其中创建index.js的文件,去公开了需要公开的内容,主模块引入,就必须写为require("m3");

 

(2)模块的定义

      概念:具有独立功能的代码段

    

                                 

 

数据库:****

数据库的使用:

1. 启动数据库服务器 在数据库使用期间不能关闭服务器端

         在bin文件夹中运行cmd命令:.\mongod.exe --dbpath=数据库保存的文件的绝对路径

2. 在相同文件夹下运行客户端 前提:保证服务器端是开启的

     命令:.\mongo.exe

 

操作数据库的命令:

1、查询所有数据库:show dbs

2、创建/切割数据库:没有就创建,有了就切换:use 数据库名称

3、查看当前选中的数据库:db

4、创建数据表:db.createCollection("表名");- 没用限制

    操作数据表的命令:

 1、创建数据表:db.createCollection("表名",{size:5242880,capped:true,max:5000}); - 最大存储空间为5mb,最多存储5000个,意味着这个数据表做了限制,不推荐

2、查看目前所有的数据表:db.getCollectionNames();

 

操作数据的命令:

1、增:db.表名.save({键值对,...}) - 一次只能插入一条数据

     db.表名.save([{},{},{},{},....]) - 一次插入多条数据           d

2、删:db.表名.remove({}) - 删除数据表中所有的数据

   db.表名.remove({条件}) - 条件依然也是键值对

3、改:db.表名.update({条件},{$set:{新内容}})- 条件和内容依然也是键值对

4、查:db.表名.find(); - 找所有

db.表名.find({条件}); - 条件依然也是键值对

db.表名.find({},{name:1,pwd:1}); - 找到所有的数据,但是只返回name和pwd

db.表名.find().sort({键名:1}); - 按键名升序排列!

db.表名.find({键名:{$gte:限制条件}})

db.表名.find({键名:正则}) - 甚至可以用正则(模糊查询)

db.表名.find().skip(n).limit(m) - 跳过前n条,在拿m条数据

db.表名.find().count() - 获取到此表有多少条数据

       

       建议:根据实际要求选择相应的命令