;

setTimeout(function(){console.log(1)},0); new Promise(function(resolve){ console.log(2) for( var i=0 ; i<10000 ; i++ ){ i==9999 && resolve() } console.log(3) }).then(function(){ console.log(4) }); console.log(5); // 答案是 2 3 5 4 1 // 而不是 2 3 5 1 4 event loop 的概念 Javascript是单线程的,所有的同步任务都会在主线程中执行。 当主线程中的任务,都执行完之后,系统会 “依次” 读取任务队列里的事件。与之相对应的异步任务进入主线程,开始执行。 异步任务之间,会存在差异,所以它们执行的优先级也会有区别。大致分为 微任务(micro task,如:Promise、MutaionObserver等)和宏任务(macro task,如:setTimeout、setInterval、I/O等)。 Promise 执行器中的代码会被同步调用,但是回调是基于微任务的。 宏任务的优先级高于微任务 每一个宏任务执行完毕都必须将当前的微任务队列清空 第一个 script 标签的代码是第…

promise和setTimeout执行顺序 5 天前
;

大家好,我是国平,我做流量已经有16年了。 2010年之前主要在阿里巴巴国际站负责免费流量增长,把海外B2B免费流量的日UV做到几百万。后来成立了一家乙方公司叫光年实验室(以前叫杭州光年),是携程、阿里云等40多家主流的大型互联网公司的流量顾问。另外这些年也没少折腾其他项目,其中做过电商(外贸独立B2C网站)、 做过电商系统(类似有赞)、 做过移动端APP (社交方向)。 来“群响”这段时间,只要能参加的聚会都参加了,听过大家分享很多非常有意思的流量玩法。先不说不同行业的“隔行如隔山”,就是在流量领域,可能有很多种细分领域,大家之间的资讯都是隔离得很厉害的。流量的渠道和玩法是永远在变的,不过也有一些不变的东西,如平台和内容创造者的博弈、大家仰视平台的心态(其实没必要)、以及各种流量玩法的底层模式等。 我首先分享的是过去一个很主流的流量渠道——搜索引擎,看看在现在这个移动互联网时代和新媒体时代,搜索引擎还能如何获取流量。 第一个议题:现在是否还值得做搜索引擎营销 结论是:值得做,不过如果不了解现在国内百度的现状生态,99%的人ROI一定会很差的。至于海外的Google,它依然是大部分人的第一大流量来源。 首先说为什么值得做。 大家可能不知道的是,在搜索引擎,也是65%以上的流量来自移动端,所以不要认为搜索引擎是PC流量的代表。百度的DAU是没有…

我以前在阿里巴巴的流量方法论 5 天前
;

1.安装 $ npm install express –save 2.index.js const express = require(‘express’) const app = express() app.get(‘/’, (req, res) => res.send(‘Hello World!’)) app.listen(3000, () => console.log(‘Example app listening on port 3000!’)) 3.Express 应用程序生成器 官网教程执行npm install express-generator -g 控制台会提示The program ‘express’ is currently not installed. You can install it by typing: apt-get install node-express 改用命令 apt-get install node-express express –version //查看版本 express –view==pug myapp //app目录下生成一个项目目录 cd myapp //进入目录 npm i //安装依赖 node app //运行项目 浏览器输入 host:3000,报错`!!!` i…

express入门 11 天前
;

1.安装 npm install –save sequelize npm install –save mysql2 参考链接:https://www.cnblogs.com/suiyueshentou/p/7592505.html

Sequelize教程 11 天前
;

第一步,将此单元格设置为“自动换行” 第二步,在代码中需要换行的位置输入 “\n”

通过代码生成的excel文件中内容如何换行? 12 天前
;

