docbrown/docs/frontend/plain-js.md
rhymes 9210f6793b Improvements on dev docs (#2616)
* Correct installation documentation

* Add stylized titles

* Add some changes to the getting started documentation

* Add changes for the backend guide

* Add changes for the design guide

* Add testing / Q&A guide improvements

* Minor fixes to contributing docs

* More improvements to the general doc

* Improvements for frontend guide
2019-04-29 18:54:29 -04:00

38 lines
1.3 KiB
Markdown

---
title: Javascript and Initializers
---
# Javascript and Initializers
DEV has two Javascript codebases.
One is located in the directory
`app/assets/javascripts` and contains plain Javascript (mostly ES5+) being served using [Sprockets](https://github.com/rails/sprockets-rails) which packages static assets.
The other one is managed by Webpacker and you can read more about [in its own guide](/frontend/webpacker).
This source code is not transpiled, only packaged and minified, and will be limited to whatever flavour of Javascript can run on user's web browser.
`app/assets/javascripts/application.js` contains the manifest Javascript file
which is included globally in the primary template, `app/views/layouts/application.html.erb`.
`application.js` automatically includes all JS files via the statement:
```erb
//= require_tree .
```
One JS file in particular, `app/assets/javascripts/initializePage.js.erb`, boostraps the majority of the functionality. You will notice, within this file, that major sections of the websites are bootstrapped, for example:
```javascript
initializeBaseTracking();
initializeTouchDevice();
initializeCommentsPage();
initEditorResize();
initLeaveEditorWarning();
initializeArticleReactions();
initNotifications();
initializeSplitTestTracking();
```
All the "initializers" are in `/app/assets/javascripts/initializers`.