百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> 运用React写一个网站的心得体味-
分享文章到:

运用React写一个网站的心得体味-

发布时间:08/01 来源:未知 浏览: 关键词:
网站是结业设计的作品,开发这个网站的目的主要用于记载一些条记,以及聚合一些资讯信息,也算本人在网络天下中的一块静地吧,可以在这里一些技术上设法的实践。网站最初前端运用vue开发,在前段工夫因为项目的开发进度已经不是那么危急,有了一些余暇工夫。而对没有运用过React又不断念兹在兹,干脆就运用React进行了一次 网站是结业设计的作品,开发这个网站的目的主要用于记载一些条记,以及聚合一些资讯信息,也算本人在网络天下中的一块静地吧,可以在这里一些技术上设法的实践。

网站最初前端运用vue开发,在前段工夫因为项目的开发进度已经不是那么危急,有了一些余暇工夫。而对没有运用过React又不断念兹在兹,干脆就运用React进行了一次前端的重构。

学习一门新的技术最根本的固然就是浏览相干文档了,作为一个单页面利用前端路由固然是不成能少了,而运用React要是不运用Reduce那又感觉发挥不其作用(虽然他们其实也没什么必需的关系)。所以在这里运用了reactreact-routerreact-redux,下列为在运用React开发中的一些见闻,有幸被你看到该文,若有不合错误之处,还望指出,要是你不当心被带入坑,自己概不负责。

第一就是浏览React的文档了,文档运用批量举例的情势介绍怎样运用React进行开发,如怎样设计stateprops,怎样组件间通讯,怎样设计组件等。文档虽然进行了细致的介绍,但是往往还是需要真正的实践才干发明其中的妙处。如stateprops的设计,在一个X组件中具有YZ两个组件,假如Y组件具有一个输入框,而Z组件可能需要用到Y组件输入的值做出一定的变化,固然要是把他们写到一起也不是不成以的,但是考虑到组件复用,功能单一等因素还是拆开比拼合理,那么这个值到底应当哪个组件来贮存呢?如下两个组件离别为YX,这样设计显明是不相符state设计的,具有太多冗余局部。

class InputComponent extends Component {
  constructor () {
    super()this.state = {
      value: ''}
  }
  valInput (e) {
    let value =  e.target.valuethis.setState({value})this.props.inputChange(value)
  }
  render () {return   }
}
class ParentComponent extends Component {
  constructor () {
    super()this.state = {
      val: ''}
  }
  inputChange (val) {this.setState({val})
  }
  render () {return (      
{this.state.val}
) } }

要是运用如下的写法也许看起来更好

class InputComponent extends Component {
  render () {
    let {val, inputChange} = this.props// 这里的val并不是必需的,但是当一个值来自非输入控件的时候,如可编纂的div,ace在每次施行render函数的时候都会致使本来输入的值被清空。return   }
}
class ParentComponent extends Component {
  constructor () {
    super()this.state = {
      val: ''}
  }
  inputChange (e) {this.setState({val: e.target.value})
  }
  render () {
    let val = this.state.valreturn (      
{val}
) } }

react-router供给了前端路由根本的需求,依据需要运用到的功能在项目文档介绍中即可寻到概括运用办法。根本的配置和其他框架也是大同小异,但是许多API的运用确有些天差地别(和vue比拟),还是需要细心通读文档的,避免在开发中涌现题目再去解决浪费工夫,如IndexRoutevue中可以在子路由通过''这样的空字符来作为默许UI

function root () {  this.path = '/'  this.component = require('pages/index').default}function demo () {  this.path = 'demo'  this.getComponent = (nextstate, cb) => {
    require.ensure([], (require) => {
      cb(null, require('pages/demo').default)
    })
  }
}
const createRoute = (R) => {
  let route = new R()
  route.childRoutes = route.childRoutes && route.childRoutes.map(r => createRoute(r))  return route
}

export default [root, demo].map((route) => createRoute(route))

react-redux在从表象了解Redux中进行了简略介绍。Redux的运用减少了开发中思索的工夫,同时也以免了一些可能的题目。在运用历程中也发明一些题目,运用Redux必定致使批量的dispatch涌现在组件中,怎样防止业务变得复杂和巨大后致使项目变得难以保护,也是值得思索的。在被改版的网站中运用页面+组件的方式开发,一个页面表示除了跟组件外的最高级组件,可具有多个组件,只要页面才干向reducer发起action,所有多个组件共用的数据则通过在页面中通报到子组件的props,子组件要是需要更新数据,则通过props属性调取父组件传入的办法向上通报下令,在页面中运用dispath来指定action来调取reducer进行数据更新,固然有时候也需要在action中进行处置后在dispathactionreducer(比方网络要求)。值得注意的是每次dispath一个actionRedux都会遍历所有已经注册的reducer(reducer往往由多个子reducer组成),也就是说所有reducer都会被调取(从项目中的体现和文档来看是这样的),一下是被改版网站运用的reducer局部代码。

export default class ArticleReducer {
  [AAS.ARTICLE_REQUEST_STATE] (state, action) {return Object.assign({}, state, {loading: action.loading})
  }
  [AAS.ARTICLE_SEARCH_STATE] (state, action) {return Object.assign({}, state, {searching: action.searching})
  }
}
const reducers = {}
const AR = new ArticleReducer()
const NR = new NewsReducer()
reducers.articles = (state = initState.article, action) => {  return AR[action.type] ? AR[action.type](state, action) : state
}
reducers.editor = (state = initState.editor, action) => {  return ER[action.type] ? ER[action.type](state, action) : state
}

就运用React后的感觉,因为首先次真正运用Redux这样的状态治理工具来进行进行开发(虽然也有运用vuex,但是都不是基于整个项目的),开发流程变得更加可控,数据流向变得清晰,而在开发中各个工具耦合性也变得更低,总的来说这是一次不错的尝试。不外个人觉得无论运用什么技术,复杂程度随着业务的添加必然变得更高,而要保持一个项目的不乱,强健,易于保护将变得更加艰难。

最后不得不感慨,良好编程习惯的重要性。

以上就是运用React写一个网站的心得体味的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板