Page MenuHomePhabricator

MobileFrontend should use ES5 and discourage jQuery usage
Closed, ResolvedPublic

Description

Having global jQuery available is leading to patterns in our code that we'd like to avoid.

  • Use Function##bind instead of $.proxy
  • Use indexOf instead of inArray
  • Only allow $.ajax and $.Deferred() usage from inside Gateway classes
  • Encourage usage of View.prototype.$ instead of $ to avoid $ usage inside classes and side effects (T173539)
  • Views that interact with $( 'html,body' ) should be passed a $container parameter (option).
  • Use Object.assign (with polyfill) instead of $.extend
  • We will enforce this by removing jQuery from the default eslint config. Exceptions will need to temporarily enable the global and justify why in commit messages going forward

Event Timeline

Change 373364 had a related patch set uploaded (by Jdlrobson; owner: Jdlrobson):
[mediawiki/extensions/MobileFrontend@master] Hygiene: Drop usages of inArray

https://gerrit.wikimedia.org/r/373364

Change 373372 had a related patch set uploaded (by Jdlrobson; owner: Jdlrobson):
[mediawiki/extensions/MobileFrontend@master] Avoid global access of elements outside Views

https://gerrit.wikimedia.org/r/373372

Change 373364 merged by jenkins-bot:
[mediawiki/extensions/MobileFrontend@master] Hygiene: Drop usages of inArray

https://gerrit.wikimedia.org/r/373364

Change 373962 had a related patch set uploaded (by Jdlrobson; owner: Jdlrobson):
[mediawiki/extensions/MobileFrontend@master] Use Function.bind in favor of $.proxy

https://gerrit.wikimedia.org/r/373962

Change 373372 merged by jenkins-bot:
[mediawiki/extensions/MobileFrontend@master] Avoid global access of elements outside Views

https://gerrit.wikimedia.org/r/373372

Change 373962 merged by jenkins-bot:
[mediawiki/extensions/MobileFrontend@master] Use Function.bind in favor of $.proxy inside components

https://gerrit.wikimedia.org/r/373962

Jdlrobson claimed this task.
Jdlrobson updated the task description. (Show Details)