【尚硅谷-vue学习的前置知识】

在这里插入图片描述

一-ES6语法

链接:前端开发常用的ES6语法,建议收藏! - 掘金 (juejin.cn)

1三问

是什么:全称ECMAScript,由欧洲计算机协会ECMA制定的一种脚本语言的标准化规范

为什么:简洁统一

2变量型

var、let、const区别

  1. var作用在函数内(全局),let和const仅作用在{}内(局部)
  2. var存在变量提升现象(编译时先寻找可编译参数赋值为null,再编译具体程序),let和const没有
  3. const必须先赋值且赋值后不可再赋值

3箭头函数

写法:const 方法名 = (参数1,参数2) = >{return xxx;}

举例:

const ft = (x,y) =>{return x+y;}
			ft("i love","handsome");//调用

4解构

//数组解构
let [a,b] = [0,1,2,3];
console.log(a,b);

//对象解构
const {name,age} = {name:"蔡帅",age:"20"};
console.log(`${name}的年龄是${age}`)
  1. 数组解构按顺序获取
  2. 对象解构获取同名的变量的值

5剩余参数

let u1 = ['张三','李四','王五'];
let u2 = ['永嘉','中海寰宇','驯','品欣','中暑'] ;
let u3 = [...u1,...u2];

console.log(u3);

将剩余的参数表示为一个数组后读取。

6可选链

//定义数据
let res1 = {
    data:{
        data:{
            success:true,
            id: "919"
        },
        af:{
            ab:123
        }
    }
}
if(res1?.data?.data?.success){
    let id = res1?.data?.data?.id;
    console.log(id);
}
console.log("abc");
  • 使用 ?. 表示链上任一元素均存在。

7Set

一种数据结构,与数组类似,区别:其内元素不可重复。

Set在js的用法:

//Set
const set1 = new Set([1,2,3,4,5])

console.log(set1.add(6))//添加元素
set1.delete(1)//删除元素
console.log(set1.entries());//迭代
console.log(set1.has(6));//含有
set1.clear();//清除
console.log(set1);

8数组

//数组
let u1 = [1,2,3,4,5];
let u2 = ['apple','banala','orange'];
let u4 = [{name:'TsingHua',score1:380,score2:420},
          {name:'ShanghaiJiaoTong',score1:400,score2:400}]

let u3 = [...u1,...u2];//利用剩余余数进行拼接还可以用push
u3.push(4,5);console.log(u3);
console.log(u3.includes('apple'));//includes数组的含有

let univercity = u4.find((item,index)=>item.name = 'TsingHua');//find((item,index)=>item.xx满足条件)
let univercity1 = u4.filter((item,index)=>item.score1>379);//利用filter((item,index)=>item.满足条件)
//区别find找到第一个成员,filter找到满足条件的数组
let univercity2 = u4.map((item,index)=>{
    item.score1+=10;
    item.score2+=5;
    return item;
})//使用map生成新的数组

console.log(univercity)
console.log(univercity1)
console.log(univercity2);
  1. …余数拼接
  2. include()含有
  3. find((item,index)=>item.满足条件)寻找第一个满足条件的元素
  4. filter((item,index)=>item.满足条件)寻找满足条件的所有元素
  5. map((item,index)=>{操作 return item;})对原数组进行操作生成新数组

9字符串

let message = "时间会过去很久但爱不会变";
let res = message.startsWith("时间");//以什么开始
let res1 = message.endsWith("不会变")//以什么结束
console.log(res,res1)
//反引号实现元素代入
console.log(`从前有个人说过:${message}`)
  1. startsWith()以…开头
  2. endsWith()以…结尾
  3. 反引号,可代入元素${}实现

二-ES6模块化

1三问

是什么:前端定制的一种开发规范;

为什么:能够统一浏览器端和服务器端;

2顺序

  1. 搭建node环境

    npm init -y
    //后在package.json中配置
    "type":"module",
    
  2. 导出

    let name = "蔡帅";
    let age = 20;
    function desc(){
        console.log("是个帅哥");
    }
    //默认导出--一个js一个默认
    export default{
        name, age, desc
    }
    //统一导出
    let school = "TsingHua";
    let score = 800;
    export{school,score}
    //按需导出
    export let color = "red";
    

    分为export{}统一,export按需,export default{}默认导出

    三导出可同时存在

  3. 导入

