Web前端技术(不断更新中)

时间:2021-07-23 04:25:52

(PS:因为我是先在京东CF研发知识管理平台上写了之后copy过来的,所以有些排版样式问题,还请见谅)


第一章 技术与规范
1.Node

Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。相当与JDK。

Github:

https://github.com/nodejs/node

官网教程:

https://nodejs.org/en/

其他教程:

http://nqdeng.github.io/7-days-nodejs/

http://www.imooc.com/learn/348

2.Npm

NPM(node package manager)是 Node.js 的包管理和分发工具。它类似于PHP的Composer,Ruby的gem,Python的pip,Java的Maven……它可以让 JavaScript 开发者能够更加轻松的共享代码和共用代码片段,并且通过npm管理你分享的代码也很方便快捷和简单。截至目前 最新的稳定版 npm 是 3.3.12。

Github:

https://github.com/npm/npm

官方网站:

https://docs.npmjs.com

官方教程:

https://docs.npmjs.com/getting-started

其他教程:

https://segmentfault.com/a/1190000005799797

http://www.cnblogs.com/kelsen/p/4947859.html

http://www.runoob.com/nodejs/nodejs-npm.html

3.Gulp

gulp是基于Nodejs的自动任务运行器, 能自动化地完成 javascript、coffee、sass、less、html/image、css 等文件的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤。在实现上,它借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接变成后一级的输入,使得在操作上非常简单。

Github:

https://github.com/gulpjs/gulp

官方网站:

http://gulpjs.com/

官方文档:

https://github.com/gulpjs/gulp/blob/master/docs/API.md

其他教程:

http://www.cnblogs.com/2050/p/4198792.html

http://www.tuicool.com/articles/FJVNZf

https://www.cnblogs.com/Darren_code/p/gulp.html

4.Bower

Bower是一个客户端技术的软件包管理器,它可用于搜索、安装和卸载如JavaScript、HTML、CSS之类的网络资源。其他一些建立在Bower基础之上的开发工具,如YeoMan和Grunt。

Bower与Npm:

简单的说,npm是进行后端开发中,使用的模块安装工具,而bower,是前端的模块安装工具。比如,在安装express,socket.io时,当然使用的是npm,那么比如bootstrap,jquery等前端框架,需要使用bower,npm 是伴随 Node.js 出现的一个包管理器,最开始只能支持 Node.js 的模块管理,但是后来, npm 官网经过一次改版,打出的口号是,javascript 的包管理器,所以,其已经不在局限于是Node.js 的模块管理了,已经通用到了所有 js 的包管理工具了,可以说,前后通吃了。bower 的话,从一开始,就是专门为前端表现设计的包管理器,一切全部为前端考虑的。npm 和 bower 的最大区别,就是 npm 支持嵌套地依赖管理,而 bower只能支持扁平的依赖(嵌套的依赖,由程序员自己解决)。嵌套依赖,指的就是,你依赖的软件包,还有它自己的依赖,好像摘葡萄,一摘一大串。在服务器环境的时候,这并没什么关系,因为存储空间够大,一切代码都是本地运行,只要解决完依赖就行了,但是到了用户产品的浏览器里,就很成问题了,你不能让用户去下载好几M的js代码,那就太糟糕了。在这个情况下,就需要程序员自己手动解决用到的类库的嵌套依赖问题。比如确保各种各样的插件都依赖同一个版本的jQuery。为什么有很多项目 bower 和 npm 都用呢,那是因为要用 bower 管理前端的包,而用 npm 去管理一些后端的包和构建工具,例如,yeoman,grunt,gulp,jshint 等等等等。所有的包管理器,都有自己的弊端,要视需要选用对自己的项目最合适的。

Github:

https://github.com/bower/bower

官方网站:

https://bower.io/

官方教程:

https://bower.io/#getting-started

其他教程:

https://segmentfault.com/a/1190000002971135

