Разница между звездочками //=require и browserify-rails require()?

Со звездочками:

//= require 

... в application.js, кажется, добавляет тег <script src=...> в заголовок моего HTML. Однако с browserify-rails:

window.mymodule = require('mymodule'); // mymodule is a dependency in package.json 

Я не вижу тега <script> для mymodule. Однако я могу использовать код, определенный внутри mymodule. Что здесь делает браузер?


person iftheshoefritz    schedule 29.10.2015    source источник


Ответы (1)


Короче говоря, Browserify заключает каждый модуль в функцию, предоставляя модулю собственную область видимости. Это сохранит то, что вы не экспортируете, в модуль. Каждая из этих функций хранится на карте, чтобы их можно было найти позже require.

Это довольно хорошая статья, объясняющая на высоком уровне, как все это работает: http://benclinkinbeard.com/posts/how-browserify-works/

Sprockets просто включает все в манифесте в глобальную область. В разработку включен каждый файл скрипта. В продакшене все сценарии объединены и минимизированы, но все они глобальны.

person Todd    schedule 29.10.2015