什么是JSON?

声明:

var:声明一个变量,可选初始化一个值
let:声明一个块作用域的局部变量,可选初始化一个值
const:声明一个块作用域的只读常量

循环

for…in语句,循环一个指定的变量来循环一个对象所有可枚举的属性。

区别:

for…in循环遍历的结果是数组元素的下标
for…of遍历的结果是元素的值

函数声明:

一个函数定义,也称为函数声明,或函数语句,由一系列的function关键字组成。

递归:

一个函数可以指向并调用自身。

嵌套函数:

一个函数里面嵌套另外一个函数。嵌套(内部)函数对其容器(外部)函数是私有的。它自身形成了一个闭包。内部函数包含外部函数的作用域。

内部函数形成了一个闭包,它可以访问外部函数的参数和变量,但是外部函数却不能使用它的参数和变量。

内部函数可以访问外部函数的作用域,因此当内部函数生命周期大于外部函数时,外部函数中定义的变量和函数的生命周期比内部函数执行时间长才行,当内部函数被销毁后,外部函数才会被销毁。

常用方法

表达式:一组代码的集合,它返回一个值。this关键字被用于指代当前的对象,通常,this指代的是方法中正在被调用的对象。

split

通过将字符串分离成一个个子串来把一个string对象分裂到一个字符串数组中。

slice

从一个字符串提取片段并作为新字符串返回。

substring,substr

分别通过指定起始和结束位置,起始位置和长度来返回字符串的指定子集。

match,replace,search

通过正则表达式来工作。

toLowerCase,toUpperCase

分别返回字符串的小写表示和大写表示。

normalize

按照指定的一种Unicode正规形式将当前字符串正规化。

repeat

将字符串内容重复指定次数后返回。

trim

去掉字符串开头和结尾的空白字符

exec()

方法在一个指定字符串中执行一个搜索匹配,返回一个结果数组或null

test

一个在字符串中测试是否匹配的RegExp方法,它返回truefalse

match

一个在字符串中执行查找匹配的String方法,它返回一个数组或者未匹配到时返回null

search

一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1

replace

一个在字符串中执行查找匹配的String方法,并且使用替换字符串换掉匹配到的子字符串。

Node.js

学习Node.js,需要预备知识,html,css,javascript,简单的命令行操作,具有服务端开发经验。

  1. node.js不是一门语言
  2. node.js不是库,不是框架
  3. Node.js是一个JavaScript运行时环境
  4. node.js可以解析和执行JavaScript代码

node.js中的JavaScript
没有bom,dom,有EcmaScript,提供额外的api
node.js能做web服务器后台,命令行工具
B/S编程模型:Browser-Serverback-end。模块化编程,RequireJSSeaJS,什么是模块化编程,就是可以在node中可以像@import()一样来引用加载JavaScript脚本文件。
异步编程:回调函数,Promiseasyncgenerator
文件名不要使用node.js来命名,不要使用中文。在node中,采用EcmaScript进行编码没有,没有BomDom,和浏览器中的JavaScript不一样。

核心模块:

node为JavaScript提供了很多服务器级别的api,这些api绝大部分包装到了一个具名的核心模块中。
fs核心模块文件操作,http服务器构建的http模块,path路径操作模块等。

fs:

1.fs是file-system的简写,就是文件夹系统的意思
2.在Node中如果想要进行文件操作,就必须引入这个fs这个核心模块
3.在js这个核心模块中,就提供了所有的文本操作相关的api
4.fs.readFile就是用来读取文件的
在node中,没有全局作用域,只有模块作用域,外部访问不到内部,内部也访问不到外部。

require方法有两个作用:

  1. 加载文件模块并执行里面的代码
  2. 拿到被加载文件模块导出的接口对象

每个文件模块中提供了一个对象:exports
exports 默认是一个空对象

  1. var ret = request('./b')
  2. // console.log(ret)
  3. console.log(ret.foo)
  4. console.log(ret.add(1,2))
  1. var foo = '达达前端'
  2. // console.log(exports)
  3. exports.foo = 'hello'
  4. exports.add = function(x,y) {
  5. return x+y
  6. }

服务器渲染和客户端渲染的区别

客户端渲染不利于SEO搜索引擎优化
服务端渲染可以被抓取到,客户端异步渲染就很难获取到
真正的网站既不是纯异步也不是纯服务渲染

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png