Note: You are currently viewing documentation for Moodle 2.5. Up-to-date documentation for the latest stable version of Moodle may be available here: JavaScript usage guide.

Development:JavaScript usage guide

From MoodleDocs

Note: This article is a work in progress. Please use the page comments or an appropriate moodle.org forum for any recommendations/suggestions for improvement.


Template:Infobox Project Template:Moodle 2.0


Goals

  • standardise usage of Javascript code in Moodle
  • improve performance
  • improve and simplify JS related APIs

API overview

Types of JS code in 1.9:

  • JS scripts linked from page head
  • JS linked and executed from page head
  • inline Javascript
  • global JS variables


Overview of JavaScript usage in 2.0

  • all JS stored in one global M namespace
  • majority of JS logic moved into page footer
  • loading of javascript modules handled by YUI3 loader
  • all plugins support module.js files
  • most JS is initialised through $PAGE->requires->js_init_call()
  • full migration to YUI3, YUI2 modules are loaded on demand only

Sample usage of JavaScript in module

Description of M namespace

Performance improvements

Migration and code upgrade steps

Deprecated coding style

  1. do not add JavaScript code directly to the markup - instead create init function that adds all necessary event handlers and DOM modifications
  2. do not use general JS files - instead use new YUI3 modules stored in module.js files
  3. do not create global variables to pass data from PHP to JS code - instead use parameters of init functions
  4. do not add extra script links from PHP - instead use YUI3 loading of modules from JS code
  5. do not use YUI2 modules if equivalent YUI3 modules already exit
  6. instead of direct DOM modifications use YUI3 methods

Links