01: Introduksjon, JS, basic React
Bakgrunn
(plan på It's Learning, plan noe åpen for endring)
React, Node.js, …
(bilde fra 2013)
var greeting = 'Hello, world!';
alert(greeting);
console.log('greeting: ' + greeting);
var greetings = ['hello', 'hi'];
// "Hello", then "hi"
for (var i = 0; i < greetings.length; i++) {
alert(greetings[i]);
}// Named functions
var plus = function(a, b) {
return a + b;
}
plus(1, 2); // 3
plus('Hello, ', 'world!'); // 'Hello, world!'
// Or lambdas!
var plus = (a, b) => a + b;
plus(1, 2); // 3var sumFrom1ToLimit = function(limit, plusFunction) {
var sum = 0;
for (var i = 1; i <= limit; i++) {
sum = plusFunction(sum, i); // !
}
return sum;
}
// 1 + 2 + 3 + ... + 10
sumFrom1ToLimit(10, function(a, b) { return a + b; }); // 55
// Or lambdas!
var sumFrom1ToLimit = (limit, plusFunction) {
var sum = 0;
// sum up
return sum;
}
sumFrom1ToLimit(10, (a, b) => a + b); // 55http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons
http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons
// Java language object:
public class Language {
private String name;
public void setName(String name) { this.name = name; }
public void getName() { return name; }
}
// JSON representation:
{ "name": "..." }
// JSON list: [ ... ]
[ // start simple list of strings
"hello",
"world"
] // end list
// JSON list of objects: [ { ... }, { ... } ]
[ // start list of languages
{ "name": "JavaScript" }, // language object comma
{ "name": "Java" }, // language object comma
{ "name": "C#" } // language object
] // end list(JSON: dataoverføring)
var someLanguage = { "name": "Java" };
var languages = [
{ "name": "C#" },
someLanguage,
{ "name": "Haskell" }
];
console.log(languages);Fordeler?
Ulemper?
AJAX / AJAJ
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
We can do better: JSX?
Returneres fra en "render"-funksjon i JS-klassen:
Krever Babel (eller tilsvarende)—jeg ordner det nå
render() {
return (
<div>
<p>Hello</p>
</div>
);
}// ES2015 class syntax
class Greeting extends React.Component {
render() {
return (
// JSX
<p>Hello, {this.props.name}</p>
);
}
}
// NB: JSX
var greeting = <Greeting name="Martin" />;
// Add the element to the DOM
ReactDOM.render(
greeting,
document.getElementById('container')
);