最新文章
在浏览器中,我们一旦把节点添加到document.body(或者其他节点)中,页面就会更新并反映出这个变化,对于少量的更新,一条条循环插入也会运行很好,也是我们常用的方法。但是,如果当我们要向document中添加大量数据时(比如1w条),如果像上面的代码一样,逐条添加节点,这个过程就可能会十分缓慢。 documentFragment 被所有主流浏览器支持。所以,没有理由不用。DocumentFragments 是DOM节点。它们不是主DOM树的一部分。通常的用例是创建文档片段,将元素附加到文档片段,然后将文档片段附加到DOM树。在DOM树中,文档片段被其所有的子元素所代替。因为文
以下内容已整合到脚手架:sorrycc/dva-boilerplate-electron近期,我们在内部做了一个类似 IDE 性质的应用,基于 electron。过程中趟过不少坑,也有了些心得,记录如下。包含:数据通讯架构方案Two-Package 目录结构源码打包应用打包数据通讯数据通讯方案决定整体的架构方案。翻翻 Electron 文档,应该不难发现,Electron 有两个进程,分别为 main 和 renderer,而两者之间是通过 ipc 进行通讯。main 端有 ipcMain,renderer 端有 ipcRenderer,分别用于通讯。一个简单的读取文件的例子:main 端
本人的项目是 vue + webpack,vue单文件中使用了 Jade 模板与 less 预编译器
起因是因为谈论到 Jade 模板问题,Jade 早已改名为 Pug,并且发布了2.0版本,想着不如升级了吧,顺便把 webpack 与 vue 也一并升级了,事实证明,升级需谨慎 = =
首先之前的版本如下:
"vue": "2.4.2"
"webpack": "2.7.0"
升级后的版本为:
"vue": "2.5.7"
&
今天重装Photoshop,发现总是初始化失败。
网上找到的踩坑经验如下:
首先是彻底清除photoshop的残余:
第一步前往文件夹Library
~/Library/
第二步接着查找并清理以下目录中的所有Adobe文件
清理目录
~/Library/Application Support/Adobe
~/Library/Preferences/Adobe
~/Library/Caches/Adobe
解决办法
一.到了这里不点打开,右击,点显示包内容
二.进去后再进MacOs文件夹
三.进来MacOS文件夹看到一个Insta
模块检查更新
生成工程后,一段时间很多模块都有更新,如何把工程中的模块都更新到最新的呢。 npm update一次只能更新一个包
首先我们先通过命令查看下需要更新的版本:
npm outdated
npm outdated 会列出所有可更新的 node_modules,如下:
Package Current Wanted Latest Location
autoprefixer 6.7.2 6.7.2 7.1.2 vue-test
ba
前段时间升级了Node.js,现在执行`npm install`的时候,就会在当前目录生成一个`package-lock.json`的文件。
package.json里面定义的是版本范围(比如^1.0.0),具体跑npm install的时候安的什么版本,要解析后才能决定,这里面定义的依赖关系树,可以称之为逻辑树(logical tree)。node_modules文件夹下才是npm实际安装的确定版本的东西,这里面的文件夹结构我们可以称之为物理树(physical tree)。安装过程中有一些去重算法,所以你会发现逻辑树结构和物理树结构不完全一样。
packag
Having the same issue on npm 5.4.2. Initially I tried npm cache clear --force but it did not resolve my issue. Removing package-lock.json didn't either.
Removing both node_modules and package-lock.json worked:
rm -rf node_modules/
rm package-lock.json
# Install and add the package
看字面意思大概是package.json里缺少repository字段,也就是说缺少项目的仓库字段
{
...
"repository": {
"type": "git",
"url": "http://baidu.com"
},
...
}
但作为测试项目或者练习用,只需在package.json里面做如下配置即可:
{
...
"private"
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
所有标签