OPTIONS请求是信使请求,在跨域请求之前,浏览器会先发送OPTIONS请求去获取服务器请求访问头,如果OPTIONS请求被拒绝,则不会继续后续的GET/POST/PUT/PATCH等操作。前面请求,由于只是去探路的,只请求数据头部,所以返回空是正常的。如果前面的OPTIONS访问的头部信息被服务器拒绝,那么后面一次请求就不会被发起。这个是HTTP自身的特性,不用特意去处理,如果是自己的服务器的话,只需要在后台给所有的OPTIONS类型请求返回空就可以了(这只是以防万一,因为OPTIONS只请求数据头部,总是会返回空)。网上找到这个说法:https://segmentfault.com/q/
PATCH方法是新引入的,是对PUT方法的补充,用来对已知资源进行局部更新. patch方法用来更新局部资源,这句话我们该如何理解? 假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。可你的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候的更新怎么做? 人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端,做完整更新。但仔细想想,这种做法感觉有点二,而且真心浪费带宽(纯技术上讲,你不关心带宽那是你土豪)。 于是patch诞生,只传一个userName到指定资源去,表示该请求是一个局
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID
FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据。其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用。如果表单enctype属性设为multipart/form-data ,则会使用表单的submit()方法来发送数据,从而,发送数据具有同样形式。
链接到章节从零开始创建FormData对象
你可以自己创建一个FormData对象,然后调用它的append()方法来添加字段,像这样:
var formData = new FormData();
formData.append("username",
在Express.js中处理文件上传,通常需要借助第三方中间件,如multer,它是一个Node.js的中间件,用于处理multipart/form-data类型的HTTP请求,主要用于文件上传。
以下是如何使用multer在Express.js应用中实现文件上传的基本步骤:
1. 安装multer
首先,你需要安装multer。可以通过npm或yarn来安装:
Bash
npm install multer
# 或者
yarn add multer
2. 导入并配置multer
在你的Express应用中导入multer,然后根据需求配置存储引擎。multer提供了内存存储和磁盘存储两种方
安装方法1.使用CDN直接引用 script src="https://unpkg.com/vue/dist/vue.js" /script
script src="https://unpkg.com/vue-i18n/dist/vue-i18n.js" /script 2.NPM$ npm install vue-i18n3.Yarn$ yarn add vue-i18n使用方法在这里只介绍vue的使用方法 script
/* 国际化使用规则 */
import Vue from 'vue'
import Vu
在MySQL数据库中,mysql-bin.000001、mysql- bin.000002等文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。这样做主要有以下两个目的:1:数据恢复如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。2:主从服务器之间同步数据主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。处理方法分两种情况:1:只有一个mysql服务器,那么可以简单的注释掉这个
CommonJS2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程。这标志"Javascript模块化编程"正式诞生。因为老实说,在浏览器环境下,没有模块也不是特别大的问题,毕竟网页程序的复杂性有限;但是在服务器端,一定要有模块,与操作系统和其他应用程序互动,否则根本没法编程。NodeJS是CommonJS规范的实现,webpack 也是以CommonJS的形式来书写。定义模块根据CommonJS规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global
简介MD5(Message-Digest Algorithm)是计算机安全领域广泛使用的散列函数(又称哈希算法、摘要算法),主要用来确保消息的完整和一致性。常见的应用场景有密码保护、下载文件校验等。本文先对MD5的特点与应用进行简要概述,接着重点介绍MD5在密码保护场景下的应用,最后通过例子对MD5碰撞进行简单介绍。特点运算速度快:对jquery.js求md5值,57254个字符,耗时1.907ms输出长度固定:输入长度不固定,输出长度固定(128位)。运算不可逆:已知运算结果的情况下,无法通过通过逆运算得到原始字符串。高度离散:输入的微小变化,可导致运算结果差异巨大。弱碰撞性:不同输入的
1、普通字符串//编码new Buffer(String).toString('base64');//解码new Buffer(base64Str, 'base64').toString();2、十六进制Hex//编码new Buffer(String, 'base64').toString('hex');//解码new Buffer(base64Str, 'hex').toString('utf8');3、图片const fs = require('fs');//编码functio
以前,Promise库有promise,Q,bluebird等,后来,ES6中也新增了原生Promise。Promiss/A+规范 https://promisesaplus.com/An open standard for sound, interoperable JavaScript promises—by implementers, for implementers.一个健全的通用JavaScript Promise开放标准,源于开发者,并归于开发者function test(resolve, reject) {
var time = Math.random();
i
##场景远古时代我们在编写express后台,经常要有许多异步IO的处理。在远古时代,我们都是用chunk函数处理,也就是我们最熟悉的那种默认第一个参数是error的函数。我们来模拟一个Mongo数据库的操作,感受一下。mongoDb.open(function(err, db){
if(!err){
db.collection("users", function(err, collection){
if(!err){
let person = {name: &q
GitHub.com 现在不再使用字体来输出图标了。我们把代码库中所有的 Octicon 替换成了 SVG 版本。虽然这些改动并不那么明显,但你马上就能体会到 SVG 图标的优点。Octicon 上的对比切换到 SVG 以后,图标会作为图片渲染而非文字,这使其在任何分辨率下都能很好地在各种像素值下显示。可以比较一下左侧放大后的字体版本和右侧清晰的 SVG 版本。为何使用 SVG?图标字体渲染问题图标字体从来只是一种 hack。我们之前使用一个自定义字体,并将图标作为 Unicode 符号。这样图标字体就可以通过打包后的 CSS 来引入。只要简单地在任意元素上添加一个 class,图标就
Express 是一个基于 Node.js 的 web 应用框架,它简化了 web 应用的开发过程。中间件是 Express 应用程序的核心特性,它们是请求处理链中的函数,可以执行各种任务,如响应处理、路由、错误处理等。下面是一个关于如何在 Express 中使用中间件的简明教程。
1. 安装 Express
首先,确保你已经安装了 Node.js。然后,在命令行中创建一个新的项目目录,并初始化 npm:
Bash
mkdir myapp
cd myapp
npm init -y
接着,安装 Express:
Bash
npm install express
2. 创建基本的 Expres
nodemon
nodemon 是一个工具,用于项目代码发生变化时可以自动重启,nodemon 本意时检测项目变化的,对项目做监控的。重启只是它的一个功能。
install
安装 nodemon 需要使用 npm,没有安装 npm 的请看 node.js 安装
npm install -g nodemon
或则安装在本地
npm install nodemon --save
配置
在项目目录下创建 nodemon.json 文件
{
"restartable": "rs",
"ignore": [
".git",
".svn",
"node_modules/**/node_modules"
transition-timing-function属性指的是过渡的“缓动函数”。主要用来指定浏览器的过渡速度,以及过渡期间的操作进展情况,其中要包括以下几种函数:
div class="p9biao"
div class="main"
div class="pics" style="left: 0px"
img class="pic" src="/images/k2s/page9/a1.png" alt="" /
img class="pic" src="/images/k2s/page9/
网页布局(layout)是 CSS 的一个重点应用。布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。一、Flex 布局是什么?Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。.box{
display: flex;
}
行内元素也可以使用 Flex 布局。.box{
displa
骨灰级解决方案:.clear{clear:both;height:0;overflow:hidden;}上诉办法是在需要清除浮动的地方加个div.clear或者br.clear,我们知道这样能解决基本清浮动问题。但是这种方法的最大缺陷就是改变了html结构,虽然只是加个div。最优浮动闭合方案(这是我们推荐的):.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.clearfix{*+height:1%;}用法很简单,在浮动元素的父云素上添加class=”demo
function checkMobile(s){
var length = s.length;
if(length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(14[0-9]{1})|)+\d{8})$/.test(s) )
{
return true;
}else{
return false;
}
}
所有标签