尚融宝06-ECMAScript基本介绍和使用

Posted zoeil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尚融宝06-ECMAScript基本介绍和使用相关的知识,希望对你有一定的参考价值。

目录

一、ECMAScript

1、ECMA

2、ECMAScript

3、什么是 ECMA-262

4、ECMA-262 历史

5、ECMAScript 和 JavaScript 的关系

二、基本语法

1、let声明变量

2、const声明常量

3、解构赋值

4、模板字符串

5、声明对象简写

6、定义方法简写

7、参数的默认值

8、对象拓展运算符

9、箭头函数

10、Promise


一、ECMAScript

1、ECMA

ECMA(European Computer Manufacturers Association)中文名称为欧洲计算机制造商协会,这个组织的目标是评估、开发和认可电信和计算机标准。1994 年后该组织改名为 Ecma 国际。

2、ECMAScript

ECMAScript 是由 Ecma 国际通过 ECMA-262 标准化的脚本程序设计语言。

3、什么是 ECMA-262

Ecma 国际制定了许多标准,而 ECMA-262 只是其中的一个

4、ECMA-262 历史

ECMA-262(ECMAScript)历史版本查看网址 ECMA-262 - Ecma International

第 1 版

1997 年

制定了语言的基本语法

第 2 版

1998 年

较小改动

第 3 版

1999 年

引入正则、异常处理、格

式化输出等。IE 开始支持

第 

2007 年

过于激进,未发布

第 5 版

2009 年

引入严格模式、JSON,扩

展对象、数组、原型、字符串、日期方法

第 

2015 

模块化、面向对象语法、

Promise、箭头函数、let、const、数组解构赋值等等

第 7 版

2016 年

幂运算符、数组扩展、

Async/await 关键字

第 8 版

2017 年

Async/await、字符串扩展

第 9 版

2018 年

对象解构赋值、正则扩展

第 10 版

2019 年

扩展对象、数组方法

ES.next

动态指向下一个版本

5、ECMAScript 和 javascript 的关系

一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?

要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。

因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)

二、基本语法

ES6相对之前的版本语法更严格,新增了面向对象的很多特性以及一些高级特性。本部分只学习项目开发中涉及到ES6的最少必要知识,方便项目开发中对代码的理解。

1、let声明变量

创建文件夹02-ES6-demo,创建 01-let.js

// 1、var可以重复声明,let不可以
var a = 1;
var a = true
console.log(a);
let a = 1;
let a = true; // 未编译已经提示出错
console.log(a)

// 2、var没用块级作用域,let具备块级作用域
var f = true;
if (f) 
    var a = 'yes'
    console.log(a);

console.log(a);  // 这里也可以输出yes

var f = true;
if (f) 
    let a = 'yes'
    console.log(a);

console.log(a); // let报错

3.var和let都具备函数作用域

function check() 
    var a = "yes"
    let b = "no"

console.log(a) // 报错
console.log(b) // 报错

// 4.不存在变量提升

console.log(a) // 输出undefined
var a

console.log(a) // 报错:Cannot access 'a' before initialization
let a

可以使用visual studio 打开集成终端

 使用 node 文件名 执行脚本

2、const声明常量

创建 02-const.js

//1. 初始化时需要赋值
const A = "yes"
//2. 初始化后值不能改变
//A = "no" // 报错:Assignment to constant variable.
//3. 命名规范:大写字母和下划线
const CONSOLE_OUT = "out"

//4. 当常量的地址不变时,可以添加值
const TAME = ['zyt', 'zjy', 'czh']
TAME.push('zyj')
console.log(TAME)

TAME = 100 // 报错:TypeError: Assignment to constant variable.

3、解构赋值

创建 03-解构赋值.js

// 1.数组结构
const F4 = ['小沈阳', '刘能', '赵四', '宋小宝']
// let shenyang = F4[0]  //这种方式也可以,但是如果数组有多个元素需要解析并赋值的话那样太麻烦了
// let liunneng = F4[1]
let [shenyang, liunneng, zhaosi, songxiaobao] = F4 // 使用中括号
console.log(shenyang)
console.log(liunneng)
console.log(zhaosi)
console.log(songxiaobao)

