- Architecture of client-side code
- Responsibilities
const React = require('react') | |
const ReactDomServer = require('react-dom/server') | |
const fetch = require('node-fetch') | |
function App(props) { | |
const { repos } = props | |
return React.createElement('p', { | |
children: repos.length ? repos[0].name : 'no name', | |
}) |
import { columns, display, gridSpans, margin } from './css-modules-styles' | |
const COLUMNS = 12 | |
const toArray = arrayLike => Array.prototype.slice.call(arrayLike) | |
const placeItemsOnGrid = grid => { | |
const withGutters = grid.classList.contains(columns.withGutters) | |
let currentColumnSpansInRow = 0 | |
let currentRow = 1 |
//@flow | |
import React, { Component } from 'react' | |
import type { ElementRef } from 'react' | |
type Props = { src: string, alt: string } | |
type State = { source?: string } | |
export default class LazyImage extends Component<Props, State> { | |
state = {} |
const { parse } = require('css') | |
const { readdirSync, readFileSync } = require('fs') | |
const { basename, extname, resolve } = require('path') | |
const camel = require('lodash.camelcase') | |
const baseNameForCSSFile = filename => basename(filename, '.css') | |
const isAClassSelector = selector => /^\./.test(selector) | |
const removeLeadingDotAndTrailingSelectors = selector => |
{ | |
"rules": { | |
"indent": [ | |
2, 2 | |
], | |
"quotes": [ | |
2, | |
"single" | |
], | |
"linebreak-style": [ |
#!/bin/sh | |
protectedBranch='master' | |
currentBranch=$(git rev-parse --abbrev-ref HEAD) | |
lastCommand=$(ps -ocommand= -p $PPID) | |
disallowedCommand='force|\-f' | |
if [[ $lastCommand =~ $disallowedCommand ]] && [ $currentBranch = $protectedBranch ]; then | |
echo "Force pushing to $protectedBranch is not allowed. Your push is rejected." |
{ | |
"disallowImplicitTypeConversion": ["numeric", "boolean", "binary", "string"], | |
"disallowKeywordsOnNewLine": ["else"], | |
"disallowMixedSpacesAndTabs": true, | |
"disallowTrailingWhitespace": true, | |
"disallowTrailingComma": true, | |
"disallowYodaConditions": true, | |
"disallowKeywords": [ "with" ], | |
"disallowMultipleLineBreaks": true, | |
"disallowMultipleVarDecl": "strict", |
Our work weeks are made up of victories both big and small. What really gets me writing is the small. The a-ha! moments. The high fives (internal ones count too). The green builds. The git pushes.
I spent my week creating dynamic forms and lists in Angular. I made them, fought with them, tested them, and came out the other side in one piece. Here's my story:
Custom form validators are a powerful feature in Angular.
My friends started using it, Stride clients started asking for it, and it's been getting serious buzz on the internet. So I realized it was time for me to learn React.
I've been an Angular guy for the past couple years, and I've gotten pretty good at it. I've seen its nooks and crannies, and I've grown fond of it.
But, like I said, it was hard to ignore React.
It's fast, it's light, it's new and shiny. So I dug in. I recently released an app, Farely, which I'd written in Angular. (Note: I didn't use directives like I should have.) I thought it'd be the perfect opportunity to try out React, since the app could be composed of components. It also wouldn't need anything React doesn't offer, like routing or complex data modeling.