leadscloud

Google SEO|外贸营销推广

编写提交 git commit 信息时轻松插入 emoji 的小工具

小工具地址:

Git commit日志基本规范

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

对格式的说明如下:

  • type代表某次提交的类型,比如是修复一个bug还是增加一个新的feature。所有的type类型如下:
  • feat: 新增feature
  • fix: 修复bug
  • docs: 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等
  • style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑
  • refactor: 代码重构,没有加新功能或者修复bug
  • perf: 优化相关,比如提升性能、体验
  • test: 测试用例,包括单元测试、集成测试等
  • chore: 改变构建流程、或者增加依赖库、工具等
  • revert: 回滚到上一个版本

格式要求:

# 标题行:50个字符以内,描述主要变更内容
#
# 主体内容:更详细的说明文本,建议72个字符以内。 需要描述的信息包括:
#
# * 为什么这个变更是必须的? 它可能是用来修复一个bug,增加一个feature,提升性能、可靠性、稳定性等等
# * 他如何解决这个问题? 具体描述解决问题的步骤
# * 是否存在副作用、风险? 
#
# 尾部:如果需要的化可以添加一个链接到issue地址或者其它文档,或者关闭某个issue。

macos下面的终端设置成了 iterm2.app

但 Visual Studio Code 的内置终端还是原来的,导致一些字体图标显示为乱码,如果想让它与 iterm2设置的一样,需要进行以下操作:

下载powerline等宽字体

任意目录下载字体

1
git clone https://github.com/abertsch/Menlo-for-Powerline.git

找到这几个字体,双击安装即可。

设置settings.json

添加如下几行

1
2
"terminal.integrated.shell.osx": "/bin/zsh",
"terminal.integrated.fontFamily": "Menlo for Powerline"

如果希望终端中运行iTerm2,再添加如下两行

1
2
"terminal.explorerKind": "external",
"terminal.external.osxExec": "iTerm.app"

寻找即将过期的域名

https://member.expireddomains.net/domains/pendingdelete/

我可以自己抢注吗?

自己抢注当然可以,一般是利用一些平台的 api,但成功率其实相当低,除非这些域名没什么人抢注。如果一个域名特别热门,不建议自己抢注,几乎不可能成功。

对于一些不太热门的域名抢注有几个注意事项:

  • 选择顶级的域名注册商,而不是代理商
  • 注意注册商的 API 请求限制,尽量多注册几个账号,避免超过限制
  • 先把离注册商服务器近的服务器来注册
  • 定时更新你的服务器时间

提供域名抢注的一些平台

ICANN 公布的注册商列表

https://www.icann.org/registrar-reports/accreditation-qualified-list.html

简要分为以下3个方法:

一、修改时区

1
2
cp /etc/localtime /etc/localtime.bak
ln -svf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改为中国的东八区

1
2
3
4
cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false

与时间服务器同步

ntpdate 0.centos.pool.ntp.org

二、配置新的时间

日期设定:

1
date -s 2013/09/26

时间设定:

1
2
3
4
5
# date -s 11:47:06
# date -s "12:00:00 2013-12-06"
# date -s "12:00:00 20131206"
# date -s "2013-12-06 12:00:00"
# date -s "20131206 12:00:00"

date 是显示的系统OS时间
clock 是显示Bios的时间

查看硬件时间(BIOS的):

1
2
3
4
5
6
7
hwclock [-rw]   
-r 查看现有BIOS时间,默认为-r参数
-w 将现在的linux系统时间写入BIOS中
-s (systohc)将硬件时间调整为和目前的系统时间一样

# hwclock -s
# hwclock -w

当我们进行完 Linux 时间的校时后,还需要以 hwclock -w 来更新 BIOS 的时间,因为每次开机的时候,系统会重新由 BIOS 将时间读出来,所以,BIOS 才是重要的时间依据

1
2
3
4
5
6
# hwclock
20130926日 星期四 114910-1.002805 seconds
修改系统时间(date)后,要同步BIOS时钟,强制把系统时间写入CMOS:
# clock -w
或者
# hwclock -w

三、实现Internet时间同步(这里可以忽略上面两步)

方法1. 开机的时候自动网络校时(首先有自己的时间服务器):