// 2.对象解析
const zbs = 
    username: '赵本山',
    age: '不详',
    sex: '男',
    xiaopin: function () 
        console.log("演小品")
    

// let username1 = zbs.username  // 这种方式取值不需要相同的变量名也可以,但是如果对象有多个元素需要解析并赋值的话那样太麻烦了
let  username, sex, xiaopin  = zbs;  // 使用大括号,设置对应同名属性获取值,不同名获取不到值
// console.log(username1)
console.log(username)
console.log(sex)
xiaopin()

4、模板字符串

创建 04-模板字符串.js

模板字符串相当于加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。

// ES6 引入新的声明字符串的方式 『``』 '' ""
//1. 声明
let str1 = '我是一个字符串'
let str2 = `我也是一个字符串`

console.log(str1, typeof str1)
console.log(str2, typeof str2)

// 2.内容中可以直接出现换行符
let list1 = `<ul>
<li>沈腾</li>
<li>玛丽</li>
<li>贾玲</li>
</ul>`
// 使用单引号换行会报错
let list2 = '<ul><li>沈腾</li><li>玛丽</li><li>贾玲</li></ul>' 
console.log(list1)
console.log(list2)

// 3.变量拼接
let name = '贾玲'
let out = `我喜欢$name这个演员`

console.log(out)

5、声明对象简写

创建 05-声明对象简写.js

let username = 'Tom'
let age = 25
let sing = function () 
    console.log('唱歌')


// 传统
let person1 = 
    username: username,
    age: age,
    sing: sing

console.log(person1)
person1.sing()

// ES6:这样的书写更加简洁
let person2 = 
    username,
    age,
    sing

console.log(person2)
person2.sing()

6、定义方法简写

创建 06-定义方法简写.js

// 传统
let person1 = 
  sayHi: function () 
    console.log('Hi')
  ,

person1.sayHi()

// ES6
let person2 = 
  sayHi() 
    console.log('Hi')
  ,

person2.sayHi()

7、参数的默认值

注意:函数在JavaScript中也是一种数据类型,JavaScript中没有方法的重载

创建 07-参数的默认值.js

//ES6 允许给函数参数赋值初始值
//1. 形参初始值 具有默认值的参数
function add(a, b, c = 0) 
  return a + b + c

let result = add(1, 2)
console.log(result)

//2. 与解构赋值结合
function connect( host = '127.0.0.1', username, password, port ) 
  console.log(host)
  console.log(username)
  console.log(password)
  console.log(port)

connect(
  host: 'atguigu.com',
  username: 'root',
  password: 'root',
  port: 3306,
)

8、对象拓展运算符

创建 08-对象扩展运算符.js 扩展运算符(spread)也是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列,对数组进行解包。
// 展开对象
let person =  name: '路飞', age: 25 

// let someone = person // 引用赋值,此时对someone修改就是对person修改
let someone =  ...person   // 对象拷贝
someone.name = '索隆'
console.log(person)
console.log(someone)

9、箭头函数

创建 09-箭头函数.js 箭头函数提供了一种更加简洁的函数书写方式。基本语法是:
参数 => 函数体
箭头函数多用于匿名函数的定义
//声明一个函数
let fn = function(a)
  return a + 100


//箭头函数
let fn = (a) => 
  return a + 100


//简写
let fn = a => a + 100

//调用函数
let result = fn(1)
console.log(result)

10、Promise

Promise 是ES6 引入的异步编程的新解决方案。语法上 Promise 是一个构造函数, 用来封装异步操作并可以获取其成功或失败的结果。

创建 10-Promise基本语法.js

const fs = require('fs')


