Node.js学习笔记之异步编程部分(一)
回调函数格式规范
error-first callback
Node-style callback
第一个参数是error,后面的参数才是结果
场景你在面试之后,面试官让你回去等消息。
结果:
过
不过
ps:面试过了我们就笑一下,面试不过我们就哭!
先上代码:
12345678910111213141516171819202122232425 interview(function(err){ if(err){ return console.log('cry at 1st'); } interview(function(err){ if(err){ return console.log('cry at 2nd'); } interview(function(err){ if(err){ return console.log('cry at 3rd'); } cons ...
Node.js的非阻塞I/O
写在最前
老早就想学Node.js了,觉得前端一定要是懂服务端知识,并且可以自己独立完成一个小型全栈项目的,但是碍于时间因素,上学期学了点基础之后,就再也没空学,正好今天科二过了,Node.js我又来卷你了!!!
I/O就是input/output,一个系统的输入输出
阻塞I/O和非阻塞I/O的区别就在于系统的接收输入,在到输出期间,能不能接收其他输入
举个栗子🌰
去食堂吃饭:我们都要排队打饭
我们的流程是:排队——>等前面的人打饭——–>轮到我们自己打饭——->开始吃饭
出去吃饭:餐厅点菜
现在我们的流程是:坐下——->点菜——->等待——–>开始吃饭
尝试开始在markdown中使用一些奇奇怪怪的东西
排队打饭 vs 餐厅点菜
对于点菜人员的我们来说:
排队打饭是阻塞I/O
餐厅点菜是非阻塞I/O
继续来看最上面那句话:
系统的接收输入,在到输出期间,能不能接收其他输入
在栗子中,系统=食堂打饭的阿姨或者是餐厅服务生,输入=点菜,输出=端菜(上菜)
食堂阿姨只能一份一份的打饭———> 阻塞I/O
服务生点 ...
跨域的问题终于能解决了
写在最前啊😭!在我大一学习前端,刚入门的时候,尝试着用jquery做一些小项目,这个东西困扰了我一个寒假!!!!当时没有跨域这个概念,于是乎就开始疯狂的百度。。。。为了不拖进度,把一个前后端分离的项目被逼成了不分离,后来还好,在开学前夕顺利解决,把不分离的“不”字去掉了,并也按时完成了项目!!!
(拖了一个月左右应该也叫按时完成吧,不管了,先奖励自己一个🍗~)
跨域问题真的成了我一段时间的心里阴影,后来一谈到跨域,心里贼怕!
最近复习网络部分,刷到了跨域的知识点,于是结合自己毕生所学(加上搜集的一丢资料),总结了一些关于跨域的知识。
什么是跨域?先举个栗子🌰,我博客的网址是:https://blog.wangez.site:8080最前面的https叫做协议,随后的blog.wangez.site叫做域名,最后的8080叫做端口号(注:真实的博客网址不带8080,我的博客,都说了是举个栗子🌰,不会有人当真了吧!!!)。
当前页面中的某个接口请求的地址和当前页面的地址如果协议、域名、端口其中有一项不同,就说该接口跨域了
为什么有跨域?浏览器为了保证网页的安全,出的同源协议 ...
前端知识链条中少不了的一环--Ajax
不知不觉中又好久没写博客了,这几日因为在看计网,没有记录,于是又觉得自己没有学到什么东西,正好今天在牛客刷面经的时候看见了手撕Ajax,题材有了,于是文章它来了!
前言当我们步入前端大门,走过HTML,看过CSS,翻过JavaScript,接下来你该遇到的,就是它了–Ajax。这个也是前端与后端交互所必需的东西,非常之重要。所以才有了标题的说法,它是前端知识链条中少不了的一环。
什么是Ajax?Ajax的核心是JavaScript对象XmlHttpRequest,XmlHttp使我们可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。通过XMLHttpRequest对象,前端开发人员就可以在页面加载以后进行页面的局部更新等操作。
Ajax作用是什么?
通过异步模式,提升了用户体验
不在使用form表单提交(会出现跳转情况),提升了用户体验
Ajax可以实现局部刷新,不用在更新整个页面,传统的网页(不适用Ajax),想要更新内容必须重载整个页面。
这就使得web应用程序能够更加敏捷的回应用户操作,避免了多次向服务端发送那些重复的数据。
详解Ajax创建请求 ...
JS中,函数原来有这么多种定义方法(暑假开始!)
前言最近在期末与暑假假期画饼之间不断奔波,很长时间没有记录了,今天在学习的时候看到了ES6的箭头函数,瞬间找到了写文的动力,那就来梳理一下在JavaScript中一共有几种定义函数的方式吧,最后再(微微)重点的介绍一下箭头函数✨
过段时间,要加强算法学习了,这段时间也在力扣和牛客上找题做了一下,发现自己的算法真的烂,所以可能以后还会把算法题解写一写。(🍗+ 1)
JavaScript定义函数的几种方式以下是定义函数的几种方式,真正书写的话,个人觉得没有什么必须要用某种格式的情况,根据团队风格或者个人习惯来就好。
最初的我们我们刚接触js的时候,见到的就是它啦😎
1234function hello () { console.log('hello javascript');}hello();
这种方式大概也是陪伴我们时间最长的了吧?是不是呢?
函数表达式函数都是Function的实例对象,也就可以说函数是值,与字符串,数字等是一样的。这种方法就是通过表达式来定义函数,也就是定义匿名函数,再将匿名函数交给变量。
1234var hello ...
关于作用域与作用域链的理解
前言继续来了解一下ES6,顺便把前段时间留下作用域的坑也填上。
JavaScript中,有一个被称之为作用域(scope)的特性,在之前闭包的文章中提到过,现在来梳理一下。
作用域作用域是指在程序中定义变量的区域,该位置决定了变量的生命周期。通俗地理解,作用域就是变量与函数的可访问范围,即作用域控制着变量和函数的可见性和生命周期。
在ES6之前,JavaScript中有两种作用域,分别叫做全局作用域和函数作用域。
全局作用域:全局作用域中的对象在代码中的任何地方都能访问,其生命周期伴随着页面的生命周期,页面被关闭才会被销毁。
函数作用域:函数作用域就是在函数内部定义的变量或者函数,并且定义的变量或者函数只能在函数内部被访问。函数执行结束之后,函数内部定义的变量会被销毁。
作用域给我的最大感觉就是隔离变量,在不同作用域的同名变量是不会冲突的。
在ES6中,提出了块级作用域的概念。
块级作用域的特点:在代码块内部定义的变量在外部是访问不到的,并且变量会在该代码块执行完后被销毁掉。
块级作用域形式:就是使用大括号包裹的代码块{},比如函数,判断语句,循环语句, ...
解构运算符的理解与运用
前言最近一直在学JavaScript,看到了ES6中的解构符号,觉得这个给我们的代码简洁性带来了一个飞跃式的提升,而且它已经运用在了企业开发中,假如未来你工作中,别人在用,你却读不懂别人的代码,这造成的影响还是很大的。因此,好好学习一下吧。
你可以不用,但是你不能不懂✔
JavaScript ES6中,有很多特性都是为了简化代码,方便程序员去书写的。解构运算符就是其中很好的特性,它可以通过减少赋值语句的使用,或者减少访问数据下标、对象属性的方式,使得代码更加简洁,增强了代码的可读性。
解构符号的作用解构赋值是对赋值运算符的扩展,他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构
使用方法
基本使用
12let [a,b,c] = [1,2,3];// let a = 1, b = 2, c = 3;
嵌套使用
12345678910// 数组 let [a, [[b], c]] = [1, [[2], 3]]; console.log(a); // 1 console.log(b); // 2 ...
关于闭包的一些理解
前言我是在大一下,一个学姐面试的时候,第一次听闻闭包这个名词。当时听了一些学长的解释(虽然没怎么听懂),但是觉得,似乎很高级的样子。
如今时隔一年,跟闭包也打了不少交道,终于也能谈一谈自己对于它的理解了。
什么是闭包?
闭包是什么? ——可简单理解为:有权访问另一个函数作用域内变量的函数都是闭包。
先来看一个例子:
12345678910111213141516171819function drink() { var beerName = "雪花啤酒"; let beerNum1 = 1; const beerNum2 = 2; var innerBeer = { getBeer:function() { console.log(beerNum1) return beerName }, setBeer:function(newBeer) { beerName = newBeer } } return innerBeer}var go = drink();go.set ...
框架简介之Vue.js
前端框架有哪些?React(GitHub No.1)React起源于Facebook的内部消息。React官方是这样介绍的它:一个声明式、高效、灵活的、创建用户界面的JavaScript库,即使React的主要作用是构建UI,但是项目的逐渐成长已经使得react成为前后端通吃的WebApp解决方案。
Vue(GitHub No.2)vue官网说:Vue.js 是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。渐进式,我个人理解就是阶梯式向前。vue是轻量级的,它有很多独立的功能或库,我们会根据我们的项目来选用vue的一些功能。就像我们开发项目时如果只用到vue的声明式渲染,我就只用vue的声明渲染,而我们要用他的组件系统,我们可以引用它的组件系统。vue的渐进式表现为:
声明式渲染——组件系统——客户端路由——-大数据状态管理——-构建工具
Augular(GitHub No.3)AngularJS 是一款开源JavaScript库,由Google维护,用来协助单一页面应用程序运行,它是基于ES6来开发的。
它是前端/客户端JavaS ...
Vue.js基础环境的搭建以及简单使用Element-ui
Vue的环境配置Node.js的安装Vue的运行是依赖node进行的,所以安装Vue之前,要先去node的官网去安装node。安装结束之后可以使用下面的命令查看安装是否成功。
1node -v
npm/yarnnpm(node package manager),俗称包管理器(类比于java里的maven),顾名思义,主要功能就是管理node包,包括:安装、卸载、更新等等。
他未经更改过的源,是国外的镜像,所以经常会有包丢失或者下载速度慢,建议自己换成淘宝源(阿里做的同步镜像)
12345//临时npm --registry https://registry.npm.taobao.org install express//永久npm config set registry https://registry.npm.taobao.orgnpm install express
yarn的话,直接去官网下载安装就行。
Vue-cli1npm install vue-cli -g
Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供:
通过 @vue/cli 实现的 ...