찾다
웹 프론트엔드H5 튜토리얼React를 활용한 웹사이트 작성 경험

React를 활용한 웹사이트 작성 경험

Jun 21, 2017 pm 03:24 PM
react사용개정웹사이트

웹사이트는 졸업 프로젝트입니다. 이 웹사이트를 개발하는 목적은 주로 몇 가지 메모를 기록하고 일부 정보를 집계하는 것입니다. 온라인 세계에서 기술적 아이디어를 연습할 수 있는 조용한 장소라고도 할 수 있습니다.

처음에는 웹사이트의 프론트엔드를 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 <input>  }
}
class ParentComponent extends Component {
  constructor () {
    super()this.state = {
      val: ''}
  }
  inputChange (val) {this.setState({val})
  }
  render () {return (      <section>{this.state.val}<inputcomponent></inputcomponent>
      </section>    )
  }
}

如果使用如下的写法或许看起来更好

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

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

새로운 기술을 배우는 가장 기본적인 방법은 당연히 관련 문서를 읽는 것입니다. 단일 페이지 애플리케이션으로서 프론트 엔드 라우팅은 물론 React를 사용한다면 놓칠 수 없습니다. Reduce를 사용하면 제 역할을 하지 않는 것처럼 느껴집니다(실제로 필요한 관계는 없지만). 그래서 여기서는 <code>react, react-router, react-redux를 사용합니다. 다음은 React를 사용한 개발입니다. 이 글을 읽으셨다니 다행입니다. 잘못된 내용이 있을 경우, 실수로 함정에 빠지게 되더라도 저는 책임을 지지 않습니다.

첫 번째 단계는 React 문서를 읽는 것입니다. 문서에서는 React를 디자인하는 방법 등 개발에 사용하는 방법을 소개하기 위해 많은 예제를 사용합니다. code>state, props, 컴포넌트 간 통신 방법, 컴포넌트 디자인 방법 등 문서에는 자세히 소개되어 있지만 아름다움을 발견하기 위해서는 실제적인 연습이 필요한 경우가 많습니다. 예를 들어 stateprops의 디자인에는 XYZ가 있습니다. > 구성 요소 >두 개의 구성 요소, Y 구성 요소에 입력 상자가 있다고 가정하고 Z 구성 요소는 Y에서 입력한 값을 사용해야 할 수도 있습니다. code> 컴포넌트를 확실하게 하기 위해서는 당연히 함께 작성하는 것이 불가능하지는 않지만, 컴포넌트 재사용, 단일 기능 등을 고려하면 어떤 컴포넌트에 이 값을 저장해야 할까요? 다음 두 구성 요소는 <code>YX입니다. 이 디자인은 분명히 state 디자인을 따르지 않으며 중복되는 부분이 너무 많습니다. 🎜
rrreee
rrreee
🎜다음 작성 방법을 사용하시면 더 보기 좋을 것 같습니다🎜
rrreee
rrreee
🎜react-router는 프런트 엔드 라우팅에 대한 기본 요구 사항을 제공합니다. 이에 따라 프로젝트 문서 소개에서 구체적인 사용법을 찾을 수 있습니다. 당신이 필요로하는 기능에 방법. 기본 구성은 다른 프레임워크와 유사하지만 많은 API의 사용은 vue와 비교하여 상당히 다릅니다. 예를 들어 vueIndexRoute는 하위 경로의 ''와 같은 null 문자를 기본 UI로 사용할 수 있습니다. 코드>. 🎜
rrreee
🎜react-redux는 표면적으로 Redux를 이해하는 방법을 간략하게 소개했습니다. Redux를 사용하면 개발 중에 생각하는 시간이 줄어들고 발생할 수 있는 몇 가지 문제를 피할 수 있습니다. 사용 중에 몇 가지 문제가 발견되었습니다. Redux를 사용하면 필연적으로 구성 요소에 많은 수의 디스패치가 나타나게 됩니다. 복잡하고 커지는 것도 생각해 볼 가치가 있습니다. 개정된 웹사이트는 페이지 + 구성 요소 방식을 사용하여 개발되었습니다. 페이지는 다음 구성 요소를 제외하고 가장 진보된 구성 요소를 나타냅니다. 페이지에서만 reducer에 대한 작업, 여러 구성 요소가 공유하는 모든 데이터는 페이지에 있는 하위 구성 요소의 <code>props로 전달됩니다. 하위 구성 요소가 데이터를 업데이트해야 하는 경우 props를 통해 상위 구성 요소를 호출합니다. code> 속성에서 구성요소가 전달한 메소드는 페이지에서 dispath를 사용하여 데이터에 대한 reducer를 호출하도록 지정합니다. 물론 업데이트가 필요한 경우도 있습니다. action에서 처리한 후 dispathaction에서 reducer로 이동합니다( 네트워크 요청 등). actiondispath할 때마다 Redux는 등록된 모든 reducer를 순회한다는 점은 주목할 가치가 있습니다. (reducer는 종종 구성됩니다. 여러 하위 리듀서로 구성), 즉 모든 리듀서가 호출됩니다(이는 프로젝트의 성능 및 문서의 경우입니다). 여기 리듀서가 있습니다. 개정된 웹사이트에서 사용하는 코드 >코드의 일부. 🎜<div class="cnblogs_code">rrreee</div> <div class="cnblogs_code">rrreee</div>🎜<code>React를 실제로 처음 사용해본 소감 개발에는 Redux 및 기타 상태 관리 도구가 사용되며(vuex도 사용되지만 전체 프로젝트를 기반으로 하지 않음) 개발 프로세스를 보다 쉽게 ​​제어할 수 있고 데이터 흐름 방향이 명확해지며, 개발 커플링의 각 도구도 더 낮으며 전반적으로 이는 좋은 시도입니다. 그러나 개인적으로 어떤 기술을 사용하든 비즈니스가 성장할수록 복잡성은 확실히 더 높아지고, 안정적이고 강력하며 유지 관리가 쉬운 프로젝트를 유지하는 것이 더 어려워질 것이라고 생각합니다. 🎜🎜마지막으로 좋은 프로그래밍 습관의 중요성을 한탄해야 합니다. 🎜

