zoukankan      html  css  js  c++  java
  • 开课吧全栈视频随笔

    1、解构赋值

      let {a,b,c}={a:1,b:2,c:3}  

        对象这种会按照对应的属性名称(a、b、c)去右边的对象里面寻找对应的值。左边写成{c,b,a}也不影响解构。

        但是 let {a,b,c} = { e:4, f:5, g:6 }这样的就不行,最后abc都是undefined,必须是相对应的属性。

      let [a,b,c] = [7,8,9] 

        这种数组的是按照位置来解构的,最后是a=7,b=8,c=9

      总结:

        1、对象是按照对应的变量名去解构的,只要左右对应的变量名一样。顺序无所谓。

        2、数组是按照一一对应的位置来解构的。

        3、左右两边得一样,同时右边得是个东西,比如右边是 { 1,2,3 } 就不行,它既不是数组,也不是对象。

    2、箭头函数中的this

      箭头函数中的this是不会变的,永远绑定在它当前的环境下。
      let json = {
        a:12.b:5,
        show:()=>{console.log(this)}
      }
      这里面的this指window,因为json是在全局下定义的,全局是window。

    3、JSON

      json如果不用来传输数据,只在js当中用的话(指的是在<script>标签中直接定义json数据),可以不严格按照json的数据格式来,写法可以和js对象的写法一样。如果按照传输数据的话,必须严格按照json的格式来写。

      json的格式要求:json要么是一个数组,要么是一个对象,用单引号包括,里面的属性统统要加双引号,属性值除了数值类型的,也要加双引号。

    4、promise

      promise自己其实没什么功能,它是对所有的异步操作做一个封装而已。

      看以下代码:

      let p=new Promise(function (resolve, reject){   //封装一个promise
        $.ajax({
          url: 'data/1.json',
          dataType: 'json',
          success(data){
            resolve(data);
          },
          error(res){
            reject(res);
          }
        });
      });

      p.then( function (data){
        alert('成功');
        console.log(data);
      }, function (res){
        alert('失败');
        console.log(res);
      } );
    备注:注意里面的resolve 函数和 reject 函数,不是promise提供的,是我们自己写的,红色的部分其实就是resolve函数(表示成功),蓝色的部分其实就是reject函数(表示失败)

    promise中all的用法(都成功才可以,有一个失败就失败了),比如同时请求三个,这三个是异步的,不管是谁先请求到,最后都会按照我们所写的顺序返回给我们。

    promise几乎不能独立使用,真正让 promise 大放光彩的是 async 和 await ,async 和 await 完全可以让我们用同步的方式来写异步的代码。

    5、js在 webpack 里面编译,而webpack是工作在 node 环境下的,所以 webpack 需要遵守node的环境语法,例如:当前目录必须加 ./ 

    6.node知识点

    1、模块:

      1、http模块    服务器

      2、fs模块    读写文件的

      3、querystring模块  利用querystring.parse(xx)的方法解析get请求提交的数据,以 & 切割

      4、url模块  利用url.parse(xx,true)解析get请求提交的数据,最后的true表示把参数以 & 切割好 

    2、write()是node的原生方法,send()是express框架里面的方法。

    3、配置package.json文件,是系统默认的。在终端切换到代码所在的文件夹下,执行命令 npm init,会出来一堆需要自己确认的东西,每一个可以直接回车默认。如果嫌敲回车麻烦,可以输入命令npm init -y 直接都是默认的

    4、npm install xx  => npm i xx    npm uninstall xx  => npm un xx 

      npm i xx -D  => npm i xx -dev   npm i xx -S  => npm i xx -save

    5、如果我想把我的项目拿走,部署到一个新的生产服务器下。不要带走node_modules文件,它比较大,而且这个文件夹不能随便移动,一旦移动,可能就坏了, 需要重新下载。一般情况下,只把package.json拷贝走,到了新环境下,不需要用npm引入一个个的依赖包,主需要一个命令 npm i (或者cnpm i),它会自动的从package.json里面找依赖包,自动全部安装,生成新的node_modules。 

    6、package-lock.json是 npm安装出错的时候或者中途编译、包没找到的时候等等 建的文件,主要是声明刚才出错的详细信息。

    7、npm install   --save-dev 是开发依赖,只在开发版里面起作用。  --save是生产依赖,在生产版,编译的时候起作用。

    8、yarn也是一个挺有名的包管理器,是facebook发明的,可以用npm安装:npm i yarn -g ,它是一个工具,记得全局安装。需要用yarn装东西的时候,就用yarn add xxx ,跟npm的结果几乎是一样的。 最近几年yarn速度越来越慢,不知道什么原因,所以一般不用yarn,一般都是用cnpm。

    9、bower是一个前端的包管理器。npm i bower -g 全局安装,bower i xxx 用bower安装其他东西。在我们代码的文件夹目录下,比如执行 bower i jquery ,就会在当前文件夹生成一个bower_modules的文件,里面存放着bower安装的文件。用bower下包还是挺方便的

    10、npm也可以装jquery,但是npm装的jq更偏向于后台使用,是一个适合编译的版本。是用webpack打包的时候,打好了,再给前端用。有些包npm和bower安装的不一样,npm安装的有些包不能直接使用,需要编译。所以有时候可能要更偏向bower。

    11、用node的时候,用npm安装其他的模块,命令行输入 npm i xx -D ,记得后面加一个横杠和一个大写的D,这样的话,安装过后会在package.json里面的依赖显示出来。

    7、vue知识点

    1、methods 中不能用箭头函数,因为不用箭头函数的话,this的指向指的是vue所在的实例,此时methods中的方法中  this.属性名  指的就是vue实例中的属性。如果用了箭头函数,this的指向指的就是vue实例所在的环境,此时的环境指的是window,用  this.属性名 调用的时候,指的是window下的变量,就不合适了。

      obj ={
        a:1,
        show:function(){console.log(this.a)}
      }

      obj.show() //1

     

      obj ={
        a:1,
        show(){console.log(this.a)}
      }

      obj.show() //1

      obj ={
        a:1,
        show:()=>{console.log(this.a)}
      }

      obj.show() //undefined

  • 相关阅读:
    java基础---13. 匿名对象
    java基础---12. scanner
    java基础---11. API
    Web APIs---2. DOM(1)
    Web APIs---1.概述
    java基础---10. 封装性
    java基础---9. 面向对象
    java基础---8. 数组
    9月1日,随便写点啥
    银川行路随感
  • 原文地址:https://www.cnblogs.com/smile-fanyin/p/10759068.html
Copyright © 2011-2022 走看看