import ES6 from './ES6.js'//默认导入
import {school,score,color} from './ES6.js'//统一/按需 导入

三-包管理器

npm是其一。类似手机的应用商店。

需要引用哪些包就通过包管理器去下载对应的包。

概念

包是组织类的一种形式。package

为避免出现同名类,可以在不同包下出现类同名。

命名

一般为域名的颠倒形势,如com.bit.cmw

常见包

三-原型和原型链

原型

函数有一个prototype属性,指向函数的原型对象,所有新定义的对象都能够共享原型对象的属性和方法。

原型链

每个实例对象通过proto指向原型对象,同时原型对象也可能拥有原型就这样一直指向null。

四-数组方法

1改变原数组的方法

  1. push()末尾添加数据

    var arr = [10, 20, 30, 40]
    arr.push(50)
    console.log(arr)
    
  2. pop()删除末尾数据

    arr.pop()
    
  3. unshirt头部添加数据

    arr.unshift(919)
    
  4. shift()头部删除数据

    arr.shift();
    
  5. reverse()翻转数据

    arr.reverse()
    
  6. 排序(正排,倒排)

    arr.sort(function(a,b){return(a-b)})//正排
    arr.sort(function(a,b){return(b-a)})//倒排
    
  7. splice截取数据

    res = arr.splice(1,2);//截取从一开始的两个数据即1,2
    res = arr.splice(1,2,72,9);//截取从一开始的两个数据即1,2并且将其赋给res,而后添加数据72,9在被截取的位置
    

2不改变原数组的方法

  1. concat合并数据进数组

    var arr = ["you","are","handsome"];
    res = arr.concat("yes")
    console.log(res)
    console.log(arr)
    
  2. 数组转字符串

    var arr = ["you",100,true,"handsome","straight"];
    res = arr.join('+');
    console.log(res)
    console.log(arr)
    
  3. slice截取数据(包前不包后)且原数组不变

    var arr = [2,"帅哥",4,10]
    res = arr.slice(1,2)
    console.log(res)
    console.log(arr)
    
  4. indexOf从左查看数据的索引

    lastIndexOf从右查看数据的索引

    var arr = [10, 20, 10, 30, 40, 50, 60]
    res = arr.indexOf(10)
    console.log(arr)
    console.log(res);
    //*************************************
    //indexOf  语法二从索引1开始查
    var arr = [10, 20, 10, 30, 40, 50, 60]
    res = arr.indexOf(30,1)
    console.log(arr)
    console.log(res);
    
    
    var arr = [10, 20, 10, 30, 40, 50, 60]
    res = arr.lastIndexOf(50)
    console.log(arr) 
    console.log(res);
    //*************************************
    //lastIndexOf 语法二
    var arr = [10, 20, 10, 30, 40, 50, 60]
    res = arr.lastIndexOf(50,4)
    console.log(arr)
    console.log(res);
    

3ES6新增方法

  1. foreach遍历数组

    //foreach遍历数组
    var arr = [10 ,20 ,30, 40, 50];
    console.log('原始数组',arr);
    var res = arr.forEach(function(item,index){
        console.log(item,'----',index,'----',arr)
    })
    
  2. 使用map构造新的函数

    模板

    res = arr.map(function(item){
    return 操作(item+5);
    })
    

    示例

    var arr = [119,115,109,65,68,68];
    res = arr.map(function(item,index){
        return item +5;
    });
    sum0 = 0;
    arr.forEach(function(item){sum0 += item})
    console.log("原成绩",sum0);
    sum1 = 0;
    res.forEach(function(item){sum1 += item})
    console.log("再静下心来也许能达到的成绩",sum1);
    
  3. filter过滤器

    如其名,满足条件的return出去,不满足的不return

    var arr = [2,10,24,20];
    res = arr.filter(function(item,index){
        return item > 8;
    })
    console.log(res)
    console.log(arr)
    
  4. every判断数组是否满足所有条件

    var arr = [2,10,24,20];
    res = arr.every(function(item){
        return item > 1;
    })
    console.log(arr,res);
    
    
  5. some判断数组是否有满足条件的元素

    //some一部分数组满足条件
    var arr = [2,10,24,20];
    res = arr.some(function(item){
       return item > 23;
    })
    console.log(res);
    
  6. find 从左往右找到满足条件的一个元素

    var arr = [2,10,24,20];
    console.log("原数组",arr)
    res = arr.find(function(item){
        return item > 11;
    })
    console.log(res)
    
  7. reduce()对数组内元素进行运算并返回一个值

    var arr = [119,115,109,65,68,68];
    res = arr.reduce(function(prev,item){
        return prev+=item;
    })
    console.log(res)
    