5.Browserify­

browserify是一个编译工具,通过它可以在浏览器环境下像nodejs一样使用遵循commonjs规范的模块化编程。你可以使用browserify来组织代码,也可以使用第三方模块,不需要会nodejs,只需要用到node来编译,用到npm来安装包.browserify模块化的用法和node是一样的,所以npm上那些原本仅仅用于node环境的包,在浏览器环境里也一样能用。

Github:

https://github.com/browserify/browserify

官方网站:

http://browserify.org/

官方教程:

https://github.com/substack/node-browserify#usage

学习资料

http://www.tuicool.com/articles/IFvQ3qv

https://segmentfault.com/a/1190000002941361

http://www.cnblogs.com/liulangmao/p/4920534.html

6.Browsersync

Browsersync能让浏览器实时、快速响应您的文件更改(html、js、css、sass、less等)并自动刷新页面。更重要的是 Browsersync可以同时在PC、平板、手机等设备下进项调试。您可以想象一下:“假设您的桌子上有pc、ipad、iphone、android等设备,同时打开了您需要调试的页面,当您使用browsersync后,您的任何一次代码保存,以上的设备都会同时显示您的改动”。无论您是前端还是后端工程师,使用它将提高您30%的工作效率。

Github:

https://github.com/BrowserSync/browser-sync

教程:

http://www.browsersync.cn/

7.Less-.less,Saas-.scss

Sass,Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。Less 可以运行在 Node 或浏览器端。

8.Es6

ECMAScript 6 (以下简称ES6)是JavaScript语言的下一代标准。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015.也就是说,ES6就是ES2015。

教程:

http://es6.ruanyifeng.com/

https://segmentfault.com/a/1190000004365693#articleHeader6

9.Babel

Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。

Github:

https://github.com/babel/babel

官方网站:

http://babeljs.io/

教程:

http://babeljs.cn/

10.Q.js

Promise是抽象异步处理对象以及对其进行各种操作的组件。JavaScript的异步执行都是以回调函数来执行的。Promise可以简化回调并提供链式异步调用。

Github:

https://github.com/kriskowal/q

教程:

http://liubin.org/promises-book/

Github:

https://github.com/kriskowal/q

11.Express.js

基于 Node.js 平台,快速、开放、极简的 web 开发框架。

Github:

https://github.com/expressjs/express

官方网站:

http://expressjs.com/

中文网:

http://www.expressjs.com.cn/

12.Jquery Datatables

Datatables是一款基于jQuery表格插件。

Github:

https://github.com/DataTables/DataTables

官方网站:

https://www.datatables.net/

13.Moment.js

JavaScript 日期处理类库。

Github:

https://github.com/moment/moment

14.Bootstrap-datepicker

日期时间选择器。

Github:

https://github.com/uxsolutions/bootstrap-datepicker

官方文档地址:

http://bootstrap-datepicker.readthedocs.io/en/latest/index.html

中文网文档:

http://www.bootcss.com/p/bootstrap-datetimepicker/index.htm

15.City-Picker.js

Github:

https://github.com/tshi0912/city-picker

城市三级联动选择器。

16.Echart

图标类控件。

Github:

https://github.com/ecomfe/echarts

官方地址:

http://echarts.baidu.com/index.html

17.MockJS

方便前端生成模拟数据,它基于 数据模板 生成模拟数据,基于 HTML模板 生成模拟数据,拦截并模拟 ajax 请求。

Github:

https://github.com/nuysoft/Mock

官方地址:

http://mockjs.com

18.Fontawesome

Font Awesome 字体为您提供可缩放矢量图标,它可以被定制大小、颜色、阴影以及任何可以用CSS的样式。

Github:

https://github.com/FortAwesome/Font-Awesome

官方地址:

http://www.fontawesome.com.cn/

19.Handlebarsjs

