categories: [Design]
开发中使用到的技术:React + Redux + Gulp + Browserify。利用Browserify
,可以将JSX
转化为JS
代码,同时允许使用require
实现项目的模块化。Gulp
完成代码的打包。Browserify
和Gulp
的相关代码在gulpFile.js
中,比较简单,不在此赘述。
项目中,需要实现四个组件:CanvasComponent、InputComponent、ListComponent 和 MenuComponent。
Redux
Action/type.js
在Redux
中,type
告诉reducer
这是何种action
。
Action/action.js
根据上面的type
,列出相应的action creator
。
Reducer/data.js
存储默认的数据,格式为:
Reducer/reducer.js
首先判断localStorage
中是否存在数据,若不存在,用data.js
中的数据初始化,若存在,读取localStorage
中的数据。
根据action
的type
做相应的处理。
React
canvas.js
canvas.js
渲染主界面,包含人的眼睛、嘴、显示框和按钮。该组件需要外部传入三个props
: btnText = {start: “xxx”, stop: “xx”}, initText = “xxxx”, blankText = “xxxx”。分别表示按钮的文本、显示框初始文本和菜单无数据时的显示框的文本。
其中mapStateToProps
将state
映射为组件的props
,mapDispatchToProps
实现action
的分发。
list.js
list.js
展现菜单中的一条数据,同时可实现该数据的删除。该组件需要外部传入的props
为:listText = “xxx”。
input.js
input.js
实现了为菜单列表添加数据的功能。
menu.js
menu.js
调用input.js
和list.js
,为用户展示备选数据,同时包含一个点击按钮,实现菜单的展示与隐藏。
main.js
main.js
实现最终的展示。
为了让所有组件都能获取到store
,根组件必须包裹在Provider
中,并将store
作为参数传给Provider
。
其它
项目中所用的CSS
和HTML
在此就不贴出来了,值得一提的是,为了能够在 PC 端和移动端都有良好的展示效果,HTML
中设置initial-scale
为 0.8(根据canvas大小和不同机型的分辨率所计算得到)。