五-ajax

尚硅谷05.尚硅谷_AJAX-HTTP协议请求报文与响应文本结构_哔哩哔哩_bilibili

1三问

是什么:无需重新加载整个页面的情况下,能够更新部分网页的技术。(无刷新获取数据)

为什么

优点

  1. 无刷新与服务器通信
  2. 可以只更新部分页面

缺点

  1. 无浏览历史(类似浏览器的回到上一步)

  2. 无法跨域(无法访问不同域的东西)

  3. SEO爬虫(搜索引擎)不友好(无法优化),

    【响应体:服务器返还给客户端的身体

    HTTP内容:由三部分组成,行,头,体

    响应行:报文协议和版本,状态码及其状态描述

    响应头:由属性组成

    响应体:服务端返回给用户的文本信息】

2HTTP协议

HypetextTransporTProtocol超文本传输协议,规定万维网和浏览器之间通信的规则

请求报文
  • POST (方法)

    s?ze=utf-8 ()

    HTTP/1.1(版本)

  • HOST:

    Cookie:

    Content-type:

    User-Agent :

  • 空行

  • username=admin&password=admin

响应报文
  • HTTP/1.1 200 OK

  • 空行

<html>
    <head>
    </head>
    <body>
        <h1>
            you handsome!!!
        </h1>
    </body>
</html>

3express框架

  1. 引入框架

  2. 创建应用对象

  3. 创建路由规则

  4. 监听端口启动服务

    const express = require('express');
    const app = express();
    app.get('/',(req,res)=>{
    res.send("you are handsome");
    });
    app.listen(8000,()=>{
    console.log('Server started on port 8000');
    });
    

4简单示例

server.js修改

const express = require('express');
const appObj = express();

app.get('/server',(req,res)=>{
    //设置响应头,运行跨域
    res.setHeader('Access-Control-Allow-Origin','*');
    //设置响应体
    res.send("hello money");
});

app.listen(2400,()=>{
    console.log('Server started on port 2400');
})
  1. 引入

  2. 创建对象

  3. 路由规则

    跨域,设置响应体

  4. 监听

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="ajax请求" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #result{
            width: 200px;
            height: 100px;
            border:solid 1px #90b;
        }
    </style>
</head>
<body>
    <button>点击返送请求</button>
    <div id="result"></div>

    <script>
        //绑定button
        const btn = document.getElementsByTagName('button')[0];
        btn.onclick = function(){
            // console.log('test')测试连接
            //1create a object
            const xhr = new XMLHttpRequest();
            //2initiation
            xhr.open('GET','http://127.0.0.1:2400/server');
            //3send
            xhr.send();
            //4judge
            xhr.onreadystatechange = function(){
                if(xhr.readyState === 4){
                    //
                    if(xhr.status >=200 && xhr.status < 300){
                        console.log(xhr.status);
                        result.innerHTML = xhr.response;
                    }
                }
            }
        };
    </script>
</body>
</html>

html

  1. 写body一个按钮,一个文本框
  2. 写script
    1. 绑定button
    2. button点击运行的方法
      1. 创建对象
      2. 初始化XMLHttpRequest
      3. 将server.js内容发送
      4. 判断,填入数据

post一样

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="Post ajax请求" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #result{
            width: 200px;
            height: 100px;
            border: solid 1px #903;
        }
    </style>
</head>
<body>
    <div id="result"></div>

    <script>
        const result = document.getElementById("result");
        //band
        result.addEventListener("mouseover",function(){
            // console.log("test")test
            //create obj
            const xhr = new XMLHttpRequest();
            //init
            xhr.open("POST","http://127.0.0.1:2400/server");
            //send
            xhr.send();
            //judge
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4){
                    if(xhr.status >=200 & xhr.status < 300){
                        console.log(xhr.status);
                        result.innerHTML = xhr.response;
                    }
                }
            }
        })
    </script>
