React библиотеки

Занятие 6

Профессия
Node.js & React.js developer
продвинутый курс

1

Библиотеки

1

Icons

images

sprites

icon fonts

svg

+ react

1

react-icons

для чего они нужны?

1. Библиотека с иконками

2. Инструменты сборки иконок

3. В Prod грузятся только используемые иконки

1

react-icons

какие вообще есть иконки

1

UI Frameworks

для чего они нужны?

1

Bootstrap

1

Bootstrap

1

React UI Frameworks

1

Ant Design

  1. China vendor
  2. 11800 stars, 2300 forks
  3. Продуманный API
  4. TypeScript
  5. IE9, SSR, Eelctron
  6. ant-design-mobile: React Native
  7. babel-plugin-import

 

 

1

Ant Design

1

Reactstrap

  1. 1200 stars, 123 forks
  2. Хороший HOC API
  3. Bootstrap 4
  4. Испытывает баги с подключенным BS3

1

react-bootstrap

  1. 9200 stars, 1550 forks
  2. Хорошая внутренняя структура компонентов
  3. Bootstrap 3 (108k/50k)
  4. Стабильный*

1

react-bootstrap

как пользоваться

Вставляем код, не забываем сделать import

1

react-bootstrap

лайфхак для Cards

Bootstrap 4 card component, back-ported for Bootstrap 3, SASS

github.com/martinbean/bootstrap-3-card

npmjs.com/package/bootstrap-3-card

 

Reactstrap Card components

github.com/isuvorov/react-bootstrap-card

import { wrap } from 'react-bootstrap-card';
wrap(require('react-bootstrap'));


////

import {
  Grid,
  Row,
  Col,
  Button,
  Card,
  CardBlock,
  CardFooter,
} from 'react-bootstrap';

1

Clipboard

react-copy-to-clipboard

1

Media Queries

react-responsive

<!-- >= IE6 * -->
<MediaQuery query='(min-device-width: 1224px)'>
  <div>You are a desktop or laptop</div>
  <MediaQuery query='(min-device-width: 1824px)'>
    <div>You also have a huge screen</div>
  </MediaQuery>
  <MediaQuery query='(max-width: 1224px)'>
    <div>You are sized like a tablet or mobile phone though</div>
  </MediaQuery>
</MediaQuery>	

1

Google Maps

react-google-maps

// Under development for v6.0.0

<GoogleMap
    ref={props.onMapLoad}
    defaultZoom={3}
    defaultCenter={{ lat: -25.363882, lng: 131.044922 }}
    onClick={props.onMapClick}
 >	
	{props.markers.map((marker, index) => (
	  <Marker
	    {...marker}
	    onRightClick={() => props.onMarkerRightClick(index)}
	  />
	))}
</GoogleMap>

1

react-bootstrap-table

1

react-select

1

react-slick

 var settings = {
  dots: true,
  infinite: true,
  speed: 500,
  slidesToShow: 1,
  slidesToScroll: 1
};
return (
  <Slider {...settings}>
    <div><h3>1</h3></div>
    <div><h3>2</h3></div>
    <div><h3>3</h3></div>
    <div><h3>4</h3></div>
    <div><h3>5</h3></div>
    <div><h3>6</h3></div>
  </Slider>
);

1

react-stars

<ReactStars
  count={5},
  onChange={ratingChanged},
  size={24},
  color2={'#ffd700'} />

1

react-textarea-autosize

1

react-images

 <Lightbox
    images={[{ src: 'http://example.com/img1.jpg' }, { src: 'http://example.com/img2.jpg' }]}
    isOpen={this.state.lightboxIsOpen}
    onClickPrev={this.gotoPrevious}
    onClickNext={this.gotoNext}
    onClose={this.closeLightbox}
  />

1

visibility

<VisibilitySensor onChange={onChange} />


<TrackVisibility>
    <ComponentToTrack />
</TrackVisibility>

1

Image fallback

<Img
	src="my-image.png"
	fallbackImage="my-backup.png"
	initialImage="loader.gif"
	alt="cool image should be here"
	className="my-image" />

1

Cookies

react-cookie

GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: theme=light; sessionToken=abc123

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: theme=light
Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT

export default class MyApp {

  onLogin(userId) {
    cookie.save('userId', userId, { path: '/' });
  }

  onLogout() {
    cookie.remove('userId', { path: '/' });
  }
}

1

react-codemirror

1

react-toaster

1

А также

2

Своя библиотека

2

Публикация

  1. npm init
  2. writing code
  3. create account in npmjs.com
  4. npm login
  5. npm publish

 

2

Semantic versioning

semver

2

Semantic versioning

semver

2

Semantic versioning

semver

2

Semantic versioning

semver

2

Структура библиотеки

 

2

Package.json

2

Package.json

2

Package.json

#npm run build

rm -rf dist && 
mkdir dist && 
cp {package.json,yarn.lock,README.md} dist/ && 
babel src --out-dir dist --source-maps inline --copy-files

2

NPM LINK

cd lsk-example2
yarn install
yarn run dev



yarn link lsk-general

# hot reload



yarn add lsk-general@1.2.3



cd lsk-general
yarn link
yarn run dev

# fix bug + save
# hot reload

# package.json version++ (1.2.3)
yarn run release

2

Babel-starter-kit

for libs

3

Про практику

3

  1. Список всех задач в Trello
  2. Выполняйте задачи к дедлайнам
    1. Я буду проверять задачи после дедлайна
    2. На ваших примерах буду делать CodeReview
    3. Возможно даже раньше - чем раньше, тем выше шанс
  3. Если возникают вопросы по задаче
    1. Напишите в телеграм чат
    2. Напишите в трелло
    3. Напишите мне
    4. Если не можете решить задачу и не можете сформулировать вопрос - пишите "Непонятно" в Трелло
  4. Индивидуальные задачи будут пополняться

Про практику

3

  1. Делимся на 4+ команды
    1. Выбираем лидеров (1,2,3)
    2. Выбираем время еженедельного созвона
    3. Решаем Задачу 0.
    4. Ожидаем командные задачи **
  2. Внутри команды 
    1. Понять сильные и слабые стороны
    2. Я - волшебная сила (не вмешиваюсь, но напрвляю)
    3. Сигнализировать мне о проблемах и успехах

Про практику

Игорь Суворов

Thanks!

any questions?

программист-предприниматель

Made with Slides.com