系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 – (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 cat /proc/swaps 显示哪些swap被使用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 罗列 PCI 设备 lsusb -tv 显示 USB 设备 date 显示系统日期 cal 2007 显示2007年的日历表 date 041217002007.00 设置日期和时间 – 月日时分年.秒 clock -w 将时间修改保存到 BIOS 关机 (系统的关机、重启以及登出 ) shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0…

Linux常用命令大全 15 天前
;

1、把文件解压到当前目录下 unzip test.zip 2、如果要把文件解压到指定的目录下,需要用到-d参数。 unzip -d /temp test.zip 3、解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数 unzip -n test.zip unzip -n -d /temp test.zip 4、只看一下zip压缩包中包含哪些文件,不进行解压缩 unzip -l test.zip 5、查看显示的文件列表还包含压缩比率 unzip -v test.zip 6、检查zip文件是否损坏 unzip -t test.zip 7、将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件 unzip -o test.zip -d /tmp/

解压unzip用法 15 天前
;

this.$message.closeAll()

element关闭message 16 天前
;

1.问题描述 默认情况,v-html中的class并不生效 2.原因 scoped属性导致css仅对当前组件生效(用css3的属性选择器+生成的随机属性实现的),而html绑定渲染出的内容可以理解为是子组件的内容,子组件不会被加上对应的属性,所以不会应用css.解决的话把scoped属性去掉就行了 2.解决方案 类名前添加 参考链接:https://blog.csdn.net/weixin_42412046/article/details/80804285

vue中v-html使用样式 18 天前
;

if(req.headers.origin == config.allowOrigin.int || req.headers.origin == config.allowOrigin.ext){ res.header("Access-Control-Allow-Origin", req.headers.origin); res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With"); res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); res.header("Access-Control-Allow-Credentials", true); //可以带cookies res.header("Content-Type", "application/json; charset=utf-8") res.header("X-Powered-By", ‘3.2….

Access-Control-Allow-Origin设置多个域名 23 天前
;

一.路由懒加载 path:’index’, component:resolve=>require(@/abc,resolve) 二.引入外部CDN 1.src/main.js 各种import部分不变,css部分可以注释掉 2.build/webpack.base.conf.js output同级添加externals output:{}, externals:{ ‘vue’:’Vue’, ‘element-ui’:’ELEMENT’, ‘moment’:’moment’, ‘validator’:’validator’ } 注意事项: 1).cdn 版本的 element-ui 设置的全局变量是 ELEMENT 2).如果单独引入Element会报错,因为Element依赖Vue,vue.js需要在element-ui之前引入,所以vue.js也要改为cnd的引入方式 3.index.html <body> <div id="app"></div> <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script> <script src="http…

vue打包后文件体积及加载速优化 23 天前
;

config文件夹下放置不同环境的配置文件 export NODE_ENV=’default’

node切换环境变量 24 天前
;

1.https://blockflats.com/ 2.https://github.com/greatghoul/remote-working 3.https://www.clouderwork.com/?from=wap

远程办公 2019年11月10日
;

1.子元素中checkbox绑定的v-model属性如果在初始化时候没有值,会导致后面值无法选中,所以如果checkbox绑定的值为后期添加,就需要在list渲染之前进行添加

element checkbox 全选功能失效 2019年11月9日
;
ngnix命令 2019年11月8日
;

1.问题描述 chrome和edge都正常,ie11中打开一片空白,控制台报错 2.处理步骤 安装babel-polyfill问题依旧 所有的函数写法fn(){}改为fn:function(){}问题依旧 main.js中挨个注释所有的第三方组件发现是一个库导致

vue2项目在ie11中显示空白 2019年11月8日
;

