zoukankan      html  css  js  c++  java
  • node

    原文:https://www.dazhuanlan.com/2019/12/11/5df0f288c63da/

    node简介

    1.前后端分离

      前端负责写页面,和发送ajax请求获取数据,通过模板引擎进行渲染

      后端负责写接口,提供数据

    2.node环境的JavaScript

      不同于浏览器中js, 不存在DOM和BOM的概念

      以前所说的js的组成: ECMAScript + BOM + DOM, 其实是指在浏览器中JS的组成

      document.getElementById() // DOM中的方法
      var arr = []
      arr.sort() // ECMAScript中规范的方法
    • 共同点: 只要是js, 都会遵循ECMAScrit规范

      node环境的js组成: ECMAScript + 全局成员 + 内置模块 + 第三方模块

      npm: node package manager (node包管理器)

    • 使用node运行js

      打开终端(Windows控制台) , cmd

    ES6新语法

    1. let关键字

      由于JS历史遗留问题, 声明变量一直使用var关键字, 特点就是有变量声明提升, 没有块级作用域

      let关键字的出现就是为了解决上述两个问题, 特点如下:

      a. let声明变量必须声明后才可以使用, 如果在声明之前使用变量会直接报错: xxx is not defined

      b. let声明变量不赋值, 默认值也是undefined

      c. let声明的变量有块级作用域, 如果在if/while/for等有大括号的代码中声明变量, 出了这个大括号就无法访问了

      d. let和const都无法重复声明变量, 一旦变量被声明就不可再次声明

    2. const关键字

      不同于let的是, const用于声明常量, 一旦被声明必须立即赋值, 并且永远不可修改

      a. const声明的常量必须立即赋值

      b. 不可被再次修改

      c. 其他地方同let

    3. 解构赋值

      作用: 将对象的属性提取出来存在变量中, 例如, 将userInfo对象的name和age属性提取出来放到name和age变量中存储:

      let userInfo = {
          name: '谢俊',
          age: 30,
          gender: '男',
          sayHi: function() {
              console.log('大家好我是' + this.name)
          }
      }
      // 以前的做法:
      // let name = userInfo.name
      // let userAge = userInfo.age
      // let sayHi = userInfo.sayHi
      // sayHi()
      // ES6解构赋值的做法:
      let { name, age: userAge, sayHi } = userInfo
      // 以上代码只是将用户信息的属性值提取出来存到变量中了, 如果修改变量name或userAge, 不会影响userInfo中的数据, 因为这是基本数据类型, 传递数据都是值传递
      
    4. 箭头函数

      作用: 为了解决函数内部this指向的问题, 箭头函数的特点就是, 函数内部的this永远指向函数外部的this

      语法:

      // 小括号里面写形参列表
      // 大括号里面写函数体
      () => {}
      

      简便写法:

      a. 如果形参列表只有一个参数, 可以省略小括号, 注意: 如果一个参数都没有或者两个以上的参数必须加上小括号()

      b. 如果函数体中只有一行代码, 那么右侧的大括号{}可以省略, 并且还需要去掉return关键字, 默认会把这一行代码执行的结果返回出去

    5. 添加对象属性或方法的简便写法

      作用: 把和对象属性同名的变量快速的添加到对象中

      以前的写法

      let name = '谢俊'
      let age = 30
      
      let obj = {
        name: name,
        age: age
      }
      

      ES6的写法:

      let name = '谢俊'
      let age = 30
      let fn = function () {
        console.log('我是fn')
      }
      
      let obj = {
        name,
        age,
        fn,
        sayHi() {
      
        }
      }
      

    fs模块

    fs模块属于核心模块, 只要安装了node环境就会携带, 使用方法先导入该模块:

    const fs = require('fs')
    
    1. 读取文件

      fs.readFile()
      

      参数1: 路径 path, 可以是相对路径

      参数2: 可选值 编码

      参数3: 读取完成的回调函数, 该回调函数中有两个参数, 第一个是错误信息err, 第二个是读取的数据data, 如果没有指定编码, data是Buffer类型的数据, 可以通过toString转为字符串

    2. 写入文件

      fs.writeFile()
      

      参数1: 路径

      参数2: 要写入的数据, 类型可以是string或buffer

      参数3: 可选值 编码 默认utf-8

      参数4: 回调函数, 该回调函数只有一个参数错误信息err

      注意: 如果要写入的文件不存在, 会创建文件后写入

    3. 追加文件

      fs.appendFile()
      

      参数1: 路径

      参数2: 要追加的数据, 类型可以是string或buffer

      参数3: 可选值 编码 默认utf-8

      参数4: 回调函数, 该回调函数只有一个参数错误信息err

      注意: 如果要追加的文件不存在, 会创建文件后追加

    1. 复制文件

      fs.copyFile()
      

      参数1: 源路径

      参数2: 目标路径

      参数3: 可选值 flags 无视掉

      参数4: 回调函数, 该回调函数只有一个参数错误信息err

  • 相关阅读:
    SpringBoot定制修改Servlet容器
    springboot配置i18n
    idea properties编码问题
    多线程分页查询
    浏览器 私有属性&内核
    css添加样式的四种方式
    html、css、js注释
    JS中的 变量提升
    ECMAScript
    NOSCRIPT标签的用处
  • 原文地址:https://www.cnblogs.com/xiayule/p/node1.html
Copyright © 2011-2022 走看看