1
2
# cat /etc/rc.d/rc.local 
/usr/sbin/ntpdate -u 192.168.0.2 192.168.0.3 192.168.0.4;/sbin/hwclock -w

后面的ip对应的是局域网内需要时间相同同步的主机。

方法2. 设定计划任务

1
2
3
4
5
# yum -y install ntpdate # 安装时间同步命令
# crontab -l(以下方法任选其一)
*/5 * * * * root ntpdate 210.72.145.44;hwclock -w #每隔半个小时与中国国家授时中心服务器同步一次时间
*/5 * * * * root ntpdate asia.pool.ntp.org;hwclock -w
*/5 * * * * root ntpdate 0.centos.pool.ntp.org;hwclock -w

手动和时间服务器校准时间:

1.首先关闭ntpd服务:

1
# service ntpd stop

2.然后和时间服务器校准:

1
# ntpdate asia.pool.ntp.org

3.同步BIOS时间:

1
# hwclock -w

4.校准后然后开启ntpd服务

1
# service ntpd start

CentOS 安装 python3和 chrome 及 chromedriver

安装 Python3

1
2
yum install epel-release
yum install python36

安装 pip3

1
2
curl -O https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py

安装 chrome

https://intoli.com/blog/installing-google-chrome-on-centos/

RHEL/CentOS 7.X 下安装方法

先查看你的系统版本
cat /etc/redhat-release

编辑文件 /etc/yum.repos.d/google-chrome.repo

vi /etc/yum.repos.d/google-chrome.repo

里面的内容如下:

1
2
3
4
5
6
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

完成安装

1
yum install google-chrome-stable

测试