// 实例化Promise对象:
// Promise对象有三个状态:初始化,成功,失败
// resolve:函数类型的参数,可以将Promise的状态改为成功
// rejecg:函数类型的参数,可以将Promise的状态改为失败
const p = new Promise((resolve, reject) => 
    // 调用readFile方法读取磁盘文件,异步操作
    // 第一个参数:读取的文件路径
    // 第二个参数:读取过程中对响应结果的处理
    fs.readFile('./1.txt', (err, data) => 
        // 当文件读取失败时,可以获取到失败的信息
        if (err) reject(err) // 将Promise的状态修改为失败

        resolve(data) // 将Promise的状态修改为成功
    )
)

// 调用Promise的方法
// then:当Promise状态成功时调用执行
// catch:当Promise状态失败时调用执行
p.then(response => 
    console.log(response.toString())
).catch(error => 
    console.log('出错了')
    console.error(error)
)

总结:借助于Promise,可以使异步操作中的成功和失败的处理函数独立出来。

尚融宝01-项目简介

目录

一、项目简介

(一)、项目名称

(二)、项目介绍

(三)、项目架构

(四)、业务流程总结

二、信用贷款平台的类别

(一)、银行系

(二)、国资系

(三)、民营系

三、业务流程

(一)、投资人

(二)、借款人

(三)、资金池风险

(四)、资金托管平台

四、开发环境

(一)、前置知识

(二)、技术栈

(三)、开发环境检查

(四)、笔记


一、项目简介

(一)、项目名称

尚融宝

 

(二)、项目介绍

尚融宝是一个网络借贷信息中介服务平台,致力为高成长人群提供专业的线上信贷及出借撮合服务 行业案例: 人人贷 登录/注册 - 人人贷官网 拍拍贷 拍拍贷官网_纽交所上市企业,网络借贷平台,解决个人小额借款、短期借款问题。 资金银行存管,安全保障。

 (三)、项目架构

(四)、业务流程总结

 

 

二、信用贷款平台的类别

(一)、银行系

  • 优势:第一,资金雄厚,流动性充足;第二,项目源质地优良,大多来自于银行原有中小型客户;第三,风险控制能力强。如恒丰银行、招商银行等旗下都有信用贷款平台。
  • 劣势:收益率偏低,预期年化收益率处于5.5%-8.6%之间,略高于银行其他理财产品,对投资人吸引力有限。

(二)、国资系

  • 优势:拥有国有背景股东的隐性背书,兑付能力有保障,业务模式较为规范,从业人员金融专业素养较高。
  • 劣势:缺乏互联网基因;项目标的较大,起投门槛较高;且产品种类有限,多为企业信用贷;较为谨慎,层层审核的机制严重影响了平台运营效率;收益率不具有吸引力。

(三)、民营系

民营系平台数量最多,起步最早,但鱼龙混杂,不胜枚举。
  • 优势:普惠金融,手续便捷;门槛极低,投资起点低最低起投门槛甚至50元;强大的互联网思维,产品创新能力高,市场化程度高;收益率高,投资收益率具有吸引力。
  • 劣势:风险偏高,资本实力及风控能力偏弱,跑路及倒闭的高发区。

三、业务流程

 

(一)、投资人

希望在平台上找到合适的投资项目,获取利润回报的用户

(二)、借款人

需要资金周转的用户

(三)、资金池风险

  • 资金池:一个大池子放钱,一边存进来(入水管),一边贷出去(出水管)。不管是张三的钱、李四的钱、还是王五的钱,只要进到池子里,就都叫池子的钱了。银行就是典型的资金池。
  • 资金池风险:
    • 第一种情况:投资入水管流量过大,池子里全是水。这种情况,平台亏钱,干不长。原因很简单,池子里的钱是有成本的,只进不出,没有利差,拿什么钱付投资人的利息,时间长了,就只能用投资人的本金还投资人的利息,借新还旧,庞氏骗局。这个过程就直接背离了平台信息中介的身份,而成了与银行类似的金融机构。
    • 第二种情况:突然来了这么多钱,怎么办?只能把放贷出水管的流量调大。放贷的这条出水管上有两个阀门,一个叫找项目,一个叫做风控。遇到这种情况,经常就是两个阀门一块儿放,钱是贷出去了,但由于放松了对风险的把控,能不能再流回来,就不好说了,危险。
    • 第三种情况:提款的出水管流量变大。比如,一个黑天鹅事件,一个负面新闻,一个平台垮了,都可能诱发这种情况,这就是挤兑。比如说某租宝事件后,不只这一家平台,很多其他平台的用户,也在疯狂的提现,有可能一直提到关门为止。
    • 第四种情况最极端:平台把池子里的钱都提出来,走人。这个就不用解释了,就是跑路
    • 以上四种情况就是资金池最主要的几个风险——经营不善,风险失控,挤兑和跑路。银监会发布的《网络借贷信息中介机构业务活动管理暂行办法》让资金存管成为网贷平台的硬性要求,同时降低了平台建立资金池、挪用用户资金的风险。

