Upgrade to Pro — share decks privately, control downloads, hide ads and more …

browserify

 browserify

talles

June 14, 2017
Tweet

More Decks by talles

Other Decks in Programming

Transcript

  1. Concatenando tudo • Uma única tag <script>; • Logo uma

    única requisição HTTP; • Mas piora a detecção de erros (local do código fonte)*. * O browserify minimiza esse problema com a funcionalidade de source maps.
  2. require • É a maneira de carregar e acessar código

    definido em outros arquivos; • É dado um único objeto (ou valor); • Portanto, sabe-se dizer exatamente de onde veio; • #include, using, import, ...
  3. require using BibliotecaA; using BibliotecaB; using BibliotecaC; var foo =

    new Foo(); var bar = new Bar(foo); var a = require(‘biblioteca-a’) var b = require(‘biblioteca-b’) var c = require(‘biblioteca-c’) var foo = new a.Foo() var bar = new b.Bar(foo)
  4. require var foo = require(‘foo’) Procura o módulo nas seguintes

    pastas: • /a/b/node_modules/foo • /a/node_modules/foo • /node_modules/foo
  5. require var foo = require(‘foo’) A propriedade main do arquivo

    package.json da pasta foo decide qual arquivo será carregado.
  6. require { “name”: “foo”, “version”: “1.2.3”, “main”: “app/foo.js” } A

    propriedade main do arquivo package.json da pasta foo decide qual arquivo será carregado.
  7. module.exports • Cada arquivo .js é chamado de módulo; •

    Cada módulo possui seu próprio escopo (não é global).
  8. module.exports module.exports = { a: 5, b: function () {

    console.log(‘hello world’) } } Você pode exportar “qualquer coisa”.
  9. module.exports module.exports = { a: 5, b: function () {

    console.log(‘hello world’) } } module.exports é convenientemente um objeto em branco.
  10. module.exports module.exports.a = 5 module.exports.b = function () { console.log(‘hello

    world’) } module.exports é convenientemente um objeto em branco.
  11. module.exports module.exports.a = 5 module.exports.b = function () { console.log(‘hello

    world’) } Existe também uma variável exports (e não module.exports) para reduzir o código escrito.
  12. module.exports exports.a = 5 exports.b = function () { console.log(‘hello

    world’) } Existe também uma variável exports (e não module.exports) para reduzir o código escrito.
  13. module.exports exports.a = 5 exports.b = function () { console.log(‘hello

    world’) } Mas nem sempre utilizar exports ao invés de module.exports funciona!
  14. module.exports exports = function () { console.log(‘hello world’) } Mas

    nem sempre utilizar exports ao invés de module.exports funciona!
  15. module.exports exports = function () { console.log(‘hello world’) } Quando

    atribuímos um valor novo a variável exports (ao invés de criar uma propriedade nova no objeto) estamos alterando apenas a variável exports, e não o module.exports (que é o que será exportado).
  16. module.exports var module = { exports: { } } var

    exports = module.exports Quando atribuímos um valor novo a variável exports (ao invés de criar uma propriedade nova no objeto) estamos alterando apenas a variável exports, e não o module.exports (que é o que será exportado).
  17. browserify • Os browsers não possuem require, mas browserify permite

    escrever código utilizando require, similar à Node; • Ele navega por cada require de seu código fonte e, além de fazer o require funcionar, empacota tudo em único arquivo.
  18. Compatibilidade com módulos para Node Para deixar alguns dos módulos

    criados para Node compatível com o browser, o browserify oferece uma implementação alguns dos módulos padrões do Node. assert, buffer, console, constants, crypto, domain, events, http, https, os, path, punycode, querystring, stream, string_decoder, timers, tty, url, util, vm, zlib.
  19. watchify $ watchify main.js -o bundle.js Gera automaticamente o arquivo

    bundle.js quando o arquivo main.js é modificado.