美文网首页
前端基础

前端基础

作者: 放开好人 | 来源:发表于2021-01-31 17:20 被阅读0次

前言:大概包含六部分
VSCode使用、ES6、Node.js、Vue、Babel、Webpack
ES6类似于Java中的JDK版本7811等等,6也只是个新版本。

一、各部分简单介绍

1. ES6

ECMAScript6.0是浏览器脚本语言的规范,而各种我们熟知的js语言如JavaScript是规范的具体实现。

2.Node.js

Node.js是一个基于ChromeV8引擎的JavaScript运行环境。
官网:http://nodejs.cn/api/
该商城项目主要关注npm功能即可。
NPM是随同Node.js一起安装的包管理工具,javaScript-NPM等同java-maven
下载安装:
a. 官网下载安装node.js,并使用node -v检查版本
b. 配置npm使用淘宝镜像
npm config set registry http://registry.npm.taobao.org/

3. Vue

类似于后端的Spring

4. Babel

Babel是一个JavaScript编译器,我们可以使用es的最新语法编程,而不用担心浏览器兼容问题,它会自动转化为浏览器兼容的代码。

5. Webpack

自动化项目构建工具,gulp也是同类产品。

二、VSCode使用

插件:
open in browser 右键选择浏览器直接打开页面。
live server 修改文件保存后,页面自动刷新。右键:open with live server
Vue 2 Snippets和VueHelper。vue的代码提示插件,安装其中一个就行。
Vetur 。方便代码编写等。

三、ES6新特性

  1. let严格的作用域
    报错:1、let.html:18 Uncaught ReferenceError: b is not defined
    <script>
        //var声明的变量往往会越作用域
        //let声明的变量有严格局部作用域
        {
            var a = 1;
            let b =2;
        }
        console.log(a);//后台可以打印
        console.log(b);//后台报错
    </script>
  1. let只能被声明一次
    报错:Uncaught SyntaxError: Identifier 'b' has already been declared
  2. var存在变量提升,let不会
    报错:Uncaught ReferenceError: Cannot access 'b' before
//var会变量提升,let不会
        console.log(a);//let.html:29 undefined
        var a = 1;
        console.log(b);// Uncaught ReferenceError: Cannot access 'b' before initialization
        let b = 2;
  1. const声明常量,不运行被修改
    报错:Uncaught TypeError: Assignment to constant variable.

5. 解构表达式

a. 数组解构

let arr = [1,2,3];
        // let a = arr[0];
        // let b = arr[1];
        // let c = arr[2];
        let [a,b,c]=arr;
        console.log(a,b,c);

b. 对象解构

        const person = {
            name: "fangk",
            age: 18,
            language: ['java','js','css']
        }

        // const name = person.name;
        // const age = person.age;
        // const language = person.language;
        //大括号内为需要解构的参数,等号后面为需要解构的对象,可选
        const{name,age,language} = person;//相当于上面的这些操作
        //name:abc 为将解构出的name值赋给abc
        const{name:aa,age:bb} = person;//此处若不赋值给aa,则相当于再次定义const name=person.name。会报重复定义的错
        console.log(name,age,aa,bb);//打印fangk 18 fangk 18

6. 字符串扩展

a. 几个新的API

let str = "hello.vue";
        console.log(str.startsWith("hell"));//true,是否以XXX开头
        console.log(str.endsWith("ue"));//true,是否以XXX结尾
        console.log(str.includes("."));//true,是否包含XXX

b. 字符串模板

        let s = `
        <div>asdad
            <div\>
        `;
        console.log(s);
        //字符串插入变量和表达式,变量名卸载${}中,${}中可以放入JavaScript表达式
        function fun(){
            return "这是一个函数";
        }
        const name = "fangk";
        const age = 18;
        let info = `我是${name},今年${age+10}岁,我想说:${fun()}`;
        console.log(info);

7.函数优化

a. 参数默认值

        //在es6之前,我们无法给一个函数参数设置默认值,只能采用变通写法;
        function add (a,b){
            //判断b是否为空,为空就给默认值
            b = b || 1;
            return a+b;
        }
        console.log(add(10));
        //es6后可以这么写,直接给参数写上默认值,没传就会自动使用默认值
        function add6(a,b=1){
            return a+b;
        }
        console.log(add6(20));

b. 不定参数

        function fun(...values){
            console.log(values);
        }
        fun(1,2);
        fun(1,2,3,4);

