JS第五周总结

橙色 漏写

Day1

一、window对象

1、代替了ES中的global,充当全局对象–保存全局变量和全局函数

2、自己也带有一些属性和方法,指代当前窗口本身

网页打开新链接的方式:
1、替换当前页面,可以后退
    HTML: <a href="url">内容</a>
    JS: open("url","_self");
2、替换当前页面,不能后退
    JS: location.replace("新url")

3、新窗口打开,可以打开多个
    HTML: <a href="url" target="_blank">内容</a>
    JS: open("url","_blank");
    
4、新窗口打开,只能打开一个
    HTML: <a href="url" target="自定义name">内容</a>
    JS: open("url","自定义的name");

扩展a标签的作用:

1、跳转
2、锚点
3、下载: <a href="xx.exe/zip/rar/7z">内容</a>
4、打开: <a href="xx.图片后缀/txt">内容</a>
5、直接书写js: <a href="javascript:js代码;">内容</a>

3、window属性:

获取浏览器的完整大小: outerWidth/outerHeight;

获取浏览器的文档显示区域的大小: innerWidth/innerHeight

获取屏幕的完整大小: screen.width/height;

方法:

1、打开窗口: var newWindow=open("url","自定义的name","width=,height=,left=,top="); ​

2、关闭窗口: window/newW.close(); ​

3、修改窗口的大小: newW.resizeTo(new宽,new高);

4、修改窗口的位置:newW.moveTo(x,y)

Day2

一、BOM的其他对象

1.1 history对象

前进:history.go(n);

后退:history.go(-n);

刷新:history.go(0);

1.2 navigator对象

属性: navigator.userAgent;得到浏览器以及版本号

1.3 location对象

  1. url网址组成

    协议名: https、http、ftp、ws(直播) ...
    域名/主机号
    端口号:默认端口可以省略不写,https默认端口为443,http默认端口为80
    文件的相对路径/路由
    查询字符串/请求消息
    协议名:location.protocal
    域名:location.hostname
    端口号:location.port
    路由: location.pathname
    请求消息:location.search

1.4 event对象

  1. 在HTML页面上绑定事件

    <elem on事件名="js语句"></elem>
    
  2. 在js中使用元素的事件处理函数属性:

    elem.on事件名=function(){
        操作
    }
    
  3. 使用专门的事件API绑定事件

    主流:elem.addEventListener("事件名",callback);
    老IE: elem.attachEvent("on事件名",callback);
    

2 事件周期

  • 主流

    1、捕获阶段
    2、目标元素优先触发
    3、冒泡触发
  • 老IE:没有捕获阶段

3 获取事件对象event

  • 兼容: var e=event;

  • 阻止冒泡

    兼容: e.cancelBubble=true;
    ​

    3、事件委托

    兼容: e.srcElement;

    4、阻止浏览器的默认行为

    兼容: e.returnValue=false;
    

    5、获取键盘的键码

    e.keyCode;

Day3

一、Node.js概述

node.js就是一个运行环境而已,不再需要浏览器自带的js解释器了,nodejs的语法和javascript的语法非常相似

二、Node.js如何运行

1、交互模式 - 临时测试
    打开cmd输入,node回车
    退出:ctrl+c
​
2、脚本/文件模式 - 正式开发中
    1、创建xx.js:里面书写自己的代码
    2、打开cmd输入:node 文件绝对路径
​
3、直接在开发工具中运行

三、Node.js知识

5.1 js 和 node的区别

    相同点:都可以使用一切的ECMAScript的一切的API和语法都可以放心大胆的使用,服务器端根本不存在任何浏览器,所以一切语法放心用
    不同点:1、javascript:DOM+BOM - 做一切特效
          2、Node.js:虽然不支持DOM+BOM,但是他却提供了10万个以上+的模块