Handlebars.js是一套js模版引擎,是一款基于Jquery的插件,以json对象为数据源,支持逻辑判断、循环等操作,同时具有非常好的扩展性,体积60KB左右

Github:

https://github.com/wycats/handlebars.js/

教程:

http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html

http://keenwon.com/992.html

http://www.ghostchina.com/introducing-the-handlebars-js-templating-engine/

20.Bootstrap Search Suggest

21.Daterangepicker

22.pnotify

一个仿桌面弹窗的提示插件

Github:

https://github.com/sciactive/pnotify

第二章 gulp自动化构建组件(FEZ项目实践)

1.node-hbsfy和node-pugify

borwserify 支持 require handlebars模板及jade模板

Github:

https://github.com/epeli/node-hbsfy

https://github.com/domenic/jadeify

2.node-glob

使用glob来返回目录中所有子文件(文件或文件夹)

Github:

https://github.com/isaacs/node-glob

教程:

http://www.cnblogs.com/liulangmao/p/4552339.html

glob通配符释义:

http://blog.****.net/zhuchuji/article/details/51297819

3.gulp-inject

CSS和WebComponent 注入插件,将它们注入到index.html文件中(官方解释),把css,js这些静态文件注入到html文件中,不需要手动添加。

Github:

https://github.com/klei/gulp-inject

4.main-bower-files

通过读取并分析bower.json文件里override属性里main路径下定义的插件及相关依赖,返回一个文件数组

Github:

https://github.com/ck86/main-bower-files

5.vinyl-buffer

将虚拟的流文件转换为可以使用的的buffer文件

Github:

https://github.com/hughsk/vinyl-buffer

6.gulp-if

为功能执行添加条件判断,跟程序语言中的if是相同语义

Github:

https://github.com/robrich/gulp-if

7.browserify-shim

browserify-shim 是一个转换工具,它会读取 package.json 文件的 “browserify-shim” 属性,将不遵循node风格的commonjs的输出写法的模块包转换成browserify可以读懂的模块包

Github:

https://github.com/thlorenz/browserify-shim

8.babel-polyfill

IE8兼容包

Github:

https://github.com/babel/babel/tree/master/packages/babel-polyfill

9.vueify

在browserify中编辑vue代码

Github:

https://github.com/babel/babel/tree/master/packages/babel-polyfill

10.watchify

Github:

https://github.com/browserify/watchify

11.gulp.spritesmith

小图(图标)合成精灵图,拼接图片并生成样式表,并且还能输出SASS,Stylus,LESS甚至是JSON

Github:

https://github.com/twolfson/gulp.spritesmith

12.gulp-filter

在虚拟文件流中过滤特定的文件

Github:

https://github.com/sindresorhus/gulp-filter

13.gulp-order

The gulp plugin gulp-order allows you to reorder a stream of files using the same syntax as of gulp.src,这是官方定义,简单来说,就是按给定的顺序整理需要处理的文件集。

Github:

https://github.com/sirlantis/gulp-order

14.gulp-concat 与 gulp-concat-css

合并js与css文件,比如合并多个js或css到一个文件

Github:

https://github.com/contra/gulp-concat

https://github.com/mariocasciaro/gulp-concat-css

15.rework

Github:

https://github.com/reworkcss/rework

16.del

使用glob匹配规则来删除文件或文件夹

Github:

https://github.com/sindresorhus/del

17.gulp-less和gulp-sass

编译less和sass文件的gulp插件

Github:

https://github.com/stevelacy/gulp-less

https://github.com/dlmanning/gulp-sass

18.gulp-postcss

PostCSS把扩展的语法和特性(比如变量,混入,未来css预发,内联图像等)转换成现代的浏览器友好的CSS

Github:

https://github.com/postcss/gulp-postcss

19.gulp-usemin(不推荐使用)

根据预先在html文件(或者其它模板/视图中的文件)中声明好的blocks来执行一系列任务(例如合并文件并重全名、排除一些只在开发过程中引入的脚本以及将css和js中的代码提取出来内嵌在html文件中)来处理未优化的样式和脚本