c. 箭头函数

        //以前声明一个方法
        var print = function(obj){
            console.log(obj);
        }
        //现在声明一个方法
        var printNow = obj => console.log(obj);
        console.log(print("old"),printNow("new"));
        //多个参数,多行代码
        var sum = function(a,b){
            c = a+b;
            return c+a;
        }
        var sumnew = (a,b) =>{
            c=a+b;
            return c+a;}
        console.log(sum(1,2),sumnew(2,3));
        //无参数
        var wucan = function(){
            console.log("我是无参函数");
        }
        var wucannew = () => console.log("我是无参函数");
        wucannew();
        //箭头函数加解构表达式
        const person = {
            name: "fangk",age: 18
        };
        var jiegou = ({name}) => console.log(name);
        jiegou(person);

8. 对象优化

a. 扩展API

var person = {
            name: "fangk",
            age: 18,
            language: ['java', 'js', 'python']
        };
        console.log(Object.keys(person));//获取对象的所有key形成的数组
        console.log(Object.values(person));//获取对象的所有value形成的数组
        console.log(Object.entries(person));//获取对象所有key和value形成的二维数组

        var targer = {a:1};
        var sources = {b:2};
        var sources2 = {c:3};
        Object.assign(targer,sources,sources2);//将sources和2合并到targer中
        console.log(targer);

b. 声明对象简写

        const age =23;
        const name = "fangk";
        //传统
        const person1 = {age:age,name:name};
        //当变量名与对象属性名一致时,可简写
        const person2 = {age,name};
        console.log(person1,person2);

c. 对象的函数属性简写

        let person3 = {
            name: "fangk",
            //以前
            eat: function(food){
                console.log(this.name+"在吃"+food);
            },
            //箭头函数this不能使用,必须使用对象.属性
            eat1: food => console.log(person3.name+"在吃"+food),
            eat(food){
                console.log(this.name+"在吃"+food);
            }
        }

d. 对象扩展运算符
(...)用于取出参数对象所有可遍历属性然后拷贝到当前对象

        //深拷贝
        let person4 = {name:"fangk",age:18};
        let copyp4 = {...person4};
        console.log(copyp4);
        //合并对象
        let age1 = {age:20,sex:"男"};
        let name1 = {name:"ff",aihao:"学习"};
        let he = {...age1,...name1};
        console.log(he);

9.map和reduce

a. map():接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。

        let arr = ['1','5','-5'];

        arr = arr.map((item)=>{
            return item*2;
        });
        arr = arr.map(item => item*2);//简写
        console.log(arr);

b. reduce():为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素。

        //arr.reduce(callback,[initialValue])
        let result = arr.reduce((a,b)=>{
            console.log("上一次处理后"+a);
            console.log("当前正在处理"+b);
            return a+b;
        });
        console.log(result);

10.Promise

代码中有示例,后续项目中实践。

11.模块化

概念:模块化就是把代码进行拆分,方便重复利用。类似java中的导包,要使用一个包,必须先导包。而js中没有包的概念,换来的是模块。
模块功能主要由两个命令构成:export和import
export命令用于规定模块的对外接口。
import命令用于导入其他模块提供的功能。

相关文章

  • 前端基础进阶系列

    前端基础进阶(一):内存空间详细图解前端基础进阶(二):执行上下文详细图解前端基础进阶(三):变量对象详解前端基础...

  • 前端入门系列

    前端HTML & CSS 基础入门(1)初识 前端HTML & CSS 基础入门(2)段落及文本 前端HTML &...

  • 二、flask开发基础与入门

    一、web开发基础 1、前端知识 前端开发基础: HTML CSS JavaScript 前端常用的库与框架: b...

  • 【350页】前端校招面试题及解析大全

    前言 前端校招面试题主要内容包括html,css,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据...

  • web前端入门基础

    web前端基础笔记 学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言。下面我们就来了...

  • HTML基础学习笔记

    原 Blog 链接:HTML基础学习笔记 自学 html 基础笔记 Web 前端简单介绍 web 前端包含: pc...

  • 学习Vue框架之前,要有JavaScript的知识储备

    前端三剑客知识储备(有关前端的专题) ☑ HTML基础知识 ☑ CSS基础知识 ☑ JavaScript5基础知识...

  • 无标题文章

    #Web前端 - web前端是什么 - 定义 - 职责 - web前端基础知识和学习路线 - web前端学习的...

  • Web前端

    Web前端 web前端是什么- 定义 职责 web前端基础知识和学习路线 web前端学习的资源 1.Web前端是...

  • 学习前端需要掌握什么基础?

    学习前端需要掌握什么基础?前端基础包含HTML、CSS层叠样式表、JavaScript、HTML5、CSS3、jQ...

网友评论

      本文标题:前端基础

      本文链接:https://www.haomeiwen.com/subject/klhktltx.html