위 내용은 React를 활용한 웹사이트 작성 경험의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
H5 : 웹 표준 및 기술의 발전H5 : 웹 표준 및 기술의 발전Apr 15, 2025 am 12:12 AM

웹 표준과 기술은 현재까지 HTML4, CSS2 및 간단한 JavaScript에서 발전했으며 중대한 개발을 거쳤습니다. 1) HTML5는 캔버스 및 웹 스토리지와 같은 API를 도입하여 웹 응용 프로그램의 복잡성과 상호 작용을 향상시킵니다. 2) CSS3은 애니메이션 및 전환 기능을 추가하여 페이지를보다 효과적으로 만듭니다. 3) JavaScript는 화살표 기능 및 클래스와 같은 Node.js 및 ES6의 최신 구문을 통해 개발 효율 및 코드 가독성을 향상시킵니다. 이러한 변경으로 인해 웹 애플리케이션의 성능 최적화 및 모범 사례의 개발이 촉진되었습니다.

H5는 HTML5의 속기입니까? 세부 사항을 탐색합니다H5는 HTML5의 속기입니까? 세부 사항을 탐색합니다Apr 14, 2025 am 12:05 AM

H5는 HTML5의 약어 일뿐 만 아니라 더 넓은 현대 웹 개발 기술 생태계를 나타냅니다. 1. H5는 HTML5, CSS3, JavaScript 및 관련 API 및 기술을 포함합니다. 2. 그것은 더 풍부하고 대화식이며 부드러운 사용자 경험을 제공하며 여러 장치에서 원활하게 실행할 수 있습니다. 3. H5 기술 스택을 사용하여 반응 형 웹 페이지와 복잡한 대화식 기능을 만들 수 있습니다.

H5 및 HTML5 : 웹 개발에 일반적으로 사용되는 용어H5 및 HTML5 : 웹 개발에 일반적으로 사용되는 용어Apr 13, 2025 am 12:01 AM

H5 및 HTML5는 동일한 것을, 즉 html5를 나타냅니다. HTML5는 HTML의 다섯 번째 버전으로 시맨틱 태그, 멀티미디어 지원, 캔버스 및 그래픽, 오프라인 스토리지 및 로컬 스토리지와 같은 새로운 기능을 제공하여 웹 페이지의 표현성 및 상호 작용성을 향상시킵니다.

H5는 무엇을 언급합니까? 맥락 탐색H5는 무엇을 언급합니까? 맥락 탐색Apr 12, 2025 am 12:03 AM

h5referstohtml5, apivotaltechnologyinwebdevelopment.1) html5introducesnewelements 및 dynamicwebapplications.2) itsupp ortsmultimediawithoutplugins, enovannangeserexperienceacrossdevices.3) SemanticLementsImproveContentsTructUreAndSeo.4) H5'Srespo

H5 : 도구, 프레임 워크 및 모범 사례H5 : 도구, 프레임 워크 및 모범 사례Apr 11, 2025 am 12:11 AM

H5 개발에서 마스터 해야하는 도구 및 프레임 워크에는 vue.js, React 및 Webpack이 포함됩니다. 1.vue.js는 사용자 인터페이스를 구축하고 구성 요소 개발을 지원하는 데 적합합니다. 2. 복잡한 응용 프로그램에 적합한 가상 DOM을 통해 페이지 렌더링을 최적화합니다. 3. Webpack은 모듈 포장에 사용되며 리소스로드를 최적화합니다.

HTML5의 유산 : 현재 H5 이해HTML5의 유산 : 현재 H5 이해Apr 10, 2025 am 09:28 AM

html5hassignificallytransformedwebdevelopmentbyintranticalticlementements, 향상 Multimediasupport 및 Improvingperformance.1) itmadewebsitessmoreaccessibleadseo 친환경적 인 요소, 및 .2) Html5intagnatee

H5 코드 : 접근성 및 시맨틱 HTMLH5 코드 : 접근성 및 시맨틱 HTMLApr 09, 2025 am 12:05 AM

H5는 시맨틱 요소 및 ARIA 속성을 통해 웹 페이지 접근성 및 SEO 효과를 향상시킵니다. 1. 컨텐츠 구조를 구성하고 SEO를 개선하기 위해 사용합니다. 2. Aria-Label과 같은 ARIA 속성은 접근성을 향상시키고 보조 기술 사용자는 웹 페이지를 원활하게 사용할 수 있습니다.

H5는 html5와 동일합니까?H5는 html5와 동일합니까?Apr 08, 2025 am 12:16 AM

"H5"와 "HTML5"는 대부분의 경우 동일하지만 특정 시나리오에서는 다른 의미를 가질 수 있습니다. "HTML5"는 새로운 태그와 API를 포함하는 W3C 정의 표준입니다. "H5"는 일반적으로 HTML5의 약어이지만 모바일 개발에서는 HTML5를 기반으로 한 프레임 워크를 참조 할 수 있습니다. 이러한 차이를 이해하면 프로젝트 에서이 용어를 정확하게 사용하는 데 도움이됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기