1
2
3
4
5
6
7
8
9
google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.yahoo.com/```


## 安装 chromedriver

根据你的版本来安装

`google-chrome --version`

http://chromedriver.chromium.org/downloads

1
2
3

下载相应的版本后,解压,把 chromedriver 复制到`/usr/bin/`

cp chromedriver /usr/bin/




Starting MySQL. ERROR! The server quit without updating PID file

一般都是空间满了,磁盘空间不足导致无法写入,删除mysql-bin.0000*文件,在 /usr/local/mysql/var 目录下

磁盘空间充足的情况下还出现这个错误,试试以下办法

禁用 bin-log

vi /etc/my.cnf

把以下注释下

1
2
#log-bin=mysql-bin
#binlog_format=mixed

保存,然后重新启动 mysql

/etc/init.d/mysql restart

其它解决办法

查看mysql进程,并结束 ps -ef | grep mysqld kill -[pid] kill相应进程号

如果有其它情形,比如你对某些权限进行了设置,进行了其它操作,上网搜索,网上关于这个的解决方法很多,需要多尝试,大部分解决方案只针对特定情况。

我上面的解决办法,一般对于以下情景适用:

  • 使用的 lnmp 一键安装包
  • 没有在服务器进行其它尝试,突然出现上面错误
  • 之前是正常的

解压 windows 下压缩的 zip 存档时,如果文件夹名包含中文,可能会出现以下错误

1
2
checkdir error:  cannot create
Illegal byte sequence

解决办法

用 ditto 代替 unzip

1
ditto -V -x -k --sequesterRsrc --rsrc FILENAME.ZIP DESTINATIONDIRECTORY

BetterZip 也无法解决上面的问题,以上方法实测有效

solution: https://github.com/CocoaPods/CocoaPods/issues/7711

转载这篇文章,内容不重要,就是记录下,都说2018是经济下行最严重的一年,虽然之前一直感受不到,但看到这么多文章,联想到自身,还是有点感受的,这两天在 v2ex 看到一篇文章,一个员工请假没一级领导批了,二级领导没有批,在网上发帖吐槽,CTO还回复,当然肯定都是骂 CTO的,生活不易,2018尤其是。 https://www.v2ex.com/t/522131

相信这个冬天,大家都看到了各种被cai和别名为『优化调整』的新闻。自从我发表《终于,这个冬天,我也被cai了》文章后,很多媒体和记者,每天都在加我微信,表示想做一些访谈,关于被cai人员的生活实录。当然我没有应允,一个是没有这么多时间,二个是公号就是对外的窗口,有什么想聊的,或者分享的,也会第一时间在公号同步,不想聊的,自然也不会再陈述。事情总是有聚集效应,很多被cai或优化的老铁,都被聚集到了我周围。一方面,大家处境一样,有共同点。二方面,可以彼此勉励下。索性这次就自己做了一次访谈实录,在征求他们同意后,我以实录方式,向大家还原被cai人员后的生活状态。为保证部分隐私,实录中访谈人均为化名。

人物一:小A

被cai时间:12中旬

年龄:24

那天我正在外面,手机上弹出几条消息,说的是:鱼哥,我刚刚被谈话了,然后进入了被cai名单中。赔偿是N+1,这个月就要签字走人了。目前有没有工作机会推荐?我说:先别慌,工作不要立马去找。先多准备准备。不然机会很容易浪费。小A在深圳,之前也是线下见过的。本科毕业2年了,在一家小公司做Android开发。老家是湖北的。女票是进公司后下手的。不过他们关系公开后,女票换了家公司,所以这次还好不是两人被cai,小A表示目前也是打算年后看机会的,现在相当于加速了他被动出去找工作。突然被抱出公司,被cai那几天很焦虑,虽然没有房贷、还有其他压力,但是感觉总是不太爽。我说,你这还年轻,出去分分钟找一份工作了,先好好准备,后面再投简历。最近一段时间,他都是在复习和准备。元旦后会开始尝试接触一些工作机会。小A表示女票还有家里人目前给他全力支持。他也有自信找一份好工作,毕竟也是打算年后换工作的。

人物二:大B哥

被cai时间:12上旬

年龄:37

相比于其他被cai的老铁而言,大B哥属于年纪稍大的。工作有10多年了,过去实际履历都是很不错,都是在大厂一线开发,后面36岁时,开始转向小公司做了一个小leader。当然这家公司已经过了C轮了。商业模式上其实算比较成熟。他过去是肩负一个全新的项目负责人,包括搭建团队,开发迭代产品。从去年11月开始到18年3月,几乎都是在招人,自己肩负一些开发工作。到12月,产品已经迭代了6个版本。眼看产品一天一天都在变好,相信过不久就可以给公司盈利。大B哥每次和我聊天,都老是让我帮他多推荐点人,项目缺人。并说公司靠谱,有前途,现金流充沛。他以后也不打算换工作,就把这个产品做好、做大、做强就行。是哇,愿景总是美好的,突然,12月上旬,公司宣布不再战略支持他这个项目了,因为快1年了,给公司带来收益不是太明显,管理层决定砍掉这个项目。并开始让大B哥通知他的下属这次优化调整。公司会按法律进行赔偿,大B哥说他当时第一个想到就是那个昨天刚入职的下属,好不容易把他从别的大厂挖角过来胡,今天让他去通知,这对他来说,有点说不出口,于是问,cai员计划是怎样的,HR告知他,是整个业务线都砍掉。也包括他自己。这对大B来说,有点接受不了,当场就反驳说:为什么不等到明年初再做这个决定?HR表示,这个是管理层做的决定,我们也不是太清楚。然后大B哥,去问他的领导,他领导说,互联网公司看的是盈利能力,短期无法盈利,就无法去讲故事忽悠投资人的钱,就无法拿到下一个风投。大B哥说,盈利从来不是一蹴而就的哇,然后负责人告诉他,公司老板就是靠投机主义者起家的,现在钱不好赚,只有节衣缩食才能过冬。这时大B内心一阵心寒,他想起了那个高大伟岸的老板,开会时总是说,兄弟们,我们有的是钱,我们会加大这个战略项目的投入。你们辛苦点,平时没事多加点班。年底了,给大家多发奖金。大B哥曾连续加班3个月,后来病倒了,在医院病床上还在完成关键模块开发。如今,老板一句话,所有努力付诸东流。大B哥说,他那时真有点想不开和想不通。说好的一起越快的玩耍呢。大B哥在这个年龄被cai,相比其他人来说,要挺的压力更大。比如他的房贷,老婆是全职太太,还有两个老人。因为年龄越大,机会越少,要求越高。这一点他是明白的。不过他说他这个年纪,还好认识很多人,人脉相比技能更重要,朋友得知他的情况后,很快就有联系到他,确实有些团队还缺一些负责人,加上他口碑不错,直接和老板聊好后。最近已经入职了某公司,可以说,也是有惊无险。

人物三:小C

被cai时间:12下旬

年龄:25

不同于小A和大B哥那样,小C可能没这么幸运了,他是国内某大厂被优化掉的一波。今年的应届刚毕业,上班还不到一年。他正是属于技术积累期,如今被cai后,他处于很被动。毕业以来,以为可以安安稳稳呆个几年。他说,他平时经常水群,口头说的最多的是,我厂这个很强,我厂那个很强,我厂就是牛逼,等等。他说,他曾经引以为豪的公司,现在对应届生也开闸刀,有点心寒。被cai的不只他一个应届生,过去在别人夸他在某厂时,他总是有很强的优越感。是啊,对于刚出社会的学生,加入大厂的确是一件引以为豪的事情。我告诉小C,我们这种工作有一定年限的人,实际上并不会care这些东西,大厂也好,小公司也罢,都是自己硬,才是最好的背书。我之前也面试一些大厂的,技术越厉害,其实和公司关联度越小。技术不是厉害,反而需要更多公司xx项目来衬托他。厉害的人,一定不是公司塑造的。当然离不开公司平台支持,这个毋庸置疑。小C说,自己目前有点不知所措。出来就是社招了,不是他过去那样参加应届生秋招和春招的身份。项目经验也不是很多。重新找工作,没有底。我说,你先梳理下自己知识,然后查漏补缺。也先多准备准备,过年还有30多天了,实在不行,明年上来再找。他担心明年上来,和他一样优化或者被cai的人会很多,同样岗位,面临竞争更激烈,想在年前敲定岗位。我举了个例子,今年房价这么高,每天还有那么多人在不动产中心交易。你是刚需,管他涨也好,跌也罢,有钱,就应该果断入手哇,没有什么可犹豫的。工作这个也是,岗位总是有的,多和少。你也是要有所储备,不然就是机会很多,一个也抓不住。所以当下,应该静下来总结总结。小C说,天越来越冷,一个人住在出租屋里,出门吃饭都懒的吃。买了一些馒头,将就啃着。我和小C说,我14年在北京连续啃馒头几个月,住几个人合租上下铺。最后不也找到工作了。小C表示,没有告知家里人,主要不想让家里人为自己担心,毕竟这么大的人了。最近很多公司快开年会了,小C电话告诉家里人说,他马上要参加他们公司的年会,到时人超级多,规模非常大,还有很多盛宴,到时发照片給看。他和我表示,自己也想感受一下大厂的年会氛围,毕竟工作第一年。如今只能在开年会那天,去朋友圈盗几张前同事发的图了。因为他说,在父母眼里,他是家里的骄傲。

人物四:D哥

被cai时间:12中旬

年龄:30

D哥是在从传统行业半路转到开发上来的。在27岁时,参加了某马训练营培训,那时某马培训真是一个火热,出去人人都找到工作,个个薪资上w。所以D哥也这时参与到为期4个月培训中了,虽然学费1w多,但是老师说了,出去毕业分分钟就拿这么多工资,D哥说自己在传统行业,也就4000多块钱,长期干下去,即便当了小领导,也就6000-7000,所以他转型做IT。主要还是因为IT收入高。D哥是个能吃苦的人。他说自己在参加某马训练营资格考试时,每天学基础学到晚上2点多,白天早上起来继续学习。后来通过了某马训练营入学资格。在为期4个月学习时,他表示自己过去这么多年,都没有那么努力过,我理解,也许当一个人确实想改变自己时,再大的困难也会克服。后面4个月结束后,确实像某马宣传那样大家都找到了待遇不错的工作,当然班里部分同学是用假经验找到的,后面大家都真正工作后,就有了真实工作经验。但是也有不少人因为学历造假被公司直接开除也有,主要是部分公司必须要本科以上文凭,不得已,有些同学为了进去,但是却只有专科文凭,所以才弄了个假本科证。D哥说自己比较老实,去面试就直说自己半路转行的,学习和积累近一年,优点就是能抗压,学习能力强。当然大部分公司对于他这个说法,还是不感冒的,毕竟企业招人是干活的,尽量找的是有较多经验的人。但是他说,有一家初创公司接纳了他,他猜主要他对工资要求不是太高,为人比较老实和靠谱。初创公司前期也是摸石头过河。虽然没有班里其他人薪资高,但D哥很满足,毕竟这是转型的第一步。7800的月薪,让他已经对互联网充满信心。过了1年,他跳槽去一家中型企业了,因为觉得人总是要一步一步改变,这是我在D哥身上看到的。但是中型企业今年也过得很艰难。加上各方面对D哥的综合评价,虽然他努力,但是一些东西确实产出有限。在cai员指标名单中,自然也就有了他。当然他也直言不讳说,有部分原因也是职场潜规则导致。巴拉巴拉一堆。他目前表示,暂时先不找工作,先回家好好过个年。因为还要完成和对象结婚摆酒的喜事,要操办,明年过完年,再好好准备。摆酒的事情大于工作。D哥表示,工作过完年应该能找到,我都30岁了,娶媳妇生娃是头等大事。对于D哥,一路吃过苦、受过挫折过来的,尽管被cai了,我相信他内心早已经埋下韧性的种子。

听完了实录,很多人可能会思考,不同的人,不同经历,状态、看法,采取方式都是不同。我想这也许是构成了我们多彩的世界吧~

去年今日,婚姻大事。今日已经又回到上海了,岁月流转,感觉时间越来越快了。毕竟不是孤身一人在上海了,有亲爱的老婆在身边,即使再远,也有守望的人。

三天假期,去了南京二天,一天逛了上海。节日的气氛不是很浓了,但月亮还是那么远。


南京总统府如此之小,又如此之大,可以装的下整个政府系统。


明孝陵,的确可以称得上中国最大的还保存较好的陵墓,其实地面上的建筑也只有石头保存的较好,你能看到的任何一颗树都不会超过100年。


中山陵比孝陵的位置要高,连里面的石碑也要特意高过孝陵,以后任何人的墓也不能超过它。


南京博物院,里面有丰富的文物展示,比我去过的任何博物馆都多,即使是在北京也没见这么多过。

二天的时间看的匆匆忙忙,但避过了十一的人流高峰,终于是到了这个一直想来的城市。



上海的繁华还是挺美的。

目前来说,随着html5的兴起,大部分网站已经可以抛弃jQuery了,但仍有部分行业是离不开它的,主要为了兼容IE浏览器,有很多的jQuery插件也导致它不太可能立即消失。

但对于大部分网站来说,不使用jQuery一样可以做到同样的效果,原生的JS目前已经可以和jQuery一样方便了。

我09年接触jQuery到现在也差不多快10年了,看着前端日新月异的变化,中间也错失了很多,在这缤纷变化的世界里,有时一旦不愿意接受变化,就会慢慢的被淘汰。很多3-5年的技术人员,还是一直用着jQuery,对于新的技术没有积极去学习尝试,导致离主流技术越来越远,自己的竞争力也在下降。

最近看到一篇关于jQuery的文章,jQuery的确过时了,虽然一时也不会死掉,但我们要看到这种趋势。

Polyfill.io

自动化的 JavaScript Polyfill 服务

Polyfill 可以为旧浏览器提供和标准 API 一样的功能。比如你想要 IE 浏览器实现 Promise 和 fetch 功能,你需要手动引入 es6-promise、whatwg-fetch。而通过 Polyfill.io,你只需要引入一个 JS 文件。

1
<script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script>

Polyfill.io 通过分析请求头信息中的 UserAgent 实现自动加载浏览器所需的 polyfills。

Polyfill.io 有一份默认功能列表,包括了最常见的 polyfills:document.querySelector、Element.classList、ES5 新增的 Array 方法、Date.now、ES6 中的 Object.assign、Promise 等。

你也可以通过传递 features 参数来自定义功能列表:

1
2
3
4
<!-- 加载 Promise&fetch -->
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Promise,fetch"></script>
<!-- 加载所有 ES5&ES6 新特性 -->
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=es5,es6"></script>

Polyfill.io 还提供了其他 API,具体请查阅官方文档:

以下是原文:

免责声明
本文是仓促之作,从构思到成文不足半天。文中没有提到很多优秀的库和框架,提前在此致歉,因为没时间搜集整理。但这不代表笔者对这些库和框架没有敬意。实际上,包括jQuery在内,我的敬意是给这些名字背后整个社区和贡献者的,当然包括库和框架的最初编写者,比如John Resig。
另外,时间所限,本文粗略、不严谨,甚至可能不客观地描绘了前端技术的发展脉络。对前端发展走向的这个判断,仅代表本人自己的主观认知,并非业界共识,恳请广大读者了解。千万不要以本文观点作为评价前端技术发展的依据。谢谢!

作者:奇舞周刊
链接:https://juejin.im/post/5b5af8565188251b186bcfcb
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Github抛弃jQuery

2018年7月25日,Mislav Marohnić发了一条推文,宣布GitHub.com前端已经彻底删除了jQuery(下图)。而且,还自问自答地解释(低调炫耀),删除jQuery之后也没用其他框架,而是全部依赖原生API。

很多人不知道,我和jQuery颇有渊源。大概11年前(2007年),因为“疯狂迷恋”jQuery,我在国内率先翻译了jQuery 1.1的文档。后来有同好基于我翻译的版本继续翻译了jQuery新版文档,还不忘记在“关于”中提到我(http://hemin.cn/jq/about.html):

居然称我为“国内jQuery的引路人”,惭愧。但在当时jQuery文档奇缺的情况下,我翻译的中文版应该是帮到了不少同学的。后来,我还翻译了Learning jQuery(《jQuery基础教程》)。
正因与jQuery的这个不解之缘,GitHub.com彻底抛弃jQuery的消息才触动我想了一些事。于是,决定写这篇小文,以飨读者(但愿有用,哈哈)。

jQuery的辉煌

jQuery最初诞生于2006年8月,作者是John Resig(https://zh.wikipedia.org/wiki/JQuery)。10多年前,网页开发者(当时还没有“前端”这个概念)深受浏览器不兼容性之苦。以jQuery为代表的一批JavaScript库/框架应运而生:

  • Dojo
  • jQuery
  • MooTools
  • Prototype
  • Yahoo! User Interface Library (YUI)
  • Script.aculo.us

这些库有的像jQuery一样是主打通用性,比如Dojo、Prototype;有的则走更专业化的路线,比如YUI(组件化)和Script.aculo.us(动画交互)。从通用功能看,这些库大都提供了如下特性:

  • 语法糖:链式调用、实用函数
  • 选择元素:基于各种标准选择符和库自定义的选择符,以及通过回调进行筛选
  • 操作DOM:创建和操作元素,乃至各种属性操作
  • 处理事件:ready事件及各种注册和触发事件的方法,乃至委托
  • 动画:基于animate的CSS属性动画,以及内置动画方法
  • Ajax:封装原生的XMLHttpRequest API,简化请求方法及回调处理

一批宣传和推广这些库和框架的书籍相继面世,迅速推动了这些库的采用。2010年出版的DOM Scripting, 2nd(《JavaScript DOM脚本编程艺术(第2版)》)就是其中之一。这本书专门有一个附录,介绍当时流行的库,主推jQuery。

当时jQuery官网的自我描述是这样的:

“a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.”

不错,正是这样。jQuery凭借其选择器方法、面向集合的链式调用、对事件和Ajax的完善支持、简单而强大的动效等独有优势,迅速风靡,成为几乎所有网站开发必备的JavaScript库,乃至开创了jQuery编程风格。

开发者选择jQuery的理由简单直接:

  • 跨浏览器
  • 简单高效
  • 稳定可靠
  • 插件丰富

2011年新版的“犀牛书”第6版——JavaScript: The Definitive Guide, 6th甚至拿出第19章整整64页篇幅隆重讲解了jQuery(“Chapter 19. The jQuery Library”)。

jQuery从此走向鼎盛和辉煌。后来,随着前端交互越来越重和移动应用的普及,jQuery UI、jQuery Mobile相继面世。

时至今日,jQuery仍然在支撑着数以千万计各种规模网站的运作——尽管聚光灯下已经不常看到她的身影。

历史的选择

最近10年,是“前端行业”有史以来发展最快的10年。

移动社交时代的到来不仅没有让桌面Web失色,反倒刺激了Web标准的迅猛改进。HTML5不仅带来了极大的向后兼容性,也带来了更丰富的原生DOM API。CSS从CSS3开始走上模块化的快车道,文本样式、排版布局、媒体查询,各种新模块让人目不暇接。

各大主流浏览器也在快速跟进,Firefox、Chrome、Opera、Safari、IE乃至Edge,都在积极重构甚至重写内核,争做支持Web标准的“楷模”。在这个大背景下,各大互联网公司不断调高兼容的IE版本号,从8到9到10,再到11。

当然,还有ECMAScript语言标准。自从划时代的ES6(ECMAScript 2015)发布之后,JavaScript终于真正开始摆脱“玩具”语言的尴尬境地。更重要的,从ES6起,ECMAScript也进入了快速迭代、每年发一版的节奏。ES7、ES8,以及ES9,每次都会给这门语言注入更强大的语言特性。

与此同时,Node.js和Babel等服务端运行时及转译工具的出现,也让前端工程化,以及向传统工业级软件开发最佳实践靠拢的速度日益加快。

2012年,笔者在图灵社区翻译过一篇文章“JavaScript宝座:七大框架论剑”(http://www.ituring.com.cn/article/8108)。当时的“七大框架”是:

  • Backbone
  • Knockout
  • Spine
  • CanJS
  • Ember
  • AngularJS
  • Batman
  • Meteor

后来,谷歌主打SPA(Single Page Application,单页应用)的Angular终于一枝独秀。不久,脸书推出的“在JS里写HTML一样优雅”的React则一路高歌猛进。最终,集各家所长且简单易用的Vue横空出世。

前端开发已经从后“刀耕火种”时代的“农业文明”,逐渐进化为以大规模、可扩展、规范化、自动化为特征的准“工业文明”。
俗话说:“皮之不存,毛将焉附。”随着时代变迁、技术进步,jQuery赖以存在的环境正逐渐消失。如前所述,新的环境催生了一批框架新秀。曾经辉煌的jQuery终于走到了可以华丽谢幕的时刻。

几句忠告

8年前,DOM Scripting, 2nd在推荐开发者使用前端库时,语重心长地说过下面这段话:

“开发中使用库当然没问题,但前提是不要仅仅只知道怎么使用,更要知道它的工作原理。如果不能超越这些库,那在这些库变成你的拐杖之时,你也会随之“残废”。在使用某个库之前,一定要花时间学习掌握JavaScript和DOM。我们从一开头就强调“知其所以然”的重要性,告诉大家不能满足于仅仅“知其然”。如果使用了库,却不晓得其背后原理,无论对自己还是对产品都将是有害的。”

2012年,从后端转前端不久的Ray Nicholus接手了一个跨浏览器文件上传库(https://github.com/FineUploader)的维护和开发工作。他的第一反应就是用jQuery重写这个库。然而,用户反对引入任何对其他库的依赖。结果他只能使用原生浏览器的API。那又怎样呢?他发现,原来放弃jQuery的写法比自己想象的要容易。

2014年,Ray发表了:“You Don’t Need jQuery!”系列博客(https://blog.garstasio.com/you-dont-need-jquery/)。2016年,他的著作Beyond jQuery (Apress,https://www.amazon.com/dp/1484222342/)出版。Ray建议,学习前端开发,本来应该是这个顺序:

  1. 学习JavaScript
  2. 学习Web API
  3. 学习jQuery(或其他框架/库)

但很多人实际上是从#3开始的,然后过了很久才开始#1和#2(甚至从来没想过#1和#2)。结果就是“只知其然,而不知其所以然”。

如今,时移世易,jQuery即将谢幕,新一代组件化开发框架粉墨登场。然而,“太阳底下没有新鲜事。”不管是使用Angular,还是React,抑或是Vue,还是要真正理解它们背后的工作原理。
(为避免广告嫌疑,我在这里就不着重推荐360导航前端的刘博文同学即将出版的《深入浅出Vue.js》一书了,哈哈哈~~,因为没有封面可以展示。)

尾声

jQuery作为第一代前端库的优秀代表,成就了今天Web的繁荣,也成就了一代Web开发者。作为“国内jQuery的引路人”(这个帽子是别人给的,我借用一下,哈哈),我个人对jQuery的感情是复杂的。既不希望它离开,又希望它早点离开。我想,这应该也是很多早期接触jQuery的前端开发者的心声吧。

作者:奇舞周刊
链接:https://juejin.im/post/5b5af8565188251b186bcfcb
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0%