Github:

https://github.com/pursual/gulp-usemin

20.gulp-htmlmin

压缩html,可以压缩页面javascript、css,去除页面空格、注释,删除多余属性等操作

Github:

https://github.com/jonschlinkert/gulp-htmlmin

21.gulp-imagemin

压缩常见的图片格式,比如PNG,JPEG,GIF,甚至是SVG图片

Github:

https://github.com/sindresorhus/gulp-imagemin

22.gulp-clean-css

压缩css文件,减小文件大小,并给引用url添加版本号避免缓存

Github:

https://github.com/scniro/gulp-clean-css

23.gulp-uglify

专业压缩js文件,减小文件大小

Github:

https://github.com/terinjokes/gulp-uglify

24.gulp-rename

修改文件名称,比如有时我们需要把app.js改成app.min.js

Github:

https://github.com/hparra/gulp-rename

25.gulp-util

gulp工具包,可以打log啊,提示语颜色啊,提示音啊等等一些操作,不过一般就是用来打印日志。。。

Github:

https://github.com/gulpjs/gulp-util

26.gulp-rev

根据静态资源内容,生成md5签名,打包出来的文件名会加上md5签名,同时生成一个json用来保存文件名路径对应关系

Github:

https://github.com/sindresorhus/gulp-rev

27.gulp-rev-replace

配合 gulp-rev 使用,拿到生成的 manifest。json 后替换对应的文件名称

Github:

https://github.com/jamesknelson/gulp-rev-replace

28.gulp-sourcemaps

处理 JavaScript 时生成 SourceMap

Github:

https://github.com/gulp-sourcemaps/gulp-sourcemaps

29.gulp-svg-symbols

合并SVG图标

Github:

https://github.com/Hiswe/gulp-svg-symbols

30.gulp-inject-string

在页面中插入内容

Github:

https://github.com/mikehazell/gulp-inject-string

31.gulp-replace

字符串替换的gulp 插件

Github:

https://github.com/lazd/gulp-replace

32.gulp-flatten

删除或替换文件的相对路径

Github:

https://github.com/armed/gulp-flatten

33.lazypipe

Lazypipe允许您创建一个不可变的、延迟初始化的管道。能在需要重用部分管道的环境中使用,比如gulp。它可以创建一些工厂来把你经常使用的功能 stream 链分离出来,变成一个通用插件功能链,然后放入需要这个链的链路上

Github:

https://github.com/OverZealous/lazypipe

34.event-stream

流操作,还不大清楚其原理

Github:

https://github.com/dominictarr/event-stream

35.gulp-autoprefixer

给CSS添加前缀,解决某些CSS属性不是标准属性,有各种浏览器前缀的情况,灰常有用

Github:

https://github.com/sindresorhus/gulp-autoprefixer

36.gulp-posthtml

html预处理 html中的rem转换等

Github:

https://github.com/posthtml/gulp-posthtml

37.postcss-pxtorem

CSS 转换 pxrem

Github:

https://github.com/cuth/postcss-pxtorem

38.envify

Github:

https://github.com/hughsk/envify

39.vinyl-source-stream

在gulp或虚拟文件的流开始使用传统的文本流,对现有的npm流有更好的互操作性

Github:

https://github.com/hughsk/vinyl-source-stream

40.babelify

Github:

https://github.com/babel/babelify

41.cssify和lessify

borwserify 支持 require css样式及less样式

Github:

https://github.com/davidguttman/cssify

https://github.com/dstokes/lessify

42.preprocessify

条件注释/主要区分开发和上线环境,是否加载mock数据

Github:

https://github.com/bibliolabs/preprocessify

43.lodash

具有一致接口、模块化、高性能等特性的 JavaScript 扩展工具库

Github:

https://github.com/lodash/lodash

官方网站:

https://lodash.com/

44.gulp-size

压缩字体文件

Github:

https://github.com/sindresorhus/gulp-size

45.gulp-size

压缩字体文件

Github:

https://github.com/sindresorhus/gulp-size

46.imagemin-pngquant

压缩png图片文件

Github:

https://github.com/sindresorhus/gulp-size

47.gulp-rev-delete-original

删除由gulp-rev或gulp-rev-all重写的原始文件

Github:

https://github.com/nib-health-funds/gulp-rev-delete-original

48.gulp-rev-css-url

提取样式中的相对路径

Github:

https://github.com/galkinrost/gulp-rev-css-url

49.gulp-rev-css-url

提取样式中的相对路径

Github:

https://github.com/galkinrost/gulp-rev-css-url

50.gulp-strip-debug

去掉console代码

Github:

https://github.com/sindresorhus/gulp-strip-debug

51.gulp-cdnify

CDN地址替换

Github:

https://github.com/kaiqigong/gulp-cdnify

第三章 React
1.React

react官方文档:

https://reactjs.org/docs/hello-world.html

react基础入门:

http://www.ruanyifeng.com/blog/2015/03/react.html

2.react route

基础入门:

http://www.ruanyifeng.com/blog/2016/05/react_router.html

3.fetch-jsonp

4.isomorphic-fetch

5.react-router-dom

6.PubSubJS

Github:

https://github.com/mroderick/PubSubJS

7.react-dnd

8.react-draggable

9.react-redux

10.nerv

一个基于 Virtual DOM 的类 React 组件框架(jd自己的凹凸实验室研发的)

官方地址:

https://nerv.aotu.io/

第四章 Vue:
1.2018 年你需要知道的 Vue.js 组件库,完善你的应用开发

http://blog.****.net/VhWfR2u02Q/article/details/78859493

2.基于vue的browserify的项目模板:

https://github.com/keepfool/vue-tutorials/tree/master/05.OfficialTemplates/my-browserify-simple-demo

第五章 Webpack:
1.基础入门

http://www.jianshu.com/p/42e11515c10f

第六章 CSS:
1.箭头消息提示框样式

http://www.cssarrowplease.com/

2.Flex 布局教程:语法篇

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool

3.Flex 布局教程:实例篇

http://www.ruanyifeng.com/blog/2015/07/flex-examples.html

第七章 UI:
1. Ant Design of React

alibaba的蚂蚁金服开发的开箱即用的高质量 React UI组件

官方教程:

https://ant.design/docs/react/introduce-cn

2.element

Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库

官方教程:

http://element-cn.eleme.io/#/zh-CN/component/installation

第八章 分散技术:
1. __filename

在Node.js中,预定义了两个变量:用于获取当前模块文件名的__filename变量与用于获取当前目录名的__dirname变量。在任何模块文件内部,可以使用__filename变量获取当前模块文件的带有完整绝对路径的文件名。

2.fis

3.PostCSS

4.Prettier1.0

JS程序员格式化代码神器!

5.Swagger

是一个简单但功能强大的API表达工具,使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等

6.vs code

一款免费,小巧,好看的编辑器,微软出品

官方教程:

https://code.visualstudio.com/docs

7.yarn

8.async-validator

第九章 技术文章链接:
1.下一代 Web 应用模型 — Progressive Web App

https://zhuanlan.zhihu.com/p/25167289?from=timeline&isappinstalled=0

2.最全的常用正则表达式大全

https://www.cnblogs.com/zxin/archive/2013/01/26/2877765.html

3.Git使用入门

https://mp.weixin.qq.com/s/xoyQ4TzVKLQb2VjZJLUqFQ

4.antV 3.0(G2,F2,G6)发布

https://antv.alipay.com/zh-cn/vis/blog/antv-3.0-releasing.html

5.CSS工程化演进

https://mp.weixin.qq.com/s/1QkGy9UbRF3FtyBllmJdmA

