Web前端技术 Web学习资料 Web学习路线 Web入门宝典(不断更新中)
(此文档于2019年3月停止再更新,后续更新移步至:https://github.com/liuyuqin1991/polaris)
学习路线
第一章 技术(核心单独列章节)
1.Node
Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript
运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。相当与JDK。
Github:
https://github.com/nodejs/node
官网教程:
其他教程:
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://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
官方网站:
官方文档:
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
等等等等。所有的包管理器,都有自己的弊端,要视需要选用对自己的项目最合适的。
最新更新于2018年1月17日:
Bower已经过时,作者也不在进行维护,包管理工具已经是npm的天下,不过yarn也在快速崛起,值得研究。
Github:
https://github.com/bower/bower
官方网站:
官方教程:
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
官方网站:
官方教程:
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
教程:
7.Less-.less,Saas-.scss
Sass,Less 是一门 CSS 预处理语言,它扩展了 CSS
语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。Less 可以运行在 Node
或浏览器端。
less 官网:
less中文网:
sass官网:
sass中文网:
8.Es6
ECMAScript 6
(以下简称ES6)是JavaScript语言的下一代标准。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript
2015.也就是说,ES6就是ES2015。
教程:
https://segmentfault.com/a/1190000004365693#articleHeader6
9.Babel
Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。
Github:
https://github.com/babel/babel
官方网站:
教程:
其他:
文章 | 链接 |
---|---|
【第1464期】babel7使用手册 | https://mp.weixin.qq.com/s/AURDiWwspdfRExopNf4YLQ |
【第1378期】 一口(很长的)气了解 Babel | https://github.com/easonyq/easonyq.github.io/blob/master/学习记录/others/babel.md |
10.Q.js
Promise是抽象异步处理对象以及对其进行各种操作的组件。JavaScript的异步执行都是以回调函数来执行的。Promise可以简化回调并提供链式异步调用。
Github:
https://github.com/kriskowal/q
教程:
http://liubin.org/promises-book/
Github:
https://github.com/kriskowal/q
基于 Node.js 平台,快速、开放、极简的 web 后端开发框架。
Github:
https://github.com/expressjs/express
官方网站:
中文网:
12.Fontawesome
Font Awesome 字体为您提供可缩放矢量图标,它可以被定制大小、颜色、阴影以及任何可以用CSS的样式。
Github:
https://github.com/FortAwesome/Font-Awesome
官方地址:
http://www.fontawesome.com.cn/
13.yarn
Yarn 是一个依赖管理工具。它能够管理你的代码,并与全世界的开发者分享代码。Yarn
是高效、安全和可靠的,你完全可以安心使用,与npm属于同一类型的库
中文官方教程:
https://yarn.bootcss.com/docs/getting-started.html
其他教程:
http://mp.weixin.qq.com/s/FnCa0wqdHKQN4syrPIPSAA
14.ESLint
提供一个插件化的javascript代码检测工具
Github:
https://github.com/eslint/eslint
官网:
教程:
15.typescript
TypeScript 是 JavaScript 的类型的超集,它可以编译成纯 JavaScript。编译出来的
JavaScript 可以运行在任何浏览器上。TypeScript
编译工具可以运行在任何服务器和任何系统上。TypeScript 是开源的。
Github:
https://github.com/Microsoft/TypeScript
教程:
https://ts.xcatliu.com/introduction/what-is-typescript.html
16.PWA
第二章 插件库
第三章 gulp自动化构建组件(FEZ项目实践)
名称 | Github | 说明 | 相关教程 |
---|---|---|---|
node-hbsfy | https://github.com/epeli/node-hbsfy | borwserify 支持 require handlebars模板 | |
jadeify | https://github.com/domenic/jadeify | jade模板 | |
node-glob | https://github.com/isaacs/node-glob | 使用glob来返回目录中所有子文件(文件或文件夹) | http://www.cnblogs.com/liulangmao/p/4552339.html |
glob通配符释义:http://blog.csdn.net/zhuchuji/article/details/51297819 | |||
gulp-inject | https://github.com/klei/gulp-inject | CSS和WebComponent 注入插件,将它们注入到index.html文件中(官方解释),把css,js这些静态文件注入到html文件中,不需要手动添加。 | |
main-bower-files | https://github.com/ck86/main-bower-files | 通过读取并分析bower.json文件里override属性里main路径下定义的插件及相关依赖,返回一个文件数组 | |
vinyl-buffer | https://github.com/hughsk/vinyl-buffer | 将虚拟的流文件转换为可以使用的的buffer文件 | |
gulp-if | https://github.com/robrich/gulp-if | 为功能执行添加条件判断,跟程序语言中的if是相同语义 | |
browserify-shim | https://github.com/thlorenz/browserify-shim | browserify-shim 是一个转换工具,它会读取 package.json 文件的 “browserify-shim” 属性,将不遵循node风格的commonjs的输出写法的模块包转换成browserify可以读懂的模块包 | |
babel-polyfill | https://github.com/babel/babel/tree/master/packages/babel-polyfill | IE8兼容包 | |
vueify | https://github.com/babel/babel/tree/master/packages/babel-polyfill | 在browserify中编辑vue代码 | |
watchify | https://github.com/browserify/watchify | ||
gulp.spritesmith | https://github.com/twolfson/gulp.spritesmith | 小图(图标)合成精灵图,拼接图片并生成样式表,并且还能输出SASS,Stylus,LESS甚至是JSON | |
gulp-filter | https://github.com/sindresorhus/gulp-filter | 在虚拟文件流中过滤特定的文件 | |
gulp-order | https://github.com/sirlantis/gulp-order | The gulp plugin gulp-order allows you to reorder a stream of files using the same syntax as of gulp.src,这是官方定义,简单来说,就是按给定的顺序整理需要处理的文件集。 | |
gulp-concat | https://github.com/contra/gulp-concat | 合并js文件,比如合并多个js到一个文件 | |
gulp-concat-css | https://github.com/mariocasciaro/gulp-concat-css | 合并css文件,比如合并多个css到一个文件 | |
rework | https://github.com/reworkcss/rework | ||
del | https://github.com/sindresorhus/del | 使用glob匹配规则来删除文件或文件夹 | |
gulp-less | https://github.com/stevelacy/gulp-less | 编译less文件的gulp插件 | |
gulp-sass | https://github.com/dlmanning/gulp-sass | 编译sass文件的gulp插件 | |
gulp-postcss | https://github.com/postcss/gulp-postcss | PostCSS把扩展的语法和特性(比如变量,混入,未来css预发,内联图像等)转换成现代的浏览器友好的CSS | |
gulp-usemin(不推荐使用) | https://github.com/pursual/gulp-usemin | 根据预先在html文件(或者其它模板/视图中的文件)中声明好的blocks来执行一系列任务(例如合并文件并重全名、排除一些只在开发过程中引入的脚本以及将css和js中的代码提取出来内嵌在html文件中)来处理未优化的样式和脚本 | |
gulp-htmlmin | https://github.com/jonschlinkert/gulp-htmlmin | 压缩html,可以压缩页面javascript、css,去除页面空格、注释,删除多余属性等操作 | |
gulp-imagemin | https://github.com/sindresorhus/gulp-imagemin | 压缩常见的图片格式,比如PNG,JPEG,GIF,甚至是SVG图片 | |
gulp-clean-css | https://github.com/scniro/gulp-clean-css | 压缩css文件,减小文件大小,并给引用url添加版本号避免缓存 | |
gulp-uglify | https://github.com/terinjokes/gulp-uglify | 专业压缩js文件,减小文件大小 | |
gulp-rename | https://github.com/hparra/gulp-rename | 修改文件名称,比如有时我们需要把app.js改成app.min.js | |
gulp-util | https://github.com/gulpjs/gulp-util | gulp工具包,可以打log啊,提示语颜色啊,提示音啊等等一些操作,不过一般就是用来打印日志 | |
gulp-rev | https://github.com/sindresorhus/gulp-rev | 根据静态资源内容,生成md5签名,打包出来的文件名会加上md5签名,同时生成一个json用来保存文件名路径对应关系 | |
gulp-rev-replace | https://github.com/jamesknelson/gulp-rev-replace | 配合 gulp-rev 使用,拿到生成的 manifest。json 后替换对应的文件名称 | |
gulp-sourcemaps | https://github.com/gulp-sourcemaps/gulp-sourcemaps | 处理 JavaScript 时生成 SourceMap | |
gulp-svg-symbols | https://github.com/Hiswe/gulp-svg-symbols | 合并SVG图标 | |
gulp-inject-string | https://github.com/mikehazell/gulp-inject-string | 在页面中插入内容 | |
gulp-replace | https://github.com/lazd/gulp-replace | 字符串替换的gulp 插件 | |
gulp-flatten | https://github.com/armed/gulp-flatten | 删除或替换文件的相对路径 | |
lazypipe | https://github.com/OverZealous/lazypipe | Lazypipe允许您创建一个不可变的、延迟初始化的管道。能在需要重用部分管道的环境中使用,比如gulp。它可以创建一些工厂来把你经常使用的功能 stream 链分离出来,变成一个通用插件功能链,然后放入需要这个链的链路上 | |
event-stream | https://github.com/dominictarr/event-stream | 流操作,还不大清楚其原理 | |
gulp-autoprefixer | https://github.com/sindresorhus/gulp-autoprefixer | 给CSS添加前缀,解决某些CSS属性不是标准属性,有各种浏览器前缀的情况,灰常有用 | |
gulp-posthtml | https://github.com/posthtml/gulp-posthtml | html预处理 html中的rem转换等 | |
postcss-pxtorem | https://github.com/cuth/postcss-pxtorem | CSS 转换 `px` 为 `rem` | |
envify | https://github.com/hughsk/envify | ||
vinyl-source-stream | https://github.com/hughsk/vinyl-source-stream | 在gulp或虚拟文件的流开始使用传统的文本流,对现有的npm流有更好的互操作性 | |
babelify | https://github.com/babel/babelify | ||
cssify | https://github.com/davidguttman/cssify | borwserify 支持 require css样式 | |
lessify | https://github.com/dstokes/lessify | borwserify 支持 require less样式 | |
preprocessify | https://github.com/bibliolabs/preprocessify | 条件注释/主要区分开发和上线环境,是否加载mock数据 | |
lodash | https://github.com/lodash/lodash | 具有一致接口、模块化、高性能等特性的 JavaScript 扩展工具库 | 官方网站:https://lodash.com/ |
gulp-size | https://github.com/sindresorhus/gulp-size | 压缩字体文件 | |
imagemin-pngquant | 压缩png图片文件 | ||
gulp-rev-delete-original | https://github.com/nib-health-funds/gulp-rev-delete-original | 删除由gulp-rev或gulp-rev-all重写的原始文件 | |
gulp-rev-css-url | https://github.com/galkinrost/gulp-rev-css-url | 提取样式中的相对路径 | |
gulp-strip-debug | https://github.com/sindresorhus/gulp-strip-debug | ||
gulp-cdnify | https://github.com/kaiqigong/gulp-cdnify | CDN地址替换 |
第四章 React
react组件轮子集合(摘自antd)
第五章 Vue:
标题 | 链接 |
---|---|
[译] Vue让我喜欢的10个方面 | https://juejin.im/post/5a7bfbe8f265da4e8b2fcc50?utm_medium=fe&utm_source=weixinqun |
2018 年你需要知道的 Vue.js 组件库,完善你的应用开发 | http://blog.csdn.net/VhWfR2u02Q/article/details/78859493 |
基于vue的browserify的项目模板 | https://github.com/keepfool/vue-tutorials/tree/master/05.OfficialTemplates/my-browserify-simple-demo |
手摸手,带你用vue撸后台 系列一 | https://juejin.im/post/59097cd7a22b9d0065fb61d2 |
【第1244期】详解vue中的 Object.create(null) | https://mp.weixin.qq.com/s/bPpPnzmOJtBdEmdcLeyHQw |
VUE组件汇总 | https://juejin.im/post/5af16a2cf265da0b8636353b |
【第1272期】从零开始搭建脚手架 | https://mp.weixin.qq.com/s/m8atIJzGEGnOV_utpijG2g |
【第1313期】一个Vue页面的内存泄露分析 | https://zhuanlan.zhihu.com/p/38448752 |
【第1322期】Vue CLI 3 配置中 Modern mode 是什么 | https://mp.weixin.qq.com/s/X_kl6AJ0Q_9BJk0_eRSM1w |
【第1385期】Vue高版本中一些新特性的使用 | https://github.com/masterkong/blog/issues/7 |
【第1410期】尤雨溪:Vue 3.0 计划 | https://juejin.im/post/5bb719b9f265da0ab915dbdd |
【第1432期】megalo – 网易考拉小程序解决方案 | https://mp.weixin.qq.com/s/n5nUGdOO-JxkPsM7G7UCAQ |
第六章 Webpack:
第七章 CSS:
CSS样式库:
类别 | 名称 | Github | 官网 | 说明 |
---|---|---|---|---|
按钮 | buttons | https://github.com/alexwolfe/Buttons | Buttons 是一个高度可定制的、免费并且开源的按钮 CSS 样式库 | |
动画 | animate.css | https://github.com/daneden/animate.css | https://daneden.github.io/animate.css/ | css3动画库 |
第八章 UI:
分类 | 名称 | 资源 |
---|---|---|
react | Ant Design of React | alibaba的蚂蚁金服开发的开箱即用的高质量 React UI组件 官方教程: https://ant.design/docs/react/introduce-cn Github(star:30001 2018-6-26 ): https://github.com/ant-design/ant-design |
material-ui | Material-UI是一个实现了Google’s Material Design设计规范的react组件库,开箱即用,使用它可以快速搭建出赏心悦目的应用界面 官网: https://material-ui.com/ Github(star:38027 2018-6-26 ): https://github.com/mui-org/material-ui/ | |
react-desktop | 如果你对跨平台桌面应用程序的 UI 组件感兴趣,那么 React-Desktop 就是为你而设。你可以在上面找到 Mac OS 和 Windows 10 的均可用 UI 组件。 React-Desktop 可与 NW.js 和 Electron.js 完美结合,也可用于任何 JavaScript 驱动的项目 官网: http://reactdesktop.js.org Github(star:7556 2018-6-26 ): https://github.com/gabrielbull/react-desktop | |
Semantic-UI-React | React 最好的 UI 框架,Semantic-UI-React 几乎拥有 Semantic-UI 中所有有用的组件,同时也有一个非常好的 Declarative API ,和用于 React 组件的 shorthand props ,并且 jQuery-Free。 文档: https://react.semantic-ui.com/introduction Github(star:7222 2018-6-26 ): https://github.com/Semantic-Org/Semantic-UI-React | |
Blueprint | 它包含 30+ 的 React 组件,涵盖几乎所有的通用界面元素,从按钮到表单控件到工具提示等等。 它还包括每个组件的 CSS 样式和使用 Sass 和 Less 变量设计自己的组件和应用的工具, 以及一个优雅的调色板和两种尺寸的 300 多个 UI 图标,旨在让你专注于构建产品,针对构建复杂、数据密集的 Web 界面的桌面应用进行了最优化。如果你重度依赖移动互动,并且正在寻找 mobile-first 的 UI 工具包,它可能不适合你 官网: http://blueprintjs.com/ Github(star:9652 2018-6-26 ): https://github.com/palantir/blueprint | |
React-Bootstrap | React-Bootstrap 是一个可重复使用的前端组件库。你可以通过 Facebook 的 React.js 框架获得 Twitter Bootstrap 的体验,而且有更为清晰的代码。 简而言之,这是老牌的 Bootstrap 组件,用 React 重新编写。 官网: https://react-bootstrap.github.io/ Github(star:13271 2018-6-26 ): https://github.com/react-bootstrap/react-bootstrap | |
React-Toolbox | 一组使用 CSS 模块实现 Google Material Design 的 React 组件,它允许你只使用所需的 CSS ,而不用使用像 Purify-CSS 这样的工具。除此之外,React-Toolbox 是具有30 +组件,开箱即用的,高度可定制的框架。 官网: http://react-toolbox.com/ Github(star:7985 2018-6-26 ): https://github.com/react-toolbox/react-toolbox | |
**Grommet ** | Grommet 不仅仅是一个 UX 框架,它所包含的东西要比单纯的 UX 框架多得多。Grommet = 用 React 编写的一堆 UX 组件和工具 + 自有的 grommet-cli +“入门” 指南 + 预建模板 + 良好的文档+ 与 Sketch 集成 。 官网: http://grommet.io/ Github(star:3381 2018-6-26 ): https://github.com/grommet/grommet | |
Fabric | 用于构建与 Office 和 Office 365 界面相类似的 Web 应用的 React 组件,Fabric 是用 TypeScript 编写的官方 Office 库,包含“入门”指南、博客、官方调色板和字体,以及构建项目所需的所有组件 官网: https://developer.microsoft.com/en-us/fabric#/components Github(star:2822 2018-6-26 ): https://github.com/OfficeDev/office-ui-fabric-react | |
element-react | Element was initially written in Vue, which has many elegant UI components, but we also love React, so we forked it for the React community. 官方介绍,一眼就懂 官方教程: https://elemefe.github.io/element-react/#/zh-CN/quick-start Github(star:17062018-7-25 ): https://github.com/ElemeFE/element-react | |
vue | element | Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库 官方教程: http://element-cn.eleme.io/#/zh-CN/component/installation Github(star:29138 2018-7-25 ): https://github.com/ElemeFE/element |
iview | 一套基于 Vue.js 的高质量 UI 组件库 官方教程: https://www.iviewui.com/docs/guide/install Github(star:16217 2018-7-25 ): https://github.com/iview/iview | |
通用 | bootstrap | 简洁、直观、强悍的前端开发框架,让web开发更迅速、简单 官网: http://www.bootcss.com/ Github(star:125581 2018-6-26 ): https://github.com/twbs/bootstrap |
wired-elements | 手绘风格的一套很特别的组件 官网: wiredjs.com Github(star:5842 2018-6-26 ): https://github.com/wiredjs/wired-elements |
第九章 分散技术:
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.canvas
Canvas
API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图
教程:
http://caibaojian.com/canvas/about.html
8.flutter
9.Stetho
第十章 前端技术文章:
第十一章 前端各种库:
第十二章 面试相关:
第十三章 其他文章链接:
更多推荐
所有评论(0)