(四)、资金托管平台

  • 第三方存管模式:“第三方存管”的全称是“客户交易结算资金第三方存管”。这里的第三方存管机构,目前是指具备第三方存管资格的商业银行。银行的流入资金成本低,风控体系较完善,资金池子足够大,而且是国家背书,不会跑路。
  • 说明:由于我们是教学使用,无法申请到正式的资金托管平台的支持,所以我们根据资金托管平台API接口文档,自行开发模拟一套API接口来满足业务需要,业务过程与实际开发基本一致。

四、开发环境

(一)、前置知识

Java基础、HTML、CSS、JavaScript、Spring、SpringMVC、MyBatis、SpringBoot、SpringCloud Alibaba MySQL、Redis、RabbitMQ、nginx、idea、maven、VMWare 虚拟机、CentOS 操作系统

、技术栈

1、后端

SpringBoot 2.3.4.RELEASE SpringCloud Hoxton.SR8:微服务基础设施 - 服务注册、服务发现、服务熔断、微服务网关、配置中心等 SpringCloud Alibaba 2.2.2.RELEASE MyBatis Plus:持久层框架和代码生成器 Lombok:简化实体类开发 Swagger2:Api接口文档生成工具 Logback:日志系统 alibaba-easyexcel:Excel读写 Spring Data Redis:Spring项目中访问Redis缓存 HTTPClient: 基于Http协议的客户端,用来实现远程调用 Spring Task:定时任务

2、数据库和中间件

MySQL 5.7:关系型数据库     管理工具:Navicat Redis 5.0:缓存技术     管理工具:RedisDesktopManager RabbitMQ 3.8:消息中间件
 

3、三方接口

阿里云短信:短信网关 阿里云OSS:分布式文件存储 资金托管平台API对接:汇付宝

4、前端

Node.js: JavaScript 运行环境 ES6:JavaScript的模块化版本 axios:一个发送Ajax请求的工具 Vue.js:web 界面的渐进式框架 Element-UI:前端组件库 模块化开发:解决javascript变量全局空间污染的问题 NPM:模块资源管理器 vue-element-admin:基于Vue.js的后台管理系统UI集成方案 NuxtJS:基于Vue.js构建的服务器端渲染应用的轻量级框架

、开发环境检查

  • jdk 1.8
        配置:JAVA_HOME、path
  • maven 3.6
        配置:MAVEN_HOME、本地仓库路径、中央仓库地址、jdk版本
  • ideaIU-2020.2.3:
        注意:在idea的欢迎页面选择Configure > settings         配置:Java Compiler、File Encodings、Maven、Auto Import、Code Completion > Match case(取消)         插件:lombok、MyBatisX

、笔记

1、安装和注册

为知笔记 为知笔记打不开 ziw 文件问题_ziw文件

2、笔记的使用

笔记目录设置、笔记导入、笔记视图、笔记显示顺序、笔记编辑

以上是关于尚融宝06-ECMAScript基本介绍和使用的主要内容,如果未能解决你的问题,请参考以下文章

微服务项目:尚融宝(后端接口:创建尚融宝接口工程)

微服务项目:尚融宝(14)(前端平台:尚融宝管理系统路由配置)

尚融宝14-集成redis缓存

尚融宝17-用户身份认证的三种模式

微服务项目:尚融宝(17)(后端搭建:数据字典)

使用阿里云ECS发布网站的基本步骤