6.【第1162期】2018 要学习的优秀 JavaScript 库与知识

http://mp.weixin.qq.com/s/qyyDZkfjy57njuncq3_i1w

7.【第1154期】2017 年 JavaScript 发展状况回顾

http://mp.weixin.qq.com/s/5phdFz4W3Q2cUYiyWgwK9A

8.【第1152期】2017 JavaScript 调查报告概述

http://mp.weixin.qq.com/s/SqmFD0VKiP40q8iJzkE4kA

9.【第1165期】H5动画:轨迹移动

https://mp.weixin.qq.com/s/ySC69C3lIIzRDwmOs-pGYw

10.【第1164期】从前端技术到体验科技

http://mp.weixin.qq.com/s/cIM4KA-4EaT3wdxLuIpBBg

11.【第1117期】萌新也能懂的现代 JavaScript 开发

https://zhuanlan.zhihu.com/p/31044340

12.谷歌大脑2017总结(Jeff Dean执笔,干货满满,值得收藏)

http://mp.weixin.qq.com/s/a0HFS95ZXiZXNh5qXbmUBA

13.谷歌大脑2017总结 第二弹(Jeff Dean执笔,干货满满,值得收藏)

https://mp.weixin.qq.com/s/RazWCsBY_dF1VR0JTYIjsw

14.【第1167期】npm 2017 JavaScript 框架报告之 React 生态系统分析

https://mp.weixin.qq.com/s/Ltw1-SsW4IOHr0HcXtUqDQ

15.【第1168期】字符编码的故事

http://mp.weixin.qq.com/s/P0PbNjajkILusn533mNqVA

16.【第1169期】如何有效地做算法题

http://mp.weixin.qq.com/s/Zf__tGoVB_iONKL0lTg1Ew

17.【第1171期】npm 2017 JavaScript 框架报告之后端框架

http://mp.weixin.qq.com/s/w5vccN2CnVO82PSOp75-KA

18.解决ajax跨域的方法原理详解

http://blog.****.net/wuliyun88/article/details/50521725

19.Chrome控制台使用详解

http://www.codeceo.com/article/chrome-console.html

20.【第1172期】HTML 5.2 有哪些新内容?

https://github.com/xitu/gold-miner/blob/master/TODO/whats-new-in-html-5-2.md

21.【第1173期】npm 2017 JavaScript 框架报告之前端框架

https://mp.weixin.qq.com/s/AD_7nOCBBZxmfTKlF0fN2g

22.【第790期】构建可靠的前端异常监控服务-采集篇

http://mp.weixin.qq.com/s/LGbMXauSuuGWcvqazjXWjQ

23.【第1175期】2017年 JavaScript 明星项目

https://risingstars.js.org/2017/zh/#section-framework

24.【第1037期】美团点评点餐前后端分离实践

https://zhuanlan.zhihu.com/p/28704974

25.【第733期】Yarn:一个新的JavaScript包管理器

http://mp.weixin.qq.com/s/FnCa0wqdHKQN4syrPIPSAA

26.【第1178期】WebSocket:5分钟从入门到精通

http://mp.weixin.qq.com/s/rKvoevbSmtAUoCgOH2lZdQ

第十章 其他文章链接:
1.【第1170期】如何看待员工跳槽

https://mp.weixin.qq.com/s/r8f_p0nSbV2ZAXI7xLeCOg

2.超火的漫画线稿上色AI——style2paints 2.0出新版了

http://blog.****.net/yH0VLDe8VG8ep9VGe/article/details/78933351

3.掘金翻译计划,包含各种英文版精彩的技术文章的中文译文(热门)

https://github.com/xitu/gold-miner

4.首个围棋10段诞生!是10连胜柯洁的国产阿法狗(腾讯绝艺)

http://mp.weixin.qq.com/s/qGnh4hShKHI992Bfh15hOQ