5.2模块

    1. 公开/暴露自己的成员:

      exports.属性名=值
      exports.方法名=function(){}
      module.exports={...}

      2、引入其他模块:

      var xxx=require("./文件名"); 

    笔试题:exports和module.exports有什么区别?

    都是用于公开暴露自己的成员的 但是:exports=写法是错误的,为什么? node.js的底层有一句话:exports=module.exports;}

    其实真正做公开功能的是module.exports

    如果你使用 exports=覆盖了module.exports,不再具有公开功能

5.3 模块的分类

1. 官方模块

某的模块需要引入,某的模块不用引入

  1. Globals模块:

    __dirname   当前文件夹的完整绝对路径
    __filename  当前文件完整的绝对路径
    exports     一个空{},公开和暴露自己的成员
    module      指代当前模块本身,包含了其他4个变量
    require()   一个函数,引入其他模块的
    定时器
    控制台
  2. Querystring模块:查询字符串

    需要引入:let qs=require('querystring');
    提供了解析url的查询字符串部分的功能
    var obj=qs.parse("查询字符串部分");
    
  3. Url模块:网址模块

    需要引入: let url = require('url');
    var objUrl=url.parse("完整的url网址",true);
    ​
  4. Buffer模块: ​

  5. fs模块:

    需要引入: let fs = require('fs');
    异步读取文件:
    fs.readFile("文件路径",(err,buf)= >{
    })
    异步写入文件:
    fs.writeFile("绝对路径|文件路径","写入的新内容",()=>{
    })
    异步追加文件:
    fs.appendFile("绝对路径|文件路径","追加的新内容",()=>{
    })
    ​
  6. http模块

    固定步骤:
    //引入http、url、fs官方模块
    var http=require("http");
    var url=require("url");
    var fs=require("fs");
    //创建服务器
    var app=http.createServer();
    //为服务器设置监听的端口号
    app.listen(80);//http默认端口为80,https默认端口为443
    //为服务器绑定请求事件 - 请求?前端发到后端的,
    app.on("request",(req,res)=>{
        //req - request:保存请求对象,请求对象,前端->后端,提供了一个属性req.url,解析此属性拿到自己需要的部分(路由|请求消息)
        var objUrl=url.parse(req.url,true);
        //得到前端传来路由部分
        var router=objUrl.pathname;
        //判断前端的路由是什么,给他返回不同的页面
        if(router=="/" || router=="/index.html"){
            //res - response:保存响应对象,后端->前端,提供了一个方法res.end(你想要响应的东西)
            fs.readFile("./public/index.html",(err,buf)=>{
                res.end(buf);
            })
        }else if(router.match(/html/)!=null){
            console.log(router);
            fs.readFile("./public"+router,(err,buf)=>{
                res.end(buf);
            })
        }else if(router.match(/css|js|jpg|png|gif|woff/)!=null){
            fs.readFile("./public"+router,(err,buf)=>{
                res.end(buf);
            })
        }
    })
    

2. 第三方模块

npm下载

3. 自定义模块

  1. 文件模块

  2. 目录模块

    1、创建名为m1的文件夹,在其中创建index.js的文件,去需要公开的内容,主模块想要引入必须写为require("./文件夹的名字")
    2、创建名为m2的文件夹,在其中创建xx.js的文件,去需要公开的内容,主模块想要引入必须写为require("./文件夹的名字"),但是需要在m2文件夹中,在创建一个必须package.json的配置文件,写{"main":"xx.js"}
    3、创建一个必须名为node_modules的文件夹,在其中创建名为m3的文件夹,在其中创建index/xx.js的文件,去需要公开的内容,主模块想要引入必须写为require("文件夹的名字")
    
    

Day4

一、数据

数据库产品 - 放着很多很多和网站相关的数据
    关系型数据库 - 以表格为主
        Oracle - Oracle
        MySQL - Oracle
        sql server
    非关系型数据库 - 没有固定的格式
        mongoDB,以JSON数据格式为主
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值