Code Monkey home page Code Monkey logo

reactbkk / react-in-patterns-th Goto Github PK

View Code? Open in Web Editor NEW

This project forked from krasimir/react-in-patterns

227.0 227.0 83.0 165.88 MB

หนังสือแจกฟรีที่อธิบายเกี่ยวกับดีไซน์แพตเทิร์นและเทคนิคที่ใช้สำหรับการพัฒนาเว็บแอพพลิเคชันด้วย React

Home Page: https://reactbkk.gitbook.io/react-in-patterns-th/

License: MIT License

HTML 3.95% JavaScript 95.62% CSS 0.43%
book react

react-in-patterns-th's People

Contributors

addnab avatar athivvat avatar bazsup avatar binkpitch avatar chayakornwc avatar colincrawford avatar da-vaibhav avatar ericandrewlewis avatar floriangosse avatar hprobotic avatar infertux avatar jetarin-min avatar kcfinished avatar kohpai avatar kykungz avatar lowkorn avatar mamal72 avatar microbenz avatar ne-smalltown avatar npraew avatar redian avatar ryanrw avatar selrond avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-in-patterns-th's Issues

เซ็ตอัพ storybook ให้โปรเจกต์ reactbkk/3.0.0

เริ่มจอง วันพฤหัสที่ 7 มิถุนายน 2018, 17:00 น.

Tasks

  1. เซ็ตอัพ storybook ในโปรเจกต์ reactbkk/3.0.0

  2. เอา UI ของหน้า RedeemDialog มาใส่ใน storybook โดยให้สามารถแสดงผล UI ของ state ต่อไปนี้:

    • initial: { status: 'initial' }
    • error: { status: 'error', error: 'Error message' }
    • signingIn: { status: 'signingIn' }
    • checking: { status: 'checking' }
    • checked (not found): { status: 'checked', code: '', admin: false }
    • checked (found): { status: 'checked', code: 'ABCDEF', admin: false }
    • checked (admin): { status: 'checked', code: 'ABCDEF', admin: true }

    เนื่องจากตอนนี้่โค้ดที่เป็นส่วน logic ของหน้า RedeemDialogContent ยังปนอยู่กับโค้ดส่วนที่เป็น UI ให้แยกโค้ดสองส่วนนี้ออกจากกันก่อนครับ :D

แก้ Gatsby [v2] ให้สร้างแท็ก <link rel='prefetch'> จากคอมเม้นต์ webpackPrefetch

ที่มาที่ไปของโจทย์นี้

  • เราสามารถทำเว็บให้โหลดเร็วขึ้นโดยการใส่ <link rel="prefetch/preload/prerender/preconnect/dns-prefetch"> เพื่อบอกเบราเซอร์ให้เตรียมโหลดไฟล์เผื่อไว้ใช้ในอนาคต อ่านข้อมูลเพิ่มเติมได้ที่เว็บนี้ครับ: https://css-tricks.com/prefetching-preloading-prebrowsing/

  • แต่การต้องมานั่งลิสต์พวกไฟล์ต่างๆ ที่ต้องโหลดด้วยมือเป็นงานที่เหนื่อยมาก จึงมักเป็นหน้าที่ของ Framework ที่จะสร้างแท็ก <link> พวกนี้ให้

  • ตัวอย่างเช่น เว็บ React Bangkok 3.0.0 มีการใช้ Gatsby v2 ซึ่งสร้าง <link> แท็กพวกนี้ให้โดยอัตโนมัติ:

    <link rel="preload" href="/3.0.0/static/d/path---index-YgMVy2JJS5mcQ1JxiGrypWcq9U.json" as="fetch" crossOrigin="use-credentials"/>
    <link as="script" rel="preload" href="/3.0.0/component---src-pages-index-jsx-f968477afa4e80f9b9ee.js"/>
    <link as="script" rel="preload" href="/3.0.0/0-7f890f8c04b440c6714b.js"/>
    <link as="script" rel="preload" href="/3.0.0/app-62a4f1198438e5cb738b.js"/>
    <link as="script" rel="preload" href="/3.0.0/webpack-runtime-5d74fac95122c14ed750.js"/>
  • การทำเว็บให้โหลดเร็ว อีกท่านึงที่ใช้บ่อยคือการทำ Code splitting ด้วย “Dynamic import()” ทำให้ไม่ต้องโหลดโค้ดทั้งหมดทีเดียว โหลดเท่าที่ต้องใช้แสดงหน้าแรกก็พอ อ่านได้ที่ https://reactjs.org/docs/code-splitting.html

  • เราใช้เทคนิคนี้ในเว็บ React Bangkok 3.0.0 เมื่อคุณกดปุ่ม “Redeem ticket” ตัวเว็บจะโหลดไฟล์ที่จำเป็นสำหรับหน้า Redeem ticket แล้วค่อยแสดงผล แต่ถ้าหากคุณไม่กดปุ่มนี้เลย ก็ไม่จำเป็นต้องโหลดโค้ดนั้นแต่อย่างใด

  • แต่นั่นหมายความว่าเวลาคุณจะ Redeem ticket ก็ต้องรอสองครั้ง ครั้งแรกรอให้หน้าเว็บโหลด ครั้งที่สองคือรอให้โค้ดของหน้า Redeem ticket โหลด คงจะดีถ้าเราสามารถบอกเบราเซอร์ว่า “ถ้าว่างแล้วช่วยโหลดโค้ดของหน้า Redeem ticket เผื่อไว้ด้วย ยูสเซอร์อาจจะมากด” ซึ่งจริงๆ ก็ทำได้โดยการใส่ <link rel="prefetch">

  • Gatsby v2 ใช้ webpack 4 ซึ่งเวลาเราทำท่า Dynamic import() เราสามารถบอก webpack ได้ด้วย ว่าเราอยากจะ prefetch โค้ดไว้ล่วงหน้า เช่น

    function redeemTicket () {
      import(/* webpackPrefetch: true */ '../redeem')
        .then(redeemPage => showPage(redeemPage))
    }

    อ่านได้ที่ https://medium.com/webpack/link-rel-prefetch-preload-in-webpack-51a52358f84c

    โดยคอมเม้นต์​ /* webpackPrefetch: true */ จะเอา URL ของไฟล์ที่แยกออกไป expose ออกมาทาง build stats ซึ่งพวก static site generator สามารถอ่านข้อมูลนี้ เพื่อนำมาสร้าง <link rel="prefetch">

  • ปัญหาคือตอนนี้ Gatsby v2 ยังไม่อ่านข้่อมูลนี้ ผมจึงไปเปิด Issue ไว้ที่ Repo ของ Gatsby: gatsbyjs/gatsby#5683

Task

ส่ง Pull request เพื่อแก้ Issue gatsbyjs/gatsby#5683

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.