JAVASCRIPT
JavaScript是一门解释性语言,定义变量时统一使用let。
Array
- filter({condition})——筛选数组中某一部分元素
- concat({list})——将两个数组组合,返回组合后的数组
- map((listItem, index)=>{})——对array中的每一个元素执行操作,可以接受两个参数,第二个参数代表当前元素的下标。并将结果保存在当前数组。
- forEach()——与map类似,但不返回结果到当前数组
- some({condition})——如果数组存在满足条件的元素则返回true,否则返回false
- every({condition})——如果数组每个元素都满足条件,则返回true,否则返回false
解构赋值
let [a, b] = [1, 2, 3] ==> a = 1, b = 2
——自动将元素按顺序赋值,多余的舍弃let [c, d] = [{item: apple, count: 1}, 23]==>c = {item:apple, count: 1}, d = 23
——粒度可以自由变化let props={a: 1, b: 2, c: 3}; {...props}==>{a: 1}, {b:2}, {c:3}
——...
表示将一个可迭代对象的元素展开为参数序列。
模板字符串
Hello ${Variable}
模板字符串使用()包裹内容,可以在字符串中添加变量,简化代码。
assign
Object.assign(src1, src2...)
使用assign可以连接多个相同类型的数据,如{},[]等对象,并返回组合对象的深拷贝。对于{}对象,assign会自动找到相同的key,并使用后面的value替换之前的value(eg.Object.assign({value:2, text:'test'}, {value:1})==>{value:1, text:'test'}
)
HTML
HTML语言不是编程语言,而是一种标记语言,其通过标签
根据HTML从上到下的渲染机制,在HTML中引入.css文件需要将其添加在
内部,保证内的样式能够正确渲染。Emmet
使用Emmet插件极大的提升编写HTML代码的效率。eg. ul>li*4表示在ul标签下连续创建4个li标签。
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
BootStrap
BootStrap是一种前端框架,其自带的栅格系统可以很方便的解决HTML中的布局问题,其主要通过在块级元素
CSS
CSS用于控制HTML内容的样式,语法非常简单,只有一种语法:selector {declaration1;declaration2;...}
display属性
- block:块级显示。一个块级元素会新开一行并尽可能撑满容器
- inline:行内显示。宽高无用
- none:隐藏显示。不会保留该元素的占位。visiblility则保留
- inline-block:行内块元素,同时具有块元素的宽高属性和行内元素的同行属性
- table:此元素会作为块级表格显示,表格前后带有换行符
- inline-tabel:此元素会作为内联表格显示。表格前后没有换行符
盒子模型
html文档中的每一个元素都被描绘成矩形盒子,该盒子通过一个模型来描述其占用空间的大小,这个模型就叫做盒子模型。盒子模型通过四个边界描述:margin(外边界),border(边框),padding(内边界),content(内容)。
对于行内元素的非替换元素,eg.a, span标签等。
- 可以设置margin-left, margin-right属性,无法设置margin-top, margin-bottom属性。
- 行内元素border和padding可以设置,但是border-top和padding-top到页面顶部后就不再增加。
对于替换元素,eg. input, img标签等则margin,border,padding都有效果。
React
React主要作用在于View层的渲染,Redux则负责数据的储存和传递。在使用React构建网站时需要遵循以下原则:
- 构建组件树
- 为组件数添加相应的state和props
- 编码实现静态组件树
- 为静态网页架构添加数据
- 编写数据交互逻辑
在使用React时,需要特别注意将所有的数据与HTML架构分离,数据统一由state或者Redux储存,然后通过props进行传递。
相较于webpack繁杂的配置步骤,使用npx create-react-app {repo_name}
可以快速构建React环境进行编码。
Redux
Redux的核心概念包括三部分:action,reducer,store。
特别需要注意的是reducer中,;不能对store中储存的状态进行任何更改,需要使用Object.assign对元素进行深拷贝。
React-Redux
使用过程中需要在React的根标签部分包裹
一个React与Redux通信的代码示例如下:
reducer.js:
const initState = [{...}, {...}];
const reducer = (prevState, action) => {
switch(action.type){
case "ACTION_TYPE":
return Object.assign([],prevState, ...);
}
default:
return prevState;
}
component.js:
import React from 'react';
import {connect} from 'react-redux';
const Component = (props) => {
return <tag>
...
</tag>
}
const mapStateToProps = state => {
return {
prop1:state.prop1,
prop2:state.prop2
};
}
const mapDispatchToProps = dispatch => {
return {
handleClicked:(params)=>{
dispatch({
type:"ACTION_TYPE",
...
})
}
}
}
const VisibleComponent = connect(mapStateToProps, mapDispatchToProps)(Component)
export default VisibleComponent;