<el-date-picker v-model="due_date" type="date" size="small" value-format="yyyy-MM-dd" :picker-options="pickerOptions0" placeholder="pick date"> </el-date-picker> 1.今日以后 pickerOptions0: { disabledDate(time) { return time.getTime() < Date.now() – 8.64e7 } } 2.前一个月 pickerOptions0: { disabledDate(time) { const lastMonthTime = new Date().setMonth(new Date().getMonth() – 1) return time.getTime() > Date.now() || time < lastMonthTime } } 3.后一个月 pickerOptions0: { disabledDate(time) { const lastMonthTime…

element时间选择,今日以后,今日前后一个月 2019年11月6日
;

Compliance testing

服从性测试 2019年11月6日
;

1. Doctype   目前,兼容性最好的Doctype是XHTML 1.0 Strict,事实上Gmail和Hotmail会删掉你的Doctype,换上这个Doctype。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">  <head>   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   <title>HTML Email编写指南</title>   <meta name="viewport" content="width=device-width, initial-scale=1.0"/>  </head> </html&gt…

html email 2019年11月5日
;

1.安装 npm install pm2 -g 后续执行pm2始终提示’command not found’ 执行whereis pm2查看安装位置,发现有多处软链接,逐个删除 sudo rm -rf /usr/bin/pm2 sudo rm -rf /usr/local/bin/pm2 为确保环境干净,同时删除pm2 npm uninstall pm2 -g 再次执行npm install pm2 -g 然后再执行whereis pm2无任何信息输出 whereis node发现node位置为 同时发现pm2被安装在了/usr/local/bin下并且文件夹名字很奇怪` 类似这样符号加空格,猜测此为安装过程中的临时文件 图片中红框中为pm2的安装路径,文件夹名称为何如此奇怪 无奈之下放弃使用全局安装,直接在/usr/local/bin下执行npm install pm2 接下来设置软链接ln -s /usr/local/bin/node_modules/pm2/bin/pm2 /usr/local/bin 参考链接: https://segmentfault.com/q/1010000014016820 https://blog.csdn.net/d597180714/article/details/82619735…

pm2进程管理 2019年11月5日
;

1. function sleep(duration) { return new Promise(function(resolve, reject) { console.log("b"); setTimeout(resolve,duration); }) } console.log("a"); var s = sleep(2000); setTimeout(function(){console.log("wait")},2000); s.then(()=>console.log("c")); 来源:https://blog.csdn.net/nana_9457/article/details/88224472 2. (function test(){ setTimeout(function(){ console.log(4); },0) new Promise(function(resolve){ console.log(1); for(var i=0;i<1000;i++){ i==999&&resolve(); } console.log(2) }).then(function(){ console.log(5) }); conso…

promise与setTimeout的执行顺序 2019年10月28日
;

如果在一段体验的高峰和结尾,体验是愉悦的,那么对整个体验的感受就是愉悦的。这一规律的发现,为经济研究、企业管理、政府决策打开一扇窗户,形成极具震撼力与影响力的服务模式。

峰终定律 2019年10月25日
;

一.什么是对象序列化?   对象序列化是指将对象的状态转换为字符串(来自我这菜鸟的理解,好像有些书上也是这么说的,浅显易懂!);   序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程(来自“百度百科—序列化“,学术性强,略显高端); 二.为什么会有对象序列化?   世间万物,都有其存在的原因。为什么会有对象序列化呢?因为程序猿们需要它。既然是对象序列化,那我们就先从一个对象说起: var obj = {x:1, y:2};   当这句代码运行时,对象obj的内容会存储在一块内存中,而obj本身存储的只是这块内存的地址的映射而已。简单的说,对象obj就是我们的程序在电脑通电时在内存中维护的一种东西,如果我们程序停止了或者电脑断电了,对象obj将不复存在。那么如何把对象obj的内容保存在磁盘上呢(也就是说在没电时继续保留着)?这时就需要把对象obj序列化,也就是说把obj的内容转换成一个字符串的形式,然后再保存在磁盘上。另外,我们又怎么通过HTTP协议把对象obj的内容发送到客户端呢?没错,还是需要先把对象obj序列化,然后客户端根据接收到的字符串再反序列化(也就是将字符串还原为对象)解析出相应的对象。这也正是”百度百科—序列化“中描述的两个作用——存储、传输。 三.JavaScript中的对象序列化   J…

JavaScript之对象序列化详解 2019年10月22日
;

1.ThinkPHP Model 与 Action 用法 一直听说ThinkPHP可以使用Model调取数据库,今日才会用Model,在Action中使用D方法条用Model中函数. D(“Model名字”)->函数名. 例:D(“User”)->getList(); 调用 UserModel.php 文件中 的 function getLiser() 函数,在Model下的函数使用 $this 代表实例化当前 Model名字的表,Model下文件一般以 数据库表名+Model.php 命名

thinkphp 2019年10月21日