</body>
</html>

按下键盘响应事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>json-server</title>
    <style>
        #result{
            width: 200px;
            height: 100px;
            border: solid 1px #903;
        }
    </style>
</head>
<body>
    <div id="result"></div>

    <script>
        const result  = document.getElementById('result');
        window.onkeydown = function(){
            const xhr = new XMLHttpRequest();
            xhr.open('get','http://127.0.0.1:2400/json-server')
            xhr.send();
            xhr.onreadystatechange = function(){
                if(xhr.readyState === 4){
                    if(xhr.status >= 200 && xhr.status < 300){
                        // console.log(xhr.status);
                        let data = JSON.parse(xhr.response);
                        console.log(data)
                        result.innerHTML = data.name;
                    }
                }
            }
        }
        
    </script>
</body>
</html>

六-promise

基本使用![在这里插入图片描述](https://img-blog.csdnimg.cn/7177c671472f4760990677187db68745.png#pic_center

api

关键问题

封装

async和await

三问

是什么:一个构造函数,promise对象封装一个异步操作,获得其0或1值

为什么:

原有为回调,造成回调地狱

怎么做:

支持链式调用,

七-axios

(59条消息) b站视频-尚硅谷Web前端axios从入门到源码分析-笔记_b站尚硅谷web前端详细笔记_七里香777的博客-CSDN博客

通过编写接口调用Mock数据去测试Axios请求

1三问

是什么:Axios是一个HTTP请求库

怎么做:在浏览器和Node.js进行HTTP请求

它提供API(ApplicationProgramInterface/应用程序接口),使使用者发送各种类型的请求,并响应数据。

2简单示例

  1. get获取
  2. POST修改
  3. PUT增加
  4. DELELE删除
 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/axios/1.3.6/axios.js"></script>
</head>
<body>
    <div>
        <h2>axios基本使用</h2>
        <button> 发送GET请求 </button>
        <button> 发送POST请求 </button>
        <button> 发送 PUT 请求 </button>
        <button> 发送 DELETE 请求 </button>
    </div>

    <script>
        const btns = document.querySelectorAll('button');
        btns[0].onclick = function(){
            axios({
                method:'GET',
                url:'http://localhost:3000/',
            }).then(response=>{
                console.log(response)
            })
        },
        btns[1].onclick = function(){
            axios({
                method:'POST',
                url:'http://localhost:3000/posts',
                data:{
                    title:"今天要开始学vue",
                    name:"蔡蔚蔚"
                }
            }).then(response=>{
                console.log(response)
            })
        },
        btns[2].onclick = function(){
            axios({
                method:'PUT',
                url:'http://localhost:3000/posts/3',
                data:{
                    title:"你好帅",
                    name:"蔡蔚蔚"
                }
            }).then(response=>{
                console.log(response)
            })
        },
        btns[3].onclick = function(){
            axios({
                method:'DELETE',
                url:'http://localhost:3000/posts/4',
            }).then( response => {
                console.log(response)
            })
        }
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尚硅谷vue-cli是一个基于Vue.js的脚手架工具,用于快速搭建Vue项目的开发环境。引用中提到了使用vue-cli创建项目的步骤,具体可以参考链接https://www.npmjs.com/package/vue-cli。而引用则是给出了使用vue-cli创建项目的例子。你可以根据这个例子,使用命令"vue init webpack 项目名"来创建一个名为vueDemo2的项目。需要注意的是,项目名不能包含大写字母。 在创建项目后,你可以看到项目结构如引用所示,其中包含了一些重要的文件和文件夹,比如src文件夹是源码文件夹,components文件夹用于存放Vue组件及其相关资源,App.vue是应用的根主组件,main.js是应用的入口文件,index.html是主页面文件,package.json是应用的包配置文件等等。 总结起来,尚硅谷vue-cli是一个方便快捷的工具,可用于创建Vue项目的开发环境,并提供了一套规范的项目结构和配置文件,方便开发者进行开发和维护。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [18_尚硅谷_Vue_使用vue-cli创建项目&&19_尚硅谷_Vue_基于脚手架编写项目](https://blog.csdn.net/qq_34983808/article/details/82595004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [尚硅谷课程 从头开始使用vue-cli创建项目](https://blog.csdn.net/Cecilia58/article/details/115741401)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值