update: 目录调整
This commit is contained in:
111
16-前端综合/01-2019年Web前端入门自学路线.md
Normal file
111
16-前端综合/01-2019年Web前端入门自学路线.md
Normal file
@@ -0,0 +1,111 @@
|
||||
|
||||
|
||||
> 本文的最新内容,更新于**2019-12-01**。大家完全不用担心这篇文章会过时,因为随着 前端技术的更新,本文也会随之更新。
|
||||
|
||||
> 本文的最新内容也会在[GitHub](https://github.com/qianguyihao/Web)上实时更新。欢迎在GitHub上关注我,一起入门和进阶前端。
|
||||
|
||||
我之前写过一篇文章:[《裸辞两个月,海投一个月,从Android转战Web前端的求职之路》](http://www.cnblogs.com/smyhvae/p/8732781.html)。这篇文章讲述了我在转型过程中的亲身经历和感受,不少童鞋私信问我怎么入门前端,于是有了这篇文章。
|
||||
|
||||
## Web前端入门的自学路线
|
||||
|
||||
> 新手入门前端,需要学习的**基础内容**有很多,如下。
|
||||
|
||||
一、HTML、CSS基础、JavaScript语法基础。学完基础后,可以仿照电商网站(例如京东、小米)做首页的布局。
|
||||
|
||||
二、JavaScript语法进阶。包括:作用域和闭包、this和对象原型等。相信我,JS语法,永远是面试中最重要的部分。
|
||||
|
||||
三、jQuery、Ajax等。jQuery没有过时,它仍然是前端基础的一部分。
|
||||
|
||||
四、ES6语法。这部分属于JS新增的语法,面试必问。其中,关于 promise、async 等内容要尤其关注。
|
||||
|
||||
五、HTML5和CSS3。要熟悉其中的新特性。
|
||||
|
||||
六、canvas。面试时,有的公司不一定会问canvas,靠运气。如果时间不够,这部分的内容可以先不学。但如果你会,绝对属于加分项。
|
||||
|
||||
七、移动Web开发、Bootstrap等。要注意移动开发中的适配和兼容性问题。
|
||||
|
||||
八、前端框架:Vue.js和React。这两个框架至少要会一个。入门时,建议先学Vue.js,上手相对容易。但无论如何,同时掌握 Vue 和 React 才是合格的前端同学。
|
||||
|
||||
九、Node.js。属于加分项,如果时间不够,可以先不学,但至少要知道 node 环境的配置。
|
||||
|
||||
十、前端工程化:构建工具 Webpack、构建工具 gulp、CSS 预处理器 Sass 等。注意,Sass 比 Less 用得多,gulp 比 grunt 用得多。
|
||||
|
||||
十一、前端综合:HTTP协议、跨域通信、安全问题(CSRF、XSS)、浏览器渲染机制、异步和单线程、页面性能优化、防抖动(Debouncing)和节流阀(Throtting)、lazyload、前端错误监控、虚拟DOM等。
|
||||
|
||||
十二、编辑器相关。Sublime Text 是每个学前端的人都要用到的编辑器。另外,前端常见的IDE有两个:WebStorm 和 Visual Studio Code。WebStorm 什么都好,可就是太卡顿;VS Code就相对轻量很多。个人总结一下:用VS Code 的人越来越多,用 WebStorm 的人越来越少。具体可以看:《[第一次使用VS Code时你应该知道的一切配置](https://www.cnblogs.com/qianguyihao/p/10732375.html)》
|
||||
|
||||
十三、TypeScript(简称TS)。ES 是 JS 的标准,TS 是 JS 的超集。TS属于进阶内容,建议把上面的基础掌握之后,再学TS。
|
||||
|
||||
备注:框架有时候都很虚;熟练掌握 JavaScript 基础,才是行走江湖、驰骋千里的关键。
|
||||
|
||||
## 推荐的前端图文教程
|
||||
|
||||
我在GitHub上有一个Web前端入门的学习教程,非常详细,地址是:
|
||||
|
||||
> <https://github.com/qianguyihao/Web>
|
||||
|
||||
非常详细和贴心,你值得star。这个前端教程主要有三个作用:
|
||||
|
||||
- 网上的大部分入门教程,都不太适合初学者,本项目争取照顾到每一位入门者的同理心。
|
||||
|
||||
- 帮助前端同学提供一个精品学习路线和资源,提高学习效率,少走很多弯路。
|
||||
|
||||
- 可以当做前端字典,随时翻阅,查漏补缺。
|
||||
|
||||
## 推荐的技术博客
|
||||
|
||||
- [阮一峰](http://www.ruanyifeng.com/blog/)
|
||||
|
||||
- [张鑫旭](http://www.zhangxinxu.com/wordpress/)
|
||||
|
||||
## 推荐的书籍
|
||||
|
||||
- 《[你不知道的JavaScript](https://book.douban.com/subject/26351021/)》
|
||||
|
||||
上面这套书有上、中、下三本,你都可以读一读。如果时间不够,那就先读第一本。
|
||||
|
||||
- 《[网络是怎样连接的](https://book.douban.com/subject/26941639/)》
|
||||
|
||||
程序员面试的时候,经常会被问的一个问题是:“在浏览器的地址栏输入url,按下回车后,发生了什么?”
|
||||
|
||||
为了清楚这个问题,看上面这本书,足够了。如果你想入门计算机网络,这本书也是必读的。评价非常高。
|
||||
|
||||
关于这个问题,也可以看下面这篇文章:[浏览器输入 URL 后发生了什么?](https://zhuanlan.zhihu.com/p/43369093)
|
||||
|
||||
- 《[CSS世界](https://book.douban.com/subject/27615777/)》
|
||||
|
||||
关于 CSS 的书籍,首先推荐这本书,我身边的大佬们都说这本书好。虽然我不是大牛,但我也觉得这本书很好。
|
||||
|
||||
如果 js 熟练,说明你是有技术深度的前端;如果 css 熟练,说明你是有经验的前端。
|
||||
|
||||
## 推荐的链接
|
||||
|
||||
- 前端导航:<https://www.cnblogs.com/qianguyihao/p/10701923.html>
|
||||
|
||||
这个导航里列出了很多常见网站、博客、工具等,整体来看比较权威。
|
||||
|
||||
学是一方面,也是最主要的方面;但还有一个作用,比如,“这个前端框架你都不知道啊”、“这个前端大牛你都没听说过啊” 。此时,这份清单就能起到作用了。如果能把清单里列出的内容都了解下,逼格也会高很多。
|
||||
|
||||
- MDN 官方文档:<https://developer.mozilla.org/zh-CN/docs/Web>
|
||||
|
||||
如果你想查看前端的 api 文档,请首先去 MDN上看。很官方,很正规。
|
||||
|
||||
不要去什么 w3school 上看,可能有很多错误。
|
||||
|
||||
## 前端资讯订阅源
|
||||
|
||||
国内的很多技术博客,都是比较粗浅的二手知识,真正的大佬,看不上这些东西。
|
||||
|
||||
要了解最新的的前端技术趋势、前端资讯,还得看国外的网站。下面这两个前端资讯的网站,极力推荐。它们都可以通过邮件的形式订阅,我认为是前端开发者必须要订阅的:
|
||||
|
||||
- Daily JS:<https://medium.com/dailyjs> - medium 上的博客。
|
||||
|
||||
- JavaScript Weekly:<https://javascriptweekly.com/> - 聚合类的技术周刊。
|
||||
|
||||
## 我的公众号
|
||||
|
||||
想学习<font color=#0000ff>**代码之外的技能**</font>?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。
|
||||
|
||||
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
|
||||
|
||||

|
||||
384
16-前端综合/2018年-前端日记.md
Normal file
384
16-前端综合/2018年-前端日记.md
Normal file
@@ -0,0 +1,384 @@
|
||||
|
||||
## 2018年4月份
|
||||
|
||||
### 2018-04-25
|
||||
|
||||
|
||||
|
||||
- userAgent相关:[判断微信内置浏览器的UserAgent](http://www.cnblogs.com/7z7chn/p/5370352.html)
|
||||
|
||||
|
||||
|
||||
|
||||
### 2018-04-26
|
||||
|
||||
**前端相关**:
|
||||
|
||||
- 流程图制作工具:[ProcessOn](https://www.processon.com/)
|
||||
|
||||
- api方法的浏览器兼容性问题,可以在这个网站上看:<https://caniuse.com/>
|
||||
|
||||
- CSS3的兼容性问题,不一定要使用-webkit-, -moz-, -o-, -ms-等私有前缀。可以使用 PostCSS。[知乎](https://www.zhihu.com/question/20597072)
|
||||
|
||||
- 浏览器常见的内核有:V8、WebKit。另外腾讯还有个[X5](http://x5.tencent.com/)。
|
||||
|
||||
- 要查一下display none 和 visibility hidden的区别。
|
||||
|
||||
- ES 的各个版本在 Node 环境下的支持情况,可以查看这个网站:<http://node.green/>
|
||||
|
||||
- promise的实现,关键词:Promises/A、Promises/B、[bluebird](https://github.com/petkaantonov/bluebird)
|
||||
|
||||
|
||||
**综合**:
|
||||
|
||||
- whistle安装证书后,可以拦截 https 请求。但是,我现在又不想拦截了,该怎么卸载证书呢?
|
||||
|
||||
### 2018-04-27
|
||||
|
||||
- [strider](https://github.com/Strider-CD/strider):可以用来部署项目。
|
||||
|
||||
- 有必要了解一下电商1.0、电商2.0、电商3.0的概念。
|
||||
|
||||
|
||||
### 2018-05-02
|
||||
|
||||
- `location.pathname`:获取 url 的后半部分。参考链接:[#](http://www.cnblogs.com/itjeff/p/4645262.html)
|
||||
|
||||
- 代码解读:`callback && callback()`的含义
|
||||
|
||||
|
||||
|
||||
### 2018-05-03
|
||||
|
||||
- 各种框架实现的todo项目:<http://todomvc.com/>
|
||||
|
||||
- 对比 sass、less、stylus 这三个css预处理器,zqc说,后面两个已经不怎么用了。sass 比 less强大,stylus的书写方式比较奇怪。
|
||||
|
||||
- npm命令中,--save 和 --save-dev的区别。参考链接:<http://pwcong.me/2017/01/05/npm%E5%BC%95%E5%85%A5%E6%A8%A1%E5%9D%97%E6%97%B6--save-%E4%B8%8E--save-dev-%E7%9A%84%E5%8C%BA%E5%88%AB/>
|
||||
|
||||
|
||||
### 2018-05-07
|
||||
|
||||
- Vue组件的注册
|
||||
|
||||
有一种组件注册的方式是 Vue+jQuery:
|
||||
|
||||
```javascript
|
||||
Vue.component('my-div', $.extend({
|
||||
props:[],
|
||||
methods:{
|
||||
|
||||
},
|
||||
filters:{
|
||||
|
||||
}
|
||||
|
||||
}), vueTpl.subs.myDiv)
|
||||
```
|
||||
|
||||
|
||||
根据 zqc 的建议,不一定要使用`$.extend()`,还可以使用`object.assign()`。
|
||||
|
||||
### 2018-05-08
|
||||
|
||||
- sku、spu的概念
|
||||
|
||||
### 2018-05-09
|
||||
|
||||
- 输入框正则的匹配
|
||||
|
||||
让输入框仅支持输入单个id,且为字符串。如果输入多个id,或者非数字的字符,则自动删除:
|
||||
|
||||
```javascript
|
||||
v-on:keyup="querysku = querysku.replace(/\D/,'')"
|
||||
```
|
||||
|
||||
|
||||
### 2018-05-10
|
||||
|
||||
- 如果在控制台看到网络请求陈功,数据也获取成功,但是在ajax里走的是 error(数据获取失败),说明是 ajax代码的判断逻辑有问题。
|
||||
|
||||
- 服务器返回的json数据到底是对象还是字符串?
|
||||
|
||||
- josn数据里的字段,有顺序吗?比如下面这段:
|
||||
|
||||
```jsonn
|
||||
{
|
||||
"1492948848": {
|
||||
"3": "1",
|
||||
"spec": "",
|
||||
"imagePath": "hehe.jpg",
|
||||
"color": "橘色 ",
|
||||
"name": "【多色可选】丽装铺园纯色百搭简约打底T恤女 橘色 M",
|
||||
"size": "M"
|
||||
},
|
||||
"1492948847": {
|
||||
"3": "1",
|
||||
"spec": "",
|
||||
"imagePath": "lala.jpg",
|
||||
"color": "灰色 ",
|
||||
"name": "【多色可选】丽装铺园纯色百搭简约打底T恤女 灰色 S",
|
||||
"size": "S "
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
答案:顺序不重要。
|
||||
|
||||
- Vue开发中,在其他地方用到Vue实例中的数据时,一定要用this,或者是`vm.$data.myName`之类的。
|
||||
|
||||
- 疑问:下面的src路径的前面,为何要加`//`:
|
||||
|
||||
```
|
||||
<img v-bind:src="'//img14.smyhvae.com/evalpic/s240x240_'+value.imagePath" />
|
||||
```
|
||||
|
||||
我发现,控制台看到的输出src中,会自动加上http。如果前面不加`//`则表示相对路径。
|
||||
|
||||
### 2018-05-11
|
||||
|
||||
- 将逗号分隔的字符串,转换为数组: `str.split(",")`。即使数组中只有一个元素,也可以这样用。参考链接:[#](https://blog.csdn.net/erlian1992/article/details/50561452)
|
||||
|
||||
### 2018-05-14
|
||||
|
||||
- ajax发的是post请求,但是后台却只收到了部分数据怎么办?答案:前端的post请求记得加content-type字段,否则会被识别成 get 请求。
|
||||
|
||||
- 获取jsonp的数据,只能用get请求。如果要用post请求,那就传json数据,另外,可能还要解决跨域的问题。跨域需要在后台配置,三行代码即可。
|
||||
|
||||
- p标签里的文字溢出怎么办?
|
||||
|
||||
- whistle该怎样mock数据?
|
||||
|
||||
|
||||
### 2018-05-16
|
||||
|
||||
- 在控制台看标签的样式,发现有些样式是出现在`element.style`中的(比如图片的尺寸),但是在代码里并没有找到。那是因为,这些样式是在 js 代码中**计算**出来的。
|
||||
|
||||
- 图片自适应显示
|
||||
|
||||
- [视区相关单位vw, vh..简介以及可实际应用场景](http://www.zhangxinxu.com/wordpress/2012/09/new-viewport-relative-units-vw-vh-vm-vmin/)
|
||||
|
||||
- jingwen推荐的iconMoon图标网站。网址:<https://icomoon.io/>
|
||||
|
||||
|
||||
### 2018-06-01
|
||||
|
||||
- `PingFangSC`字体是iOS独有的字体。`PingFangSC-Regular`是常规字体,`PingFangSC-Semibold`是加粗字体。如果我在代码里设置了这个字体,那么,ios上可以看到效果,但是Android上看不到效果,仍然会采用Android系统默认的字体。
|
||||
|
||||
|
||||
|
||||
### 2018-06-04
|
||||
|
||||
**1、git相关**:
|
||||
|
||||
把 branch1 中的某条记录(比如myLog),提交到 branch2中。做法如下:
|
||||
|
||||
先切换到branch2中,然后输入如下命令:
|
||||
|
||||
```
|
||||
git cherry-pick myLog
|
||||
```
|
||||
|
||||
|
||||
### 2018-06-05
|
||||
|
||||
**1、font-size**:
|
||||
|
||||
`font-size`的最小值为12。
|
||||
|
||||
也就是说,浏览器的最小字体为12,要是再小于这个值,是不生效的。如果想要小于12,需要在浏览器的高级设置里去修改。
|
||||
|
||||
|
||||
|
||||
**2、git 多分支同时开发**:
|
||||
|
||||
现在有这样一个场景:我要同时开发一个项目里的两个功能。今天上午开发功能1,下午开发功能2。明天上午改功能1的bug,明天下午改功能2的bug。
|
||||
|
||||
相当于是,我现在是**并行**开发两个功能了,要怎么通过git来进行协作呢?
|
||||
|
||||
目前考虑到的姣好的方式是:
|
||||
|
||||
- 从master拉分支`branch1`,此分支专门用来开发功能1,改功能1的bug。
|
||||
|
||||
- 再从master拉分支`branch2`,此分支专门用来开发功能2,改功能2的bug。
|
||||
|
||||
以后需要上线哪个功能,就从那个分支merge代码到master。
|
||||
|
||||
|
||||
|
||||
|
||||
**3、其他**:
|
||||
|
||||
- 两个span之间默认有5px的 margin
|
||||
|
||||
|
||||
- **shadow-root**:下一代。
|
||||
|
||||
|
||||
### 2018-06-07
|
||||
|
||||
- [原生js实现淡入淡出效果](https://www.teakki.com/p/57dfb44cd3a7507f975e91e4)
|
||||
|
||||
- 通过 jQuery 获取Dom的时候,比如`$('#topNavTop').css('background','red')`记得要指明是 id 还是 class。
|
||||
|
||||
- 每次开发一个新的需求,记得要问清楚:“H5和小程序”都要做吗?要做的话,工作量基本乘以2。
|
||||
|
||||
|
||||
### 2018-06-14
|
||||
|
||||
- pv、uv的概念
|
||||
|
||||
|
||||
### 2018-06-21
|
||||
|
||||
- 今天学会了 iPhone上WebApp的真机调试,感觉很高端呀。具体可以看我在本文件夹中写的《前端开发积累》这篇文章。
|
||||
|
||||
|
||||
|
||||
### 2018-06-27
|
||||
|
||||
没想到,`''`和`' '`竟然还有区别。
|
||||
|
||||
|
||||
|
||||
### 2018-06-30
|
||||
|
||||
**并列条件**:
|
||||
|
||||
来看下面这段代码:
|
||||
|
||||
```javascript
|
||||
var num = 80;
|
||||
console.log(50 < num <= 70);
|
||||
```
|
||||
|
||||
上面的代码,你认为打印的结果是什么?其实,它打印的结果是 true。
|
||||
|
||||
如果我们要实现并列条件,千万不要使用 `if(50 < num < 70)`,而是要使用`if(num > 50 && num <=70)`。
|
||||
|
||||
|
||||
### 2018-07-16
|
||||
|
||||
**FAQ:问答系统**
|
||||
|
||||
FAQ是英文`Frequently Asked Questions`的缩写,中文意思就是“经常问到的问题”,或者更通俗地叫做“常见问题解答”。
|
||||
|
||||
|
||||
### 2018-08-03
|
||||
|
||||
```javascript
|
||||
let temp = 0.123;
|
||||
let temp2 = temp.toFixed(2);
|
||||
```
|
||||
|
||||
|
||||
上方代码中,`temp2`的结果是0.12,但是请注意,`temp`的类型Number型,而`temp2`的类型却是String型。
|
||||
|
||||
|
||||
|
||||
### 2018-08-15
|
||||
|
||||
flex布局常用的三行代码:
|
||||
|
||||
```
|
||||
display: flex;
|
||||
justify-content: center; // 子元素在横轴的对齐方式 (左右居中)
|
||||
align-items: center; // 子元素在竖轴的对齐方式(上下居中)
|
||||
```
|
||||
|
||||
|
||||
### 2018-08-16
|
||||
|
||||
用CSS3 transition属性实现淡入淡出轮播图:<https://segmentfault.com/a/1190000007648070>
|
||||
|
||||
|
||||
|
||||
### 2018-08-20
|
||||
|
||||
**小程序问题**:
|
||||
|
||||
用小程序调试时,如果出现故障(比如item点击无响应),可能是微信开发者工具IDE的版本太低了。注意,IDE上上虽然提示是最新版,但不一定是官网的最新版。所以,要去官网下载最新版。
|
||||
|
||||
如果还是不行,看看是不是自己的代码写错了。有时候,代码写错了,不一定会有报错提示哦。
|
||||
|
||||
|
||||
**css问题**:
|
||||
|
||||
- css3实现的switch开关按钮:<https://codepen.io/chutou/pen/qdGZQr>
|
||||
|
||||
|
||||
### 2018-08-22
|
||||
|
||||
**两个span之间去空格**
|
||||
|
||||
- html+css如何删除行内元素之间的空白/空隙:<http://www.manongjc.com/article/2171.html>
|
||||
|
||||
方法二亲测有效:让父亲的font-size为0,然后具体设置子元素的font-size
|
||||
|
||||
- 去除inline-block元素间间距的N种方法:<https://www.zhangxinxu.com/wordpress/2012/04/inline-block-space-remove-去除间距/>
|
||||
|
||||
|
||||
|
||||
### 2018-08-28-修改用户的cookie
|
||||
|
||||
```
|
||||
document.cookie="visitkey=98"
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 2018-09-20
|
||||
|
||||
需求:当导航条滚动到屏幕顶部时(举例顶部的距离 < 0时),就设置导航条为fixed。
|
||||
|
||||
实现:如果要设置为导航条为fixed,正确的做法应该是:给导航条这个父亲一个高度进行占位,然后让导航条的儿子为fixed。而不是让父亲为 fixed。
|
||||
|
||||
|
||||
### 2018-09-27
|
||||
|
||||
如何让微信小程序禁止下拉_解决小程序下拉出现空白的情况:http://www.fly63.com/article/detial/1069
|
||||
|
||||
我遇到问题的原因是:背景图太大,超出了视图。
|
||||
|
||||
|
||||
### 2018-10-12
|
||||
|
||||
小程序代码中,如果我这样写view的度样式:
|
||||
|
||||
```
|
||||
height: 60rpx;
|
||||
line-height: 1.5rem;
|
||||
```
|
||||
|
||||
|
||||
上面的这种写法,并不会让里面的文字上下居中,我在 iPhone 7 plus 中看到的结果是:文字偏上移。
|
||||
|
||||
正确的做法是:(单位一致用rpx,不要把两个单位混用)
|
||||
|
||||
```
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 2018-10-21
|
||||
|
||||
|
||||
时间戳和年月日的转换:<https://blog.csdn.net/qq_26747571/article/details/53289120?locationNum=10&fps=1>
|
||||
|
||||
|
||||
### 2018-11-28
|
||||
|
||||
css实现圆环进度条:<https://blog.csdn.net/wanglei1991gao/article/details/80009252>
|
||||
|
||||
|
||||
|
||||
### 2018-12-13
|
||||
|
||||
对象数组通过对象的属性进行排序:<https://blog.csdn.net/xiaobing_hope/article/details/68638706>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
249
16-前端综合/2019年-前端日记.md
Normal file
249
16-前端综合/2019年-前端日记.md
Normal file
@@ -0,0 +1,249 @@
|
||||
|
||||
### 2019-04-02
|
||||
|
||||
Vue屏幕宽度自适应:
|
||||
|
||||
<https://blog.csdn.net/qq_25386583/article/details/77161478>
|
||||
|
||||
<https://blog.csdn.net/xuaner8786/article/details/81565219>
|
||||
|
||||
### 2019-04-07
|
||||
|
||||
- 控制iframe中的页面只显示一部分:<https://blog.csdn.net/iteye_18722/article/details/81918563>
|
||||
|
||||
### 2019-04-09
|
||||
|
||||
```javascript
|
||||
Date.parse("2019/04/20 18:14:00")
|
||||
```
|
||||
|
||||
上方代码转换的结果,单位是`毫秒`,不是秒。
|
||||
|
||||
|
||||
### 2019-04-23
|
||||
|
||||
```javascript
|
||||
const a = [];
|
||||
const b = {};
|
||||
|
||||
console.log(Boolean(a));
|
||||
console.log(Boolean(b));
|
||||
```
|
||||
|
||||
上方代码的打印结果均为true。 具体解释,可以看我在 `03-JavaScript基础/03-变量的强制类型转换.md`这篇文章里讲到的**转换为Boolean**。
|
||||
|
||||
所以,我们平时在写业务代码的时候,“判断是否为空对象/空数组”,不能直接写成 `if (myObj)`或者`if(myArray)`,会踩坑。
|
||||
|
||||
判断是否为空数组,可以用:
|
||||
|
||||
```javascript
|
||||
if (myArray.length)
|
||||
```
|
||||
|
||||
判断是否为空对象,可以用 :
|
||||
|
||||
```javascript
|
||||
if (JSON.stringify(myObj) !== '{}')
|
||||
```
|
||||
|
||||
|
||||
### 2019-04-26
|
||||
|
||||
我们知道,在移动端页面尅发时,单位一般是采用 rem。
|
||||
|
||||
设计稿如果是750px宽,那么,默认换算的单位如下:**16px = 1rem**。但是这种换算比较麻烦。我们可以在 html里加上如下代码:
|
||||
|
||||
```html
|
||||
<style>
|
||||
html {
|
||||
font-size: 20px;
|
||||
font-size: 5.3333333vw;
|
||||
}
|
||||
</style>
|
||||
```
|
||||
|
||||
这样的话,换算单位就变成了:**20px = 1rem**。
|
||||
|
||||
|
||||
|
||||
### 2019-05-16
|
||||
|
||||
- 数组随机打乱顺序:<https://www.zhihu.com/question/68330851/answer/262111061>
|
||||
|
||||
最佳的打乱算法是Fisher-Yates算法。
|
||||
|
||||
|
||||
### 2019-05-16
|
||||
|
||||
Vue的全局变量空间:`this.$root.data`,我们可以在这里面存放数据。比如`this.$root.data.skuIdList`。
|
||||
|
||||
### 2019-05-17
|
||||
|
||||
- css 动画实现闪烁效果:<https://blog.csdn.net/wangxiuyan0228/article/details/80701523>
|
||||
|
||||
### 2019-05-20-css3动画水平/镜像翻转
|
||||
|
||||
参考链接1:<https://www.oschina.net/question/2443483_247744>
|
||||
|
||||
代码实现举例:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head lang="en">
|
||||
<meta charset="UTF-8" />
|
||||
<title></title>
|
||||
<style>
|
||||
@keyframes featuresicon {
|
||||
0% {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
|
||||
20% {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scaleX(0);
|
||||
}
|
||||
80% {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
100% {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
}
|
||||
|
||||
.cube {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background: url(images/bg2.png) left 0 no-repeat;
|
||||
|
||||
animation: featuresicon 1.3s linear alternate none infinite;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: cornflowerblue;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="cube"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
```
|
||||
|
||||
|
||||
参考链接2:<https://blog.csdn.net/wjnf012/article/details/78679131>
|
||||
|
||||
代码实现:(立体感更强一点)
|
||||
|
||||
```html
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<style type="text/css">
|
||||
*{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.cube{
|
||||
display: block;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 4px;
|
||||
/* background-color: #9a6ad8 */
|
||||
background: url(images/bg.png) left 0 no-repeat;
|
||||
animation: proRotate 1.3s ease-in-out 500ms alternate none infinite;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@keyframes proRotate {
|
||||
0%{transform:perspective(200px) rotateY(180deg);}
|
||||
100%{transform:perspective(200px) rotateY(0deg);}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test_wrap">
|
||||
<div class="cube"></div>
|
||||
|
||||
</div>
|
||||
<body>
|
||||
</html>
|
||||
|
||||
```
|
||||
|
||||
|
||||
### 2019-05-22-判断字符串是否为纯中文
|
||||
|
||||
参考链接:https://blog.csdn.net/wozaixiaoximen/article/details/48340061
|
||||
|
||||
|
||||
### 2019-05-24
|
||||
|
||||
- VScode代码格式化后不符合ESLint风格问题处理:<https://blog.csdn.net/SilenceJude/article/details/81589784>
|
||||
|
||||
|
||||
### 2019-05-27-针对 text 文本的属性举例
|
||||
|
||||
```css
|
||||
&_promote {
|
||||
margin-left: 10px;
|
||||
display: inline-block;
|
||||
height: 20px;
|
||||
padding: 4px;
|
||||
line-height: 20px;
|
||||
background: #fff0f0;
|
||||
border-radius: 4px;
|
||||
font-size: 20px;
|
||||
color: #ff4142;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
尤其要研究一下 `vertical-align: middle;`这个属性。
|
||||
|
||||
|
||||
### 2019-06-11
|
||||
|
||||
已知某背景图片的尺寸是:586 * 931。现只截图图片的上面一部分区域(586 * 810)做展示。代码实现如下:
|
||||
|
||||
标签部分:
|
||||
|
||||
```html
|
||||
|
||||
<div class="img"> </div>
|
||||
|
||||
```
|
||||
|
||||
css部分:(重点是 background 属性的写法)
|
||||
|
||||
```css
|
||||
.img{
|
||||
width: 586rpx;
|
||||
height: 810rpx;
|
||||
background: url('https://img11.360buyimg.com/jdphoto/s586x931_jfs/t1/27766/15/3237/102443/5c258955Ee307620e/21a744b0d2e065b3.png') 0 0/cover no-repeat;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
### 2019-08-25
|
||||
|
||||
使用hover为div添加边框时,页面布局发生错位的解决办法:https://blog.csdn.net/u014033756/article/details/51049574
|
||||
|
||||
|
||||
4
16-前端综合/2020年-前端日记.md
Normal file
4
16-前端综合/2020年-前端日记.md
Normal file
@@ -0,0 +1,4 @@
|
||||
### 2020-06-04-跨域问题
|
||||
|
||||
如果遇到跨域问题,先尝试下 https 或者 http。跨域不一定是域名问题,也可能是协议头的问题。
|
||||
|
||||
13
16-前端综合/CSS开发总结.md
Normal file
13
16-前端综合/CSS开发总结.md
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
### p标签里的文字溢出怎么办
|
||||
|
||||
加一个属性即可:
|
||||
|
||||
```css
|
||||
word-break: break-all;
|
||||
|
||||
```
|
||||
|
||||
### inline-block 相关
|
||||
|
||||
图片默认是 inline-block 布局,会存在经典的底部 3px 的问题。
|
||||
31
16-前端综合/Express.md
Normal file
31
16-前端综合/Express.md
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
|
||||
## Express介绍
|
||||
|
||||
- Express 官方网站:<https://expressjs.com/>
|
||||
|
||||
- Express 官方网站(中文):<https://expressjs.com/zh-cn/>
|
||||
|
||||
|
||||
## Express 安装
|
||||
|
||||
安装 express:
|
||||
|
||||
```bash
|
||||
npm install express -g
|
||||
```
|
||||
|
||||
安装 express-generator,安装之后,可使用应用程序生成器工具 (express) 快速创建应用程序框架。
|
||||
|
||||
```bash
|
||||
npm install express-generator -g
|
||||
|
||||
```
|
||||
|
||||
|
||||
查看安装的 express 版本:
|
||||
|
||||
```bash
|
||||
express --version
|
||||
|
||||
```
|
||||
19
16-前端综合/ajax相关.md
Normal file
19
16-前端综合/ajax相关.md
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
|
||||
### jsonp ajax
|
||||
|
||||
ajax跨域访问是一个老问题了,解决方法很多,比较常用的是JSONP方法,JSONP方法是一种非官方方法,而且这种方法只支持GET方式,不如POST方式安全。
|
||||
|
||||
意思是说,如果后台返回的数据类型是jsonp,那么前端的请求方式只能是get,不能是post。
|
||||
|
||||
如果跨域使用POST方式,可以使用创建一个隐藏的iframe来实现,与ajax上传图片原理一样,但这样会比较麻烦。
|
||||
|
||||
因此,在**前端使用post方法,数据类型是json**的情况下,如果想跨域的话,可以通过设置Access-Control-Allow-Origin来实现跨域访问比较简单。
|
||||
|
||||
|
||||
|
||||
参考链接:
|
||||
|
||||
- [ajax 设置Access-Control-Allow-Origin实现跨域访问](https://blog.csdn.net/fdipzone/article/details/46390573/)
|
||||
|
||||
|
||||
32
16-前端综合/html相关.md
Normal file
32
16-前端综合/html相关.md
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
## SSI:服务器端嵌入
|
||||
|
||||
SSI:Server Side Include,服务器端嵌入。
|
||||
|
||||
通俗点讲,就是在本地的html页面中,插入服务器上的文件。即:静态页面中,插入动态的代码。
|
||||
|
||||
比如:
|
||||
|
||||
```html
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Document</title>
|
||||
<style>
|
||||
|
||||
</style>
|
||||
<!--#include virtual="/sinclude/common/head_inc.shtml"-->
|
||||
<!--#include virtual="/sinclude/common/head_shortcut.shtml"-->
|
||||
<!--#include virtual="head.shtml"-->
|
||||
</head>
|
||||
```
|
||||
|
||||
上面的代码中,注释里的代码,就是SSI部分,它加载的是服务器端的html页面。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
102
16-前端综合/json字符串的解析和遍历.md
Normal file
102
16-前端综合/json字符串的解析和遍历.md
Normal file
@@ -0,0 +1,102 @@
|
||||
|
||||
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Document</title>
|
||||
<script src="vue2.5.16.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<div v-for="(value,key) in myData">
|
||||
<p>{{key}}</p>
|
||||
<p>{{value.name}}</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
var dataList = [
|
||||
{ id: 11492948852, price: "49.90" },
|
||||
{ id: 11492948847, price: "39.90" }
|
||||
];
|
||||
|
||||
var datas = {};
|
||||
|
||||
var dataList2 = {
|
||||
"11492948852": {
|
||||
"3": "1",
|
||||
"spec": "",
|
||||
"imagePath": "jfs/t3136/15/8874896477/153924/ee5100df/58cb7fa8N64311629.jpg",
|
||||
"color": "白色 ",
|
||||
"name": "【多色可选】丽装铺园纯色百搭简约打底T恤女 白色 XL",
|
||||
"size": "XL"
|
||||
},
|
||||
"11492948847": {
|
||||
"3": "1",
|
||||
"spec": "",
|
||||
"imagePath": "jfs/t3109/27/9469817576/176241/aa424d04/58d4c849Ne22114ed.jpg",
|
||||
"color": "灰色 ",
|
||||
"name": "【多色可选】丽装铺园纯色百搭简约打底T恤女 灰色 S",
|
||||
"size": "S "
|
||||
},
|
||||
"11325444606": {
|
||||
"3": "1",
|
||||
"spec": "",
|
||||
"imagePath": "jfs/t4447/354/3613344795/347891/4800da35/5901549fN468c7073.jpg",
|
||||
"color": "叶脉-五骨",
|
||||
"name": "迷你超轻小太阳伞雨伞小清新口袋伞 黑胶防晒五折两用遮阳伞 防紫外线折叠太阳伞 叶脉-五骨 五折伞",
|
||||
"size": "五折伞"
|
||||
},
|
||||
"11492948848": {
|
||||
"3": "1",
|
||||
"spec": "",
|
||||
"imagePath": "jfs/t3076/90/7623078170/152165/9fe8c39d/58b94105N8ed8d2c0.jpg",
|
||||
"color": "橘色 ",
|
||||
"name": "【多色可选】丽装铺园纯色百搭简约打底T恤女 橘色 M",
|
||||
"size": "M"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
dataList.forEach(function (item) {
|
||||
for (item2 in dataList2) {
|
||||
if (item.id == item2) {
|
||||
console.log('匹配成功');
|
||||
datas[item.id] = { imagePath: dataList2[item2].imagePath, name: dataList2[item2].name }
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
console.log(JSON.stringify(datas));
|
||||
|
||||
|
||||
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
data: {
|
||||
myData: dataList2,
|
||||
|
||||
},
|
||||
methods:{
|
||||
clickMethod:function(){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
```
|
||||
10
16-前端综合/json相关.md
Normal file
10
16-前端综合/json相关.md
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
|
||||
## json中根据键获取值
|
||||
|
||||
参考链接:
|
||||
|
||||
- <http://yuxisanren.iteye.com/blog/1895807>
|
||||
|
||||
- <https://blog.csdn.net/w405722907/article/details/72828041>
|
||||
|
||||
316
16-前端综合/前端分享群整理.md
Normal file
316
16-前端综合/前端分享群整理.md
Normal file
@@ -0,0 +1,316 @@
|
||||
|
||||
|
||||
## 前言
|
||||
|
||||
以下内容,来自微信群的部分优质分享。不定期更新。文中涉及的内容和链接,均为群友自主推荐、自主分享。
|
||||
|
||||
|
||||
### 2019-05-10
|
||||
|
||||
**1、深圳-团长**:
|
||||
|
||||
新手学习Node.js
|
||||
|
||||
- 推荐狼叔的《如何正确学习Node.js》,地址:https://github.com/i5ting/How-to-learn-node-correctly
|
||||
|
||||
- Node.js国内交流社区:https://cnodejs.org/
|
||||
|
||||
- 推荐书籍:《Node.js实战》(第二版)、《Node.js调试指南》、《深入浅出Node.js》(有一定的基础后再看)、《更了不起的Node.js》(据说今年会出版)
|
||||
|
||||
备注:在一个QQ群里看到的,仅供参考。
|
||||
|
||||
**2、深圳-团长**:
|
||||
|
||||
- promise的各种用法:<https://github.com/sindresorhus/promise-fun>
|
||||
|
||||
小组的一位同事,今天在周会上重点分享和讲解了这个项目,说这个项目非常吊。
|
||||
|
||||
如果掌握了 promise 的深层次用法,绝对吊打面试官。
|
||||
|
||||
我看了下这个项目作者的介绍,也很牛逼:
|
||||
2014年之后,作为自由职业者,全职做开源社区的项目。一边做开源项目,一边背包环游东南亚,目前已经在泰国曼谷定居,但仍然每天都在做开源。
|
||||
|
||||
**3、广州-小阳**:
|
||||
|
||||
- VS Code插件推荐:Code Runner
|
||||
|
||||
我之前想跑js代码,都是写在html文件里的,然后就找到了这个。可以直接运行。
|
||||
|
||||
**4、深圳-团长**:
|
||||
|
||||
高效易用的自动标注工具:**PxCook(像素大厨)**。软件下载链接:<https://www.fancynode.com.cn/pxcook>
|
||||
|
||||
可以直接标注 Photoshop、Sketch 的设计原稿。很方便。
|
||||
|
||||
我们小组的一位前端妹子刚刚在用,大呼好用,于是一堆人跑过去围观。所以我推荐下。
|
||||
|
||||
### 2019-05-09
|
||||
|
||||
**1、上海-前端-强子**:
|
||||
|
||||
- 《[从Oracle的裁员,到“技术专家陷阱”](https://mp.weixin.qq.com/s/oiPGntttmA-NFEYQMEfwxQ)》
|
||||
|
||||
**2、上海-前端-强子**:
|
||||
|
||||
|
||||
- 阮一峰推特更新:<https://juejin.im/user/5a586bc66fb9a01cb1391339>
|
||||
|
||||
**3、深圳-团长**:
|
||||
|
||||
|
||||
- 推荐一个chrome插件:**FireShot**。滚动截长图,很流畅。
|
||||
|
||||
**3、杭州~nan**:
|
||||
|
||||
|
||||
- 《[零基础转行去阿里做前端,创业当 CTO,他是如何做到的?](https://blog.csdn.net/csdnsevenn/article/details/90033230)》
|
||||
|
||||
**4、广州-斌桑**:
|
||||
|
||||
- 《[考研到底值不值得](https://mp.weixin.qq.com/s/QPRAMmBk-gHzYQOU_0CzHg)》
|
||||
|
||||
### 2019-05-08
|
||||
|
||||
|
||||
**1、深圳-团长**:
|
||||
|
||||
- 带你了解一下科技类图书四大社:<https://www.jianshu.com/p/b65ac62bf407>
|
||||
|
||||
到目前为止有三个品牌真正立起来了,读者认、作者也认:
|
||||
|
||||
- 人民邮电出版社:图灵公司,合资企业
|
||||
|
||||
- 电子工业出版社:博文视点,全资子公司
|
||||
|
||||
- 机械工业出版社:华章公司,合资公司
|
||||
|
||||
- 而清华大学出版社没有一个拿得出手的品牌,有些可惜。
|
||||
|
||||
**2、上海-乐亦栗**:
|
||||
|
||||
偶然发现张鑫旭大佬一篇旧文,分享出来希望对大家有用。
|
||||
|
||||
- 话说我为什么要闭关学习:<http://www.zhangxinxu.com/life/?p=98>
|
||||
|
||||
一点感慨:就算张鑫旭大佬从事别的事业,肯定也是拔尖的。
|
||||
|
||||
**3、深圳-核桃**:
|
||||
|
||||
- 2018年8月中级前端开发推荐书籍:<https://zhuanlan.zhihu.com/p/40761206>
|
||||
|
||||
张鑫旭的《CSS世界》真是写的是真的好,准备翻出来看第三遍了。我最近看的书都是按照这个书单看的,前面基本还可以,从《Node.js:来一打C++扩展》后面开始感觉就有点get不到书里面的主题了。
|
||||
|
||||
### 2019-05-07
|
||||
|
||||
|
||||
**1、广州 lien**:
|
||||
|
||||
- 《[编程语言的发展趋势:从没有分号,到DSL](https://www.imooc.com/read/27/article/254)》
|
||||
|
||||
|
||||
### 2019-05-06
|
||||
|
||||
|
||||
**1、深圳-团长**:
|
||||
|
||||
- Python - 100天从新手到大师:<https://github.com/jackfrued/Python-100-Days>
|
||||
|
||||
这个项目的作者是 千锋培训机构的讲师。
|
||||
|
||||
|
||||
|
||||
**1、广州 lien**:
|
||||
|
||||
- 我司用的 mock 工具是:`eoLinker AMS 开源版本4.0`
|
||||
|
||||
**2、上海-前端-邱明**:
|
||||
|
||||
- 《[一名【合格】前端工程师的自检清单](https://juejin.im/post/5cc1da82f265da036023b628)》
|
||||
|
||||
|
||||
|
||||
### 2019-05-05
|
||||
|
||||
**1、上海-前端-强子**:
|
||||
|
||||
- 《阿里云前端技术周刊》:<https://github.com/aliyunfe/weekly>
|
||||
|
||||
|
||||
**2、武汉-林夕之间**:
|
||||
|
||||
|
||||
- 国内10大前端团队网站:<https://zhuanlan.zhihu.com/p/60091235>
|
||||
|
||||
**3、深圳-pubdreamcc**:
|
||||
|
||||
|
||||
- 腾讯新闻前端团队维护的一个周刊:<https://github.com/Tnfe/TNFE-Weekly>
|
||||
|
||||
**4、上海-gzd**:
|
||||
|
||||
- vue 作者写的 todolist:<http://todomvc.com/examples/vue/>
|
||||
|
||||
### 2019-05-01
|
||||
|
||||
**1、深圳-团长**:
|
||||
|
||||
- 《[那些年的体验技术部](https://www.yuque.com/afx/blog/those-days)》
|
||||
|
||||
**2、广州-古力**:
|
||||
|
||||
- 《[JavaScript 高性能数组去重](https://www.cnblogs.com/wisewrong/p/9642264.html)》
|
||||
|
||||
|
||||
### 2019-04-30
|
||||
|
||||
**1、成都-颜乐乐**:
|
||||
|
||||
- <https://github.com/frontend9/fe9-library>
|
||||
|
||||
这个是阿里蚂蚁为首的一群开发者发起的一个组织, 专门做前端知识布道工作, 输出各种高质量技术文章、以及各种技术教程。
|
||||
里面的文章从出门级别到架构级别的,各种框架测试其他应用层面的应有尽有。
|
||||
|
||||
|
||||
### 2019-04-28
|
||||
|
||||
**1、上海-前端-强子**:
|
||||
|
||||
分享一个小程序,名叫「GitHub专业版」。
|
||||
|
||||
**2、深圳-核桃**:
|
||||
|
||||
看到一篇to b产品UX & UI 设计总结不错。
|
||||
|
||||
- “后台产品” UX & UI 设计总结(上)- 设计要点概括:<https://zhuanlan.zhihu.com/p/28787738>
|
||||
|
||||
**3、广州Brenner**:
|
||||
|
||||
- web安全学习笔记:<https://websec.readthedocs.io/>
|
||||
|
||||
**4、北京~夜微凉**:
|
||||
|
||||
- 可能是最全的前端动效库汇总:<https://juejin.im/post/5cc089eae51d456e7d189f9d>
|
||||
|
||||
**5、成都-颜乐乐**:
|
||||
|
||||
前一段时间还撸了一个 node 爬虫:TS+puppeteer+cheerio+fs-extra
|
||||
|
||||
- <https://github.com/yanlele/node-spider>
|
||||
|
||||
因为用了headless brower 所以就算是单页应用 也不要用怕爬去不到数据、
|
||||
模仿浏览器访问也不用担心 ip 被封。
|
||||
|
||||
python 和 node 爬虫适应范围不一样。python 可以做分布式集群、做数据管理和分析, 可以直接同构代码一把梭。
|
||||
node 爬虫, 更加贴近于前端节点访问请求。
|
||||
|
||||
如果没有企业级需求, 每天抓个几百万的那种, 个人项目临时整点儿数据和或者临时需要抓取 数据,node 很好用的。
|
||||
|
||||
很简单一个道理, 我们一个后台应用, 对接十几个Java服务, 需要一个调度者去支配这些服务和调度这些服务。 当然Java也可充当这个角色, 但是node的异步非阻塞模型, 显然这这个场景, 比Java优势大。
|
||||
|
||||
可以参考阿里技术体系,他们nodejs 在服务端基本上就是发挥这个作用, 传统后端 controller -> service -> model, 可以理解为nodejs 中间层就干了 一个 controller 和 view 的工作, java 可以专注于service 业务实现。
|
||||
|
||||
推荐阅读文章:
|
||||
|
||||
- 使用JavaScript写爬虫:<https://zhuanlan.zhihu.com/p/53763115>
|
||||
|
||||
|
||||
**6、成都-颜乐乐**:
|
||||
|
||||
mysql相关的书籍推荐:《深入浅出MySQL 数据库开发 优化与管理维护》
|
||||
|
||||
|
||||
### 2019-04-27
|
||||
|
||||
**1、上海-前端-强子**:
|
||||
|
||||
- 猴子都能懂的Git入门:<https://backlog.com/git-tutorial/cn/>
|
||||
|
||||
|
||||
**2、广州-萧雪圣**:
|
||||
|
||||
- 像玩游戏闯关一样学习git!: <https://learngitbranching.js.org/>
|
||||
|
||||
### 2019-04-26
|
||||
|
||||
**1、成都-颜乐乐**:
|
||||
|
||||
推荐一个,前端测试,全干货。陆陆续续总结整理了大半年才成了现在的体系:
|
||||
|
||||
- <https://github.com/yanlele/node-index/tree/master/book/13%E3%80%81%E6%B5%8B%E8%AF%95%E4%B8%93%E9%A2%98>
|
||||
|
||||
前端单元测试,非常重要。很简单的一个例子,别人写了一个很复杂的模块功能,怎么学习别人的代码?最简单的办法,就是跑测试。
|
||||
|
||||
测试对于学习代码和看源码非常重要。
|
||||
|
||||
(深圳-团长 备注:会前端单元测试,是很加分的。虽然我不会,但准备学一学。)
|
||||
|
||||
(上海-前端-强子 备注:这个不错,别人的发的东西,先加入到需整理列表里面,后面空闲了,慢慢消化,内化成自己的知识体系。)
|
||||
|
||||
**2、成都-颜乐乐**:
|
||||
|
||||
再推荐一个,学习javascript数据结构与算法。是当年吃《javascript数据结构与算法 [巴西] Loiane Groner 著 孙晓博等译》 这本书总结的熟肉
|
||||
|
||||
- <https://github.com/yanlele/node-index/tree/master/book/09%E3%80%81%E5%AD%A6%E4%B9%A0javascript%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95>
|
||||
|
||||
吃完了文章很多东西, 用自己的语言方式组织精简过,也加了很多自己的理解和备注。
|
||||
|
||||
**3、成都-颜乐乐**:
|
||||
|
||||
吃了《javascript设计模式》 张容铭 著 这本书之后, 吐出来的熟肉:
|
||||
|
||||
- <https://github.com/yanlele/node-index/tree/master/book/04%E3%80%81js%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F>
|
||||
|
||||
这个数设计模式思想非常好,写的很棒,不过基本上都是ES5语法,这本书上出现的所有 demo 被我改成了es6 写法,计思想被我精简过和加上了一些自己的备注理解。
|
||||
|
||||
**4、北京-Rocky**:
|
||||
|
||||
- 各种免费的 PDF 在线工具:<https://www.ilovepdf.com/>
|
||||
|
||||
**5、深圳-团长**:
|
||||
|
||||
- 一名【合格】前端工程师的自检清单:<https://juejin.im/post/5cc1da82f265da036023b628>
|
||||
|
||||
**6、成都-颜乐乐**:
|
||||
|
||||
- 关于 css 实现多行**文字截断**问题:<https://segmentfault.com/a/1190000008649988>
|
||||
|
||||
|
||||
**7、杭州~nan**:
|
||||
|
||||
- 《[2019第4届中国前端开发者大会](https://mp.weixin.qq.com/s/6ZuLEQZLsu7GUquwSgJT2w)》
|
||||
|
||||
**8、深圳-团长**:
|
||||
|
||||
- 《[深圳IT互联网大厂有哪些(2019年版)](https://github.com/qianguyihao/Web/blob/master/17-%E5%89%8D%E7%AB%AF%E7%BB%BC%E5%90%88/03-%E6%B7%B1%E5%9C%B3IT%E4%BA%92%E8%81%94%E7%BD%91%E5%A4%A7%E5%8E%82%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%882019%E5%B9%B4%E7%89%88%EF%BC%89.md)》
|
||||
|
||||
**9、深圳-工兵**:
|
||||
|
||||
- IOS加**阻尼滑动**可能导致的bug和处理方法:https://www.cnblogs.com/hrone/p/10143960.html
|
||||
|
||||
(团长备注:滚动穿透、阻尼滑动,都是移动端的常见问题,可以关注下。)
|
||||
|
||||
### 2019-04-18
|
||||
|
||||
**1、深圳-团长**:
|
||||
|
||||
**蓝湖**:一款产品文档和设计图的在线协作平台。网址:<https://lanhuapp.com>
|
||||
|
||||
最近在做一个需求,我们设计师用到了这个网站。大家可以了解下,拓展视野。
|
||||
|
||||
(广州-萧雪圣补充:蓝湖,这个我上家和现在公司都在用,UI用这个出效果图,标注好各种尺寸,前端也比较好开发,还可以直接下载切图,用得好是个能提高开发效率的工具。)
|
||||
|
||||
### 2018-12-27
|
||||
|
||||
**1、上海-前端-强子**:
|
||||
|
||||
- 前端大佬汇总:<http://caibaojian.com/c/qianduan>
|
||||
|
||||
(团长备注:几位前端大佬,基本都在里面了,除了我。)
|
||||
|
||||
**2、广州Brenner**:
|
||||
|
||||
- Canvas: Draw on the web(HTML5 Canvas 教程):<https://www.yuque.com/airing/canvas>
|
||||
|
||||
(上海-前端-强子 备注:这个很不错,我前几天做分享战绩的时候就用到这个了。)
|
||||
|
||||
|
||||
13
16-前端综合/前端博客推荐.md
Normal file
13
16-前端综合/前端博客推荐.md
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
## 前端博客推荐
|
||||
|
||||
- 冴羽的博客:<https://github.com/mqyqingfeng/Blog>
|
||||
|
||||
冴羽写博客的地方,预计写四个系列:JavaScript深入系列、JavaScript专题系列、ES6系列、React系列。
|
||||
|
||||
- 颜乐乐:<https://github.com/yanlele/node-index>
|
||||
|
||||
在头条做前端,博客内容很全,尤其是“单元测试”系列。
|
||||
|
||||
|
||||
|
||||
31
16-前端综合/前端开发积累.md
Normal file
31
16-前端综合/前端开发积累.md
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
|
||||
### SPU 和 SKU
|
||||
|
||||
|
||||
SKU(stock keeping unit):库存量单位。 SKU是物理上不可分割的最小库存单元。通俗来讲,你可以把 sku 理解成是「**最小单元**」。
|
||||
|
||||
SPU(Standard Product Unit):标准化产品单元。是商品信息聚合的最小单位。通俗来讲,你可以把 spu 理解成是「**某一类的单元**」。
|
||||
|
||||
比如说,针对 Kindle paperwhite4 这款阅读器,颜色分白色、黑色两种。那么,白色和黑色的sku是不一样的。因此,Kindle paperwhite4 这款阅读器有「**两个sku、一个spu**」。
|
||||
|
||||
再比如说,针对 iPhone 8 这款手机,颜色有银色、红色、金色三种,存储空间有分64G、256G两种。那么,64G和256G的sku是不一样的;不同的颜色,也代表着不同的sku。因此,iPhone 8 这款手机有「**六个sku、一个spu**」。
|
||||
|
||||
单品:对一种商品而言,当其品牌、型号、配置、等级、花色、包装容量、单位、生产日期、保质期、用途、价格、产地等属性中任一属性与其他商品存在不同时,可称为一个单品。
|
||||
|
||||
### 移动端WebApp前端真机调试:iPhone/iOS借助Safari进行真机调试
|
||||
|
||||
(1)手机端:设置 → Safari → 高级 → Web 检查器 → 开。
|
||||
|
||||
(2)mac端:Safari → 偏好设置 → 高级 → 在菜单栏中显示“开发”菜单。
|
||||
|
||||
(3)在 OS X 中启动 Safari 之后,以 USB 电缆正常接入 iOS 设备,并在此移动设备上启动 Safari。此时点击计算机上的 Safari 菜单中的“开发”,可以看到有 iOS 设备的名称显示,其子菜单项即为移动设备上 Safari 的所有标签页,点击任意一个开始调试。如下:
|
||||
|
||||

|
||||
|
||||
参考链接:
|
||||
|
||||
- [移动端前端开发真机调试攻略](https://juejin.im/entry/563ab66400b0bf37d79aa17d)
|
||||
|
||||
- [iOS、Android 之类的如何调试 Web APP](https://segmentfault.com/q/1010000000124121)
|
||||
|
||||
4
16-前端综合/前端语录.md
Normal file
4
16-前端综合/前端语录.md
Normal file
@@ -0,0 +1,4 @@
|
||||
### 2020-04-19
|
||||
|
||||
语言的强大在于它的生态。如果是站在巨人的肩膀上,就不用做太多重复的事情。
|
||||
|
||||
10
16-前端综合/网友对本项目提的建议.md
Normal file
10
16-前端综合/网友对本项目提的建议.md
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
|
||||
|
||||
- 图片的宽度,最好不要超过800px,否则在github上显示不完整,甚至无法显示。
|
||||
|
||||
- 建议把图片压缩后再上传。图片大小最好控制在100kb左右。比如说,[javascript-tutorial-cn](https://github.com/iliakan/javascript-tutorial-cn)这个项目,在这方面就做得很好。
|
||||
|
||||
比如`20180223_2201.gif`这张图,原本是500kb,我压缩后重新上传,是200kb。
|
||||
|
||||
再比如`20180611_2130.png`这张图,原本是400kb,我压缩后重新上传,是200kb。
|
||||
Reference in New Issue
Block a user