add:react入门介绍

This commit is contained in:
qianguyihao
2019-02-08 20:10:20 +08:00
parent 96b58c88bb
commit 766e865455
55 changed files with 215 additions and 0 deletions

View File

@@ -1,386 +0,0 @@
## 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>

View File

@@ -1,121 +0,0 @@
> 本文最初发表于[博客园](http://www.cnblogs.com/smyhvae/p/8776837.html),并在[GitHub](https://github.com/smyhvae/Web)上持续更新**前端的系列文章**。欢迎在GitHub上关注我一起入门和进阶前端。
> 以下是正文。
我前几天写过一篇文章:[《裸辞两个月海投一个月从Android转战Web前端的求职之路》](http://www.cnblogs.com/smyhvae/p/8732781.html)。这篇文章讲述了我在转型过程中的亲身经历和感受,不少童鞋私信问我怎么入门前端,于是有了这篇文章。
## Web前端入门的自学路线
> 新手入门前端,需要学习的**基础内容**有很多,如下。
一、HTML、CSS基础、JavaScript语法基础。学完基础后可以仿照电商网站例如京东、小米做首页的布局。
二、JavaScript语法进阶。包括作用域和闭包、this和对象原型等。相信我JS语法永远是面试中最重要的部分。
三、jQuery、Ajax等。
四、ES6语法。这部分属于JS新增的语法面试必问。其中关于promise、async等内容要尤其关注。
五、HTML5和CSS3。要熟悉其中的新特性。
六、canvas。面试时有的公司不一定会问canvas靠运气。如果时间不够这部分的内容可以先不学。
七、移动Web开发、Bootstrap等。要注意移动开发中的适配和兼容性问题。
八、前端框架Vue.js和React。这两个框架至少要会一个。入门时建议先学Vue.js上手相对容易。
九、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就相对轻量很多。个人总结一下新手一般用 WebStorm入门之后用 VS Code 的人更多。
## 推荐的学习视频
> 我看过的学习视频,多的数不清。传智播客、尚硅谷、慕课网、极客学院等等,这些只是冰山一角。下面推荐一些。
温馨提示不一定是从头到尾看可以选择性地看。另外要倍速播放我一般是用1.5倍的速度播放。
### 传智播客
传智黑马2018 Web前端全套
- 学习路线图:<http://bbs.itheima.com/thread-391250-1-1.html>
- 视频资源:<http://www.itcast.cn/news/20180209/11421176192.shtml>
- 官方视频库:<http://yun.itheima.com/course/c135.html>
PS上面这三个链接指向的的是同一个学习资源。
黑马的视频很新可以找官方的QQ要配套的PPT和源码。
### 尚硅谷
尚硅谷 2018 Web前端全套
- 视频资源:<https://www.52pojie.cn/thread-688171-1-1.html>
- 官方视频库:<http://www.gulixueyuan.com/course/explore/front>
PS上面这两个链接指向的的是同一个学习资源。
尚硅谷的视频里讲JS语法和ES6的部分很不错。
## 推荐的图文教程
看视频还是比较花时间的你也可以看看图文教程。我在GitHub上有一个Web前端入门的学习教程非常详细地址是
> <https://github.com/smyhvae/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按下回车后发生了什么
为了清楚这个问题看上面这本书足够了。如果你想入门计算机网络这本书也是必读的。评价非常高。关于网络连接的问题也有一些github项目
- <https://github.com/alex/what-happens-when>
## 推荐的链接
待更新。
PS今天先写到这里。本文内容不定期更新。
## 我的公众号
想学习<font color=#0000ff>**代码之外的技能**</font>?不妨关注我的微信公众号:**千古壹号**id`qianguyihao`)。
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
![](http://img.smyhvae.com/2016040102.jpg)

View File

@@ -1,61 +0,0 @@
## 前言
我们知道,在控制台里可以添加很多设备。我们需要点击 edit手动添加
img
添加时,是根据 User agent 来识别的:
img
不同浏览器(包括微信内置的浏览器)的 useragent 信息,是不一样的,我们可以根据 `navigator.userAgent`属性来获取。
比如说,我们在控制台输入`navigator.userAgent`,如下:
![](http://img.smyhvae.com/20180425_1656.png)
上图显示MacOS上的Chrome浏览器的 UserAgent 是:
```
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36"
```
## 不同浏览器的 UserAgent
iPhone版微信
```
Mozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E233 MicroMessenger/6.3.15 NetType/WIFI Language/zh_CN
```
Android版微信
```
Mozilla/5.0 (Linux; Android 5.0.1; GT-I9502 Build/LRX22C; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.121 Mobile Safari/537.36 MicroMessenger/6.1.0.78_r1129455.543 NetType/WIFI
```
Android版微信
```
Mozilla/5.0 (Linux; Android 5.0.1; GT-I9502 Build/LRX22C; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.121 Mobile Safari/537.36 MicroMessenger/6.1.0.78_r1129455.543 NetType/WIFI
```
## 参考链接
- [判断微信内置浏览器的UserAgent](http://www.cnblogs.com/7z7chn/p/5370352.html)
- [微信内置浏览器UserAgent的判断](https://gist.github.com/wjp2013/fff34c063cf0cf227d65)

View File

@@ -1,19 +0,0 @@
### 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/)

View File

@@ -1,10 +0,0 @@
### p标签里的文字溢出怎么办
加一个属性即可:
```css
word-break: break-all;
```

View File

@@ -1,32 +0,0 @@
## SSI服务器端嵌入
SSIServer 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页面。

View File

@@ -1,102 +0,0 @@
```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>
```

View File

@@ -1,10 +0,0 @@
## json中根据键获取值
参考链接:
- <http://yuxisanren.iteye.com/blog/1895807>
- <https://blog.csdn.net/w405722907/article/details/72828041>

View File

@@ -1,14 +0,0 @@
前端中的一些概念.md
## SPU 和 SKU
### SKU
SKUstock keeping unit库存量单位。 SKU是物理上不可分割的最小库存单元。
比如说同一款手机颜色有白色、红色那么白色和红色的sku是不一样的。
单品:对一种商品而言,当其品牌、型号、配置、等级、花色、包装容量、单位、生产日期、保质期、用途、价格、产地等属性中任一属性与其他商品存在不同时,可称为一个单品。

View File

@@ -1,28 +0,0 @@
## 移动端WebApp前端真机调试
### iPhone/iOS借助Safari进行真机调试
1手机端设置 → Safari → 高级 → Web 检查器 → 开。
2mac端Safari → 偏好设置 → 高级 → 在菜单栏中显示“开发”菜单。
3在 OS X 中启动 Safari 之后,以 USB 电缆正常接入 iOS 设备,并在此移动设备上启动 Safari。此时点击计算机上的 Safari 菜单中的“开发”,可以看到有 iOS 设备的名称显示,其子菜单项即为移动设备上 Safari 的所有标签页,点击任意一个开始调试。如下:
![](http://img.smyhvae.com/20180621_1900.png)
参考链接:
- [移动端前端开发真机调试攻略](https://juejin.im/entry/563ab66400b0bf37d79aa17d)
- [iOS、Android 之类的如何调试 Web APP](https://segmentfault.com/q/1010000000124121)

View File

@@ -1,17 +0,0 @@
### 2018-12-27
- 前端大佬汇总:<http://caibaojian.com/c/qianduan>
几位前端大佬,基本都在里面了,除了我。
- Canvas: Draw on the webHTML5 Canvas 教程):<https://www.yuque.com/airing/canvas>
有位网友,前几天做分享战绩的时候就用到了这个。

View File

@@ -1,10 +0,0 @@
- 图片的宽度最好不要超过800px否则在github上显示不完整甚至无法显示。
- 建议把图片压缩后再上传。图片大小最好控制在100kb左右。比如说[javascript-tutorial-cn](https://github.com/iliakan/javascript-tutorial-cn)这个项目,在这方面就做得很好。
比如`20180223_2201.gif`这张图原本是500kb我压缩后重新上传是200kb。
再比如`20180611_2130.png`这张图原本是400kb我压缩后重新上传是200kb。