https://goo.gl/gDgBc6
Como usuária, eu quero fornecer meu nome e ver a mensagem "Olá, <meu nome>!" na tela. Caso nenhum nome seja inserido, quero ver a mensagem "Olá, pessoa!".
Como usuária, eu quero fornecer meu nome e ver a mensagem "Olá, <meu nome>!" na tela. Caso nenhum nome seja inserido, quero ver a mensagem "Olá, pessoa!".
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Ecossistema JS</title>
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
<script type="text/javascript">
var name = prompt("Digite seu nome");
var nameElement = document.querySelector("span");
nameElement.innerHTML = name;
</script>
</body>
</html>
Mas não funcionou no IE :@
2007
Como usuária, eu quero fornecer meu nome e ver a mensagem "Olá, <meu nome>!" na tela. Caso nenhum nome seja inserido, quero ver a mensagem "Olá, pessoa!". Garantindo que funcione no IE.
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Ecossistema JS</title>
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
<script src="jquery-latest.pack.js" charset="utf-8"></script>
<script type="text/javascript">
var name = prompt("Digite seu nome");
$("span").html(name);
</script>
</body>
</html>
2010
2018 - https://www.npmjs.com/
2018 - https://docs.npmjs.com/getting-started/what-is-npm
2013
2018 - https://bower.io/
2016
2018 - https://yarnpkg.com/pt-BR/
Como usuária, eu quero fornecer meu nome e ver a mensagem "Olá, <meu nome>!" na tela. Caso nenhum nome seja inserido, quero ver a mensagem "Olá, pessoa!". Garantindo que funcione no IE.
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Ecossistema JS</title>
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
<script src="jquery-latest.pack.js" charset="utf-8"></script>
<script type="text/javascript">
var name = prompt("Digite seu nome");
$("span").html(name);
</script>
</body>
</html>
# no diretório do projeto
$ npm init -y
Wrote to /lab/ecossistema-js/package.json:
{
"name": "ecossistema-js",
"version": "1.0.0",
"description": "",
"main": "jquery-latest.pack.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
Usando npm para gerenciamento de dependências
$ npm install jquery --save
$ ls node_modules/
jquery
$ cat .gitignore
node_modules
$ git diff
diff --git a/package.json b/package.json
index aab9f1a..4b8c369 100644
--- a/package.json
+++ b/package.json
@@ -8,5 +8,8 @@
},
"keywords": [],
"author": "",
- "license": "ISC"
+ "license": "ISC",
+ "dependencies": {
+ "jquery": "^3.3.1"
+ }
}
diff --git a/index.html b/index.html
index c43a754..4e34999 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,7 @@
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
- <script src="jquery-latest.pack.js" charset="utf-8"></script>
+ <script src="node_modules/jquery/dist/jquery.min.js" charset="utf-8"></script>
<script type="text/javascript">
var name = prompt("Digite seu nome");
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Ecossistema JS</title>
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
<script src="node_modules/jquery/dist/jquery.min.js" charset="utf-8"></script>
<script type="text/javascript">
var name = prompt("Digite seu nome");
$("span").html(name);
</script>
</body>
</html>
Usando npm
2012
2018 - https://gruntjs.com/
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Ecossistema JS</title>
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
<script src="node_modules/jquery/dist/jquery.min.js" charset="utf-8"></script>
<script type="text/javascript">
var name = prompt("Digite seu nome");
$("span").html(name);
</script>
</body>
</html>
Usando Grunt para minificação
$ cat index.html
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Ecossistema JS</title>
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
<script src="node_modules/jquery/dist/jquery.min.js" charset="utf-8"></script>
<script src="index.js" charset="utf-8"></script>
</body>
</html>
Separando nosso JS em um arquivo
// index.js
var name = prompt("Digite seu nome");
$("span").html(name);
$ npm install -g grunt-cli
$ npm install grunt --save-dev
$ npm install grunt-contrib-uglify --save-dev
Usando Grunt para minificação
// Gruntfile.js
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
uglify: {
build: {
src: 'index.js',
dest: 'index.min.js'
}
}
});
// Load the plugin that provides the "uglify" task.
grunt.loadNpmTasks('grunt-contrib-uglify');
// Default task(s).
grunt.registerTask('default', ['uglify']);
};
$ grunt
Running "uglify:build" (uglify) task
>> 1 file created 61 B → 56 B
Usando Grunt para minificação
$ cat index.html
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Ecossistema JS</title>
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
<script src="node_modules/jquery/dist/jquery.min.js" charset="utf-8"></script>
<script src="index.min.js" charset="utf-8"></script>
</body>
</html>
// index.js
var name = prompt("Digite seu nome");
$("span").html(name);
// index.min.js
var name=prompt("Digite seu nome");$("span").html(name);
$ npm install grunt-contrib-concat --save-dev
Usando Grunt para concatenação
// Gruntfile.js
module.exports = function(grunt) {
...
concat: {
options: {
separator: ';',
},
dist: {
src: ['node_modules/jquery/dist/jquery.min.js', 'index.min.js'],
dest: 'built.js',
},
}
...
grunt.registerTask('default', ['uglify', 'concat']);
};
$ grunt
Running "uglify:build" (uglify) task
>> 1 file created 61 B → 56 B
Running "concat:dist" (concat) task
Done.
Usando Grunt para concatenação
$ cat index.html
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Ecossistema JS</title>
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
<script src="built.js" charset="utf-8"></script>
</body>
</html>
2013
2018 - https://webpack.js.org/guides/getting-started/
Dependência de uma lib externa não fica explícita
Ao esquecer uma dependência ou inserir na order errada quebra a app.
Código desnecessário pode ser baixado se uma dependência for incluída mas não usada.
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Ecossistema JS</title>
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
<script src="built.js" charset="utf-8"></script>
</body>
</html>
$ npm install webpack webpack-cli --save-dev
// index.js
var $ = require("jquery");
var name = prompt("Digite seu nome");
$("span").html(name);
$ ./node_modules/.bin/webpack index.js --output bundle.js
$ git diff index.html
diff --git a/index.html b/index.html
index 97df347..ca5bd42 100644
--- a/index.html
+++ b/index.html
@@ -6,6 +6,6 @@
</head>
<body>
<h1>Olá, <span>Pessoa</span>!</h1>
- <script src="built.js" charset="utf-8"></script>
+ <script src="bundle.js" charset="utf-8"></script>
</body>
</html>
$ rm Gruntfile.js
2015
2018 - https://babeljs.io/
// index.js
var $ = require("jquery");
var name = prompt("Digite seu nome");
$("span").html(name);
// index.js
import $ from "jquery";
import User from "./user.js";
const name = prompt("Digite seu nome");
let user = new User(name);
$("span").html(`${user.name}. Parabéns pelos seus ${user.age} de vida`);
Podemos ter uma classe para usuária
// user.js
export default class User {
constructor(name="Pessoa", age=63) {
this.name = name;
this.age = age;
}
}
$ npm install --save-dev babel-loader babel-core
$ cat webpack.config.js
const path = require('path');
module.exports = {
entry: './index.js',
output: {
path: path.resolve(__dirname),
filename: 'bundle.js'
},
module: {
rules: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
]
}
};
$ npm install babel-preset-env --save-dev
$ cat .babelrc
{
"presets": ["env"]
}
$ ./node_modules/.bin/webpack
Hash: a0e060bb2bd3cc089b1c
Version: webpack 4.12.0
Time: 2957ms
Built at: 06/09/2018 3:30:53 AM
Asset Size Chunks Chunk Names
bundle.js 86.6 KiB 0 [emitted] main
[0] ./user.js 538 bytes {0} [built]
[2] ./index.js 452 bytes {0} [built]
+ 1 hidden module
$ ./node_modules/.bin/webpack
$ cat package.json
...
"scripts": {
"build": "webpack",
"test": "echo \"Error: no test specified\" && exit 1"
},
...
$ npm run build
http://insideoutproject.xyz